Pagseguro API wrapper that actually works!
The main problem that I want to resolve with this package is that PagSeguro API packages are confusing and bad documented, so I've created this to include every payment method I need to use.
Feel free to contribute :)
yarn add pagseguro-that-works
This feature will make this flow:
The basic flow is accomplished when these features are englobed:
Description | Developed | Tested |
---|---|---|
Plan creation | Yes | Yes |
Log in to join a plan | Yes | Yes |
Plan adherence | Yes | Yes |
Billing plan | Yes | Yes |
Retry payment | Yes | Yes |
The fully flow is accomplished when these features are englobed:
Description | Developed | Tested |
---|---|---|
Plan creation | Yes | Yes |
Log in to join a plan | Yes | Yes |
Plan adherence | Yes | Yes |
Billing plan | Yes | Yes |
Suspend plan | No | No |
Reactivate plan | No | No |
Edit plan | No | No |
Include coupon to payment | No | No |
Change payment method | No | No |
Retry payment | Yes | Yes |
You need to create a request object based on type
CreatePlanRequest
, and pass with your Pagseguro Email, Pagseguro Token and NODE_ENV (development or production)
const finalDate = new Date();
finalDate.setMonth(finalDate.getMonth() + 1);
const request: CreatePlanRequest = {
reference: 'SOME REFERENCE',
preApproval: {
name: 'PLAN NAME',
charge: 'MANUAL',
period: 'MONTHLY',
amountPerPayment: 200.0,
membershipFee: 15000.0,
trialPeriodDuration: 28,
finalDate,
},
maxUses: 500,
};
const createPlanResponse = await createPlan(pagseguroEmail, pagseguroToken, nodeEnv, request);
const [planId] = createPlanResponse.preApprovalRequest.code;
You need to pass your Pagseguro Email, Pagseguro Token and NODE_ENV (development or production)
const sessionResponse = await getSession(pagseguroEmail, pagseguroToken, nodeEnv);
const sessionId = sessionResponse.session.id;
You need to apss your Pagseguro Email, Pagseguro Token, NODE_ENV (development or production) and a request based on type
AdherePlanRequest
const request: AdherePlanRequest = {
plan: 'PLAN ID, e.g. 659AB301DFDFE684448C1FB8B86F28F8',
reference: 'SOME REFERENCE',
paymentMethod: {
type: 'CREDITCARD',
creditCard: {
token: 'CARD TOKEN GENERATED ON BROWSER',
holder: {
name: 'Nome Comprador',
birthDate: '11/01/1984',
documents: [
{
type: 'CPF',
value: '00000000191',
},
],
billingAddress: {
street: 'Av. Brigadeiro Faria Lima',
number: '1384',
complement: '3 andar',
district: 'Jd. Paulistano',
city: 'São Paulo',
state: 'SP',
country: 'BRA',
postalCode: '01452002',
},
phone: {
areaCode: '11',
number: '988881234',
},
},
},
},
sender: {
email: '[email protected]',
name: 'Sender Name',
hash: 'SENDERHASH GENERATED ON BROWSER',
address: {
street: 'Av. Brigadeira Faria Lima',
number: '1384',
complement: '3 andar',
district: 'Jd. Paulistano',
city: 'São Paulo',
state: 'SP',
country: 'BRA',
postalCode: '01452002',
},
documents: [
{
type: 'CPF',
value: '00000000191',
},
],
phone: {
areaCode: '11',
number: '988881234',
},
},
};
const adherePlanResponse = await adherePlan(pagseguroEmail, pagseguroToken, nodeEnv, request);
const preApprovalCode = adherePlanResponse.code;
You need to pass your Pagseguro Email, Pagseguro Token, NODE_ENV (development or production), a request based on type
BillingPlanRequest
, the preApprovalCode (result from plan adherence))
PS: You can only bill a plan that
charge
is MANUAL
const request: BillingPlanRequest = {
preApprovalCode: preApprovalCode as string,
items: [{ id: '0001', description: 'teste1', amount: '200.00', quantity: '1' }],
};
const billingPlanResponse = await billingPlan(email as string, token as string, 'development', request);
You need to pass your Pagseguro Email, Pagseguro Token, NODE_ENV (development or production), a request based on type
RetryPaymentRequest
, the preApprovalCode (result from plan adherence) and the paymentOrderCode (you can see how to get this here)
PS: You can only bill a plan that
charge
is AUTO
const request: RetryPaymentRequest = {
type: 'CREDITCARD',
sender: {
hash: 'SENDERHASH GENERATED ON BROWSER',
},
creditCard: {
token: 'CARD TOKEN GENERATED ON BROWSER',
holder: {
name: 'Nome Comprador',
birthDate: '11/01/1984',
documents: [
{
type: 'CPF',
value: '00000000191',
},
],
billingAddress: {
street: 'Av. Brigadeiro Faria Lima',
number: '1384',
complement: '3 andar',
district: 'Jd. Paulistano',
city: 'São Paulo',
state: 'SP',
country: 'BRA',
postalCode: '01452002',
},
phone: {
areaCode: '11',
number: '988881234',
},
},
},
};
const retryPaymentResponse = await retryPayment(pagseguroEmail, pagseguroToken, nodeEnv, request, preApprovalCode, paymentOrderCode);
const { transactionCode } = retryPaymentResponse;
PS: You need to create a project running with PagSeguroDirectPayment at port 3000. If you want to clone something already developed, clone this repo: pagseguro-hash-generator
PS2: Create a .env based on .env.example
yarn test
👤 Eduardo Santos Brito
- Website: https://portfolio.brito.top
- Github: @EduSantosBrito
Contributions, issues and feature requests are welcome!
Feel free to check issues page.
Give a ⭐️ if this project helped you!
Copyright © 2021 Eduardo Santos Brito.
This project is MIT licensed.
This README was generated with ❤️ by readme-md-generator