I'm Binni Cordova, a Great Programmer
MERCADOPAGO by BinniCordova
I'm currently using this package on my e-commerce and marketplace apps to process payments with cards.
Contributions
Just call me to develop your project 💪🧑💻 and send me some money 💰💵💲 to support this report and update it.
ALSO, buy me fives coffees ☕️ 👀 to my 🧠🎸
Issues
Please file any issues, bugs, or feature requests in this repository.
Features
-
*
Create customer -
*
Search customer -
-
*
list cards -
*
tokenize cards -
*
save cards -
*
delete cards -
*
pay order -
*
pay plan -
*
list plans -
*
subscribe to plan
Getting started
EASY AND SIMPLE!
Usage
Pay Order
I wrote a nice UNIT TEST to simulate an order payment, you can read it on test/checkout_test.dart
CheckoutProvider paidMarketProvider = CheckoutProvider(
authorization: auth,
);
UserModel user = const UserModel(
firstName: 'Raul',
lastName: 'Romero Diaz',
document: '34127856',
email: 'bin@gmail.com',
idCountriesCodes: 'PE',
phoneCode: "+51",
phoneNumber: '987654321',
idCountriesDocumentsTypes: 'DNI',
);
String orderUID = 'order-321';
double orderAmount = 100.00;
// SEARCH CUSTOMER
CustomerModel? customerModel =
await paidMarketProvider.customerSearch(userModel: user);
expect(customerModel?.id, isNot(equals(null)));
// CARD
Card card = Card(
id: null, // if this is defined so is a saved card
save: false,
installments: 1,
customerId: customerModel!.id,
cardNumber: '5031755734530604',
cardholder: Cardholder(
name: '${user.firstName} ${user.lastName}',
identification: Identification(
number: user.document,
type: user.idCountriesDocumentsTypes,
),
),
expirationYear: 2025,
expirationMonth: 11,
cvv: '123',
);
Map? response = await paidMarketProvider.customerCardTokenCreate(
dataCard: card,
email: user.email,
);
Card tokenizedCard = response!['data'] as Card;
expect(tokenizedCard.id, isNot(equals(null)));
// PAY ORDER
final PaymentResponseModel? paymentResponseModel =
await paidMarketProvider.payOrder(
dataCard: tokenizedCard,
userModel: user,
orderNumber: orderUID,
amount: orderAmount,
);
if (paymentResponseModel?.statusDetail ==
PaidMarketStatusTypeEnum.Accredited.value) {
expect(paymentResponseModel?.statusDetail,
equals(PaidMarketStatusTypeEnum.Accredited.value));
} else if (paymentResponseModel?.statusDetail ==
PaidMarketStatusTypeEnum.PendingContingency.value ||
paymentResponseModel?.statusDetail ==
PaidMarketStatusTypeEnum.PendingReviewManual.value) {
expect(
paymentResponseModel?.statusDetail,
equals(PaidMarketStatusTypeEnum.PendingContingency.value),
);
} else {
expect(
paymentResponseModel?.statusDetail,
isNot(equals(PaidMarketStatusTypeEnum.Accredited.value)),
);
expect(
paymentResponseModel?.statusDetail,
isNot(equals(PaidMarketStatusTypeEnum.PendingContingency.value)),
);
expect(
paymentResponseModel?.statusDetail,
isNot(equals(PaidMarketStatusTypeEnum.PendingReviewManual.value)),
);
}
// DELETE CARD (only if necesary)
if (tokenizedCard.save == false) {
paidMarketProvider.customerCardDelete(dataCard: tokenizedCard);
}
Subscription
I wrote a nice UNIT TEST to simulate a subscription, you can read it on test/subscription_test.dart
SubscriptionProvider subscriptions =
SubscriptionProvider(authorization: auth);
CheckoutProvider paidMarketProvider = CheckoutProvider(
authorization: auth,
);
UserModel user = const UserModel(
firstName: 'Raul',
lastName: 'Romero Diaz',
document: '34127856',
email: 'bin@gmail.com',
idCountriesCodes: 'PE',
phoneCode: "+51",
phoneNumber: '987654321',
idCountriesDocumentsTypes: 'DNI',
);
// SEARCH CUSTOMER
CustomerModel? customerModel =
await paidMarketProvider.customerSearch(userModel: user);
expect(customerModel?.id, isNot(equals(null)));
// CARD
Card card = Card(
id: null, // if this is defined so is a saved card
customerId: customerModel!.id,
cardNumber: '5031755734530604',
cardholder: Cardholder(
name: '${user.firstName} ${user.lastName}',
identification: Identification(
number: user.document,
type: user.idCountriesDocumentsTypes,
),
),
expirationYear: 2025,
expirationMonth: 11,
cvv: '123',
);
Map? response = await paidMarketProvider.customerCardTokenCreate(
dataCard: card,
email: user.email,
);
print(response);
Card tokenizedCard = response!['data'] as Card;
// PLAN
String? planId =
await subscriptions.createPlan(reason: 'gold_suscription', amount: 100);
// SUSCRIPTION
String? userSuscriptionId = await subscriptions.createSubscription(
reason: 'gold_suscription_service',
planId: planId!,
externalReference: 'uid',
userModel: user,
card: tokenizedCard,
);
expect(userSuscriptionId, isNot(equals(null)));
Copyright
Copyright (c) 2023 Binni Cordova See LICENSE for details