Repository for PayPal's Node SDK and Node samples for REST API. For a full working app and documentation, have a look at the PayPal Node SDK Page.
-
Register for a developer account and get your client_id and secret at PayPal Developer Portal.
-
Add dependency paypal-node-sdk
in your package.json file.
-
Require paypal-node-sdk
in your file
var paypal = require('paypal-node-sdk');
-
Create config options, with parameters (mode, client_id, secret).
paypal.configure({
'mode': 'sandbox',
'client_id': 'EBWKjlELKMYqRNQ6sYvFo64FtaRLRR5BdHEESmha49TM',
'client_secret': 'EO422dn3gQLgDbuwqTjzrFgFtaRLRR5BdHEESmha49TM'
});
-
For multiple configuration support, have a look at the sample
-
Invoke the rest api (eg: create a PayPal payment) with required parameters (eg: data, config_options).
var newPayment = {
"intent": "sale",
"payer": {
"payment_method": "paypal"
},
"redirect_urls": {
"return_url": "http://return.url",
"cancel_url": "http://cancel.url"
},
"transactions": [{
"item_list": {
"items": [{
"name": "item",
"sku": "item",
"price": "1.00",
"currency": "USD",
"quantity": 1
}]
},
"amount": {
"currency": "USD",
"total": "1.00"
},
"description": "This is the payment description."
}]
};
var payment = await paypal.payment.create(newPayment);
-
For creating Subscription Payments, check out the samples for creating planned sets of future recurring payments at periodic intervals.
-
To create Future Payments, check out this sample for executing future payments for a customer who has granted consent on a mobile device.
-
For exploring additional payment capabilites, such as handling discounts, insurance, soft_descriptor and invoice_number, have a look at this example. These bring REST payment functionality closer to parity with older Merchant APIs.
-
Customizing a PayPal payment experience is available as of version 1.1.0 enabling merchants to provide a customized experience to consumers from the merchant’s website to the PayPal payment. Get started with the supported rest methods and samples.
-
For creating and managing Orders, i.e. getting consent from buyer for a purchase but only placing the funds on hold when the merchant is ready to fulfill the order, have a look at samples.
-
For creating batch and single payouts, check out the samples for payouts and payout items. The Payouts feature enables you to make PayPal payments to multiple PayPal accounts in a single API call.
-
For Invoicing, check out the samples to see how you can use the node sdk to create, send and manage invoices.
-
To receive notifications from PayPal about Payment events on your server, webhook support is now available as of version 1.2.0. For creating and managing Webhook and Webhook Events, check out the samples to see how you can use the node sdk to manage webhooks, webhook events and verify that the response unaltered and is really from PayPal. Please follow the Webhook Validation sample to understand how to verify the authenticity of webhook messages. It is also important to note that simulated messages generated using the Webhook simulator would not be compatible with the verification process since they are only mock data.
-
To use OpenID Connect
paypal.configure({
'openid_client_id': 'CLIENT_ID',
'openid_client_secret': 'CLIENT_SECRET',
'openid_redirect_uri': 'http://example.com' });
paypal.openIdConnect.authorizeUrl({'scope': 'openid profile'});
paypal.openIdConnect.tokeninfo.create("Replace with authorize code", (error, tokeninfo) => {
console.log(tokeninfo);
});
paypal.openIdConnect.tokeninfo.refresh("Replace with refresh_token", (error, tokeninfo) => {
console.log(tokeninfo);
});
paypal.openIdConnect.userinfo.get("Replace with access_code", (error, userinfo) => {
console.log(userinfo);
});
paypal.openIdConnect.logoutUrl("Replace with tokeninfo.id_token");