Skip to content

Latest commit

 

History

History
219 lines (184 loc) · 5.71 KB

README.md

File metadata and controls

219 lines (184 loc) · 5.71 KB

Adaptive Payments and Adaptive Accounts SDK

Node.js sdk for Paypal Adaptive Payments and Paypal Adaptive Accounts APIs, without dependencies

Usage

  • Add dependency 'paypal-adaptive' in your package.json file.
  • Require 'paypal-adaptive' in your file.
    var Paypal = require('paypal-adaptive');
    
    var paypalSdk = new Paypal({
        userId:    'userId',
        password:  'password',
        signature: 'signature',
        sandbox:   true //defaults to false
    });
  • Call to sdk methods or to the generic method callApi. If you get an error, you can check the response too for better error handling.
    var requestData = {
        requestEnvelope: {
            errorLanguage:  'en_US',
            detailLevel:    'ReturnAll'
        },
        payKey: 'AP-1234567890'
    };
    
    paypalSdk.callApi('AdaptivePayments/PaymentDetails', requestData, function (err, response) {
        if (err) {
            // You can see the error
            console.log(err);
            //And the original Paypal API response too
            console.log(response);
        } else {
            // Successful response
            console.log(response);
        }
    });

API

GetPaymentOptions

var payKey = 'AP-1234567890';

paypalSdk.getPaymentOptions(payKey, function (err, response) {
    if (err) {
        console.log(err);
    } else {
        // payments options for this payKey
        console.log(response);
    }
});

PaymentDetails

// One of this params is required
// The payKey
var params = {
    payKey: 'AP-1234567890'
};
// Or the transactionId
var params = {
    transactionId: 'AP-1234567890'
};
// Or the trackingId
var params = {
    trackingId: 'AP-1234567890'
};

paypalSdk.paymentDetails(params, function (err, response) {
    if (err) {
        console.log(err);
    } else {
        // payments details for this payKey, transactionId or trackingId
        console.log(response);
    }
});

Pay

var payload = {
    requestEnvelope: {
        errorLanguage:  'en_US'
    },
    actionType:     'PAY',
    currencyCode:   'USD',
    feesPayer:      'EACHRECEIVER',
    memo:           'Chained payment example',
    cancelUrl:      'http://test.com/cancel',
    returnUrl:      'http://test.com/success',
    receiverList: {
        receiver: [
            {
                email:  '[email protected]',
                amount: '100.00',
                primary:'true'
            },
            {
                email:  '[email protected]',
                amount: '10.00',
                primary:'false'
            }
        ]
    }
};

paypalSdk.pay(payload, function (err, response) {
    if (err) {
        console.log(err);
    } else {
        // Response will have the original Paypal API response
        console.log(response);
        // But also a paymentApprovalUrl, so you can redirect the sender to checkout easily
        console.log('Redirect to %s', response.paymentApprovalUrl);
    }
});

Preapproval

var payload = {
    currencyCode:                   'USD',
    startingDate:                   new Date().toISOString(),
    endingDate:                     new Date('2020-01-01').toISOString(),
    returnUrl:                      'http://your-website.com',
    cancelUrl:                      'http://your-website.com',
    ipnNotificationUrl:             'http://your-ipn-listener.com',
    maxNumberOfPayments:            1,
    displayMaxTotalAmount:          true,
    maxTotalAmountOfAllPayments:    '100.00',
    requestEnvelope: {
        errorLanguage:  'en_US'
    }
}

paypalSdk.preapproval(payload, function (err, response) {
    if (err) {
        console.log(err);
    } else {
        // Response will have the original Paypal API response
        console.log(response);
        // But also a preapprovalUrl, so you can redirect the sender to approve the payment easily
        console.log('Redirect to %s', response.preapprovalUrl);
    }
});

Note: The other API methods has default behavior by now: you send a payload and obtains the Paypal original response.

var payload = {
    requestEnvelope: {
        errorLanguage:  'en_US'
    },
    // another data required by API method
};

var callback = function (err, response) {
    if (err) {
        // Handle error
        console.log(err);
    } else {
        // Paypal response
        console.log(response)
    }
};

// For Adaptive Payments
paypalSdk.cancelPreapproval(payload, callback);

paypalSdk.convertCurrency(payload, callback);

paypalSdk.executePayment(payload, callback);

paypalSdk.getFundingPlans(payload, callback);

paypalSdk.getShippingAddresses(payload, callback);

paypalSdk.preapprovalDetails(payload, callback);

paypalSdk.setPaymentOptions(payload, callback);

// For Adaptive Accounts
paypalSdk.addBankAccount(payload, callback);

paypalSdk.addPaymentCard(payload, callback);

paypalSdk.checkComplianceStatus(payload, callback);

paypalSdk.createAccount(payload, callback);
// To use this method you can set X-PAYPAL-SANDBOX-EMAIL-ADDRESS and X-PAYPAL-DEVICE-IPADDRESS headers passing 'sandboxEmailAddress' and 'deviceIpAddress' properties on config

paypalSdk.getUserAgreement(payload, callback);

paypalSdk.getVerifiedStatus(payload, callback);

paypalSdk.setFundingSourceConfirmed(payload, callback);

paypalSdk.updateComplianceStatus(payload, callback);

Tests

Tests can be ran with:

mocha

Reference

Paypal Adaptive Payments Paypal Adaptive Accounts

License

Copyright (c) 2014 Gonzalo Aguirre. See the LICENSE file for license rights and limitations (MIT).