0.6.7 • Published 3 years ago

pagseguro-that-works v0.6.7

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

Pagseguro API wrapper that actually works!

Homepage

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

Recurring Payment Flow

This feature will make this flow:

The basic flow is accomplished when these features are englobed:

DescriptionDevelopedTested
Plan creationYesYes
Log in to join a planYesYes
Plan adherenceYesYes
Billing planYesYes
Retry paymentYesYes

The fully flow is accomplished when these features are englobed:

DescriptionDevelopedTested
Plan creationYesYes
Log in to join a planYesYes
Plan adherenceYesYes
Billing planYesYes
Suspend planNoNo
Reactivate planNoNo
Edit planNoNo
Include coupon to paymentNoNo
Change payment methodNoNo
Retry paymentYesYes

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

0.6.7

3 years ago

0.6.6

3 years ago

0.6.5

3 years ago

0.6.4

3 years ago

0.6.3

3 years ago

0.6.2

3 years ago

0.6.1

3 years ago

0.6.0

3 years ago

0.5.0

3 years ago

0.3.0

3 years ago

0.1.2

3 years ago

0.2.0

3 years ago

0.1.1

3 years ago

0.4.0

3 years ago

0.1.3

3 years ago

0.1.0

3 years ago