Skip to content

EduSantosBrito/pagseguro-that-works

Repository files navigation

Welcome to pagseguro-that-works 👋

Version Documentation Maintenance License: MIT

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 :)

Install

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

Recurring Payment Usage

Plan Creation

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;

Log in to join a plan

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;

Plan adherence

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: 'test@sandbox.pagseguro.com.br',
        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;

Billing plan

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);

Retry payment

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;

Test

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

Author

👤 Eduardo Santos Brito

🤝 Contributing

Contributions, issues and feature requests are welcome!
Feel free to check issues page.

Show your support

Give a ⭐️ if this project helped you!

📝 License

Copyright © 2021 Eduardo Santos Brito.
This project is MIT licensed.


This README was generated with ❤️ by readme-md-generator

About

Pagseguro API wrapper that actually works!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published