Product
Introducing License Enforcement in Socket
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
@hyperse-io/paypal-node-sdk
Advanced tools
Welcome to PayPal NodeJS SDK. This repository contains PayPal's NodeJS SDK and samples for v2/checkout/orders and v2/payments APIs.
This is a part of the next major PayPal SDK. It includes a simplified interface to only provide simple model objects and blueprints for HTTP calls. This repo currently contains functionality for PayPal Checkout APIs which includes Orders V2 and Payments V2.
Please refer to the PayPal Checkout Integration Guide for more information.
It is not mandatory to fork this repository for using the PayPal SDK. You can refer PayPal Checkout Server SDK for configuring and working with SDK without forking this code.
For contirbuting or referrring the samples, You can fork/refer this repository.
import { core, orders, payments } from "@hyperse-io/paypal-node-sdk";
// Creating an environment
let clientId = "<<PAYPAL-CLIENT-ID>>";
let clientSecret = "<<PAYPAL-CLIENT-SECRET>>";
// This sample uses SandboxEnvironment. In production, use LiveEnvironment
let environment = new core.SandboxEnvironment(clientId, clientSecret);
let client = new core.PayPalHttpClient(environment);
// Construct a request object and set desired parameters
// Here, OrdersCreateRequest() creates a POST request to /v2/checkout/orders
let request = new orders.OrdersCreateRequest();
request.requestBody({
"intent": "CAPTURE",
"purchase_units": [
{
"amount": {
"currency_code": "USD",
"value": "100.00",
},
},
],
});
// Call API with your client and get a response for your call
let createOrder = async function () {
let response = await client.execute(request);
console.log(`Response: ${JSON.stringify(response)}`);
// If call returns body in response, you can get the deserialized version from the result attribute of the response.
console.log(`Order: ${JSON.stringify(response.result)}`);
};
createOrder();
{
"id": "4VW45368HJ294683Y",
"links": [
{
"href": "https://api.sandbox.paypal.com/v2/checkout/orders/4VW45368HJ294683Y",
"method": "GET",
"rel": "self"
},
{
"href": "https://www.sandbox.paypal.com/checkoutnow?token=4VW45368HJ294683Y",
"method": "GET",
"rel": "approve"
},
{
"href": "https://api.sandbox.paypal.com/v2/checkout/orders/4VW45368HJ294683Y",
"method": "PATCH",
"rel": "update"
},
{
"href": "https://api.sandbox.paypal.com/v2/checkout/orders/4VW45368HJ294683Y/capture",
"method": "POST",
"rel": "capture"
}
],
"status": "CREATED"
}
Before Capturing an order, it should be approved by the buyer using approve link in the create order response.
let captureOrder = async function (orderId) {
request = new orders.OrdersCaptureRequest(orderId);
request.requestBody({});
// Call API with your client and get a response for your call
let response = await client.execute(request);
console.log(`Response: ${JSON.stringify(response)}`);
// If call returns body in response, you can get the deserialized version from the result attribute of the response.
console.log(`Capture: ${JSON.stringify(response.result)}`);
};
let capture = captureOrder("REPLACE-WITH-APPROVED-ORDER-ID");
{
"id": "96J43722461654618",
"links": [
{
"href": "https://api.sandbox.paypal.com/v2/checkout/orders/96J43722461654618",
"method": "GET",
"rel": "self"
}
],
"payer": {
"address": {
"country_code": "US"
},
"email_address": "byer@example.com",
"name": {
"given_name": "John",
"surname": "Doe"
},
"payer_id": "XXXXXXXXXXX",
"phone": {
"phone_number": {
"national_number": "111-111-1111"
}
}
},
"purchase_units": [
{
"payments": {
"captures": [
{
"amount": {
"currency_code": "USD",
"value": "100.00"
},
"create_time": "2019-02-05T02:44:14Z",
"final_capture": true,
"id": "7XU44982RK2157057",
"links": [
{
"href": "https://api.sandbox.paypal.com/v2/payments/captures/7XU44982RK2157057",
"method": "GET",
"rel": "self"
},
{
"href": "https://api.sandbox.paypal.com/v2/payments/captures/7XU44982RK2157057/refund",
"method": "POST",
"rel": "refund"
},
{
"href": "https://api.sandbox.paypal.com/v2/checkout/orders/96J43722461654618",
"method": "GET",
"rel": "up"
}
],
"seller_protection": {
"dispute_categories": [
"ITEM_NOT_RECEIVED",
"UNAUTHORIZED_TRANSACTION"
],
"status": "ELIGIBLE"
},
"seller_receivable_breakdown": {
"gross_amount": {
"currency_code": "USD",
"value": "100.00"
},
"net_amount": {
"currency_code": "USD",
"value": "96.80"
},
"paypal_fee": {
"currency_code": "USD",
"value": "3.20"
}
},
"status": "COMPLETED",
"update_time": "2019-02-05T02:44:14Z"
}
]
},
"reference_id": "default",
"shipping": {
"address": {
"address_line_1": "1 Main St",
"admin_area_1": "CA",
"admin_area_2": "San Jose",
"country_code": "US",
"postal_code": "95131"
},
"name": {
"full_name": "John Doe"
}
}
}
],
"status": "COMPLETED"
}
To run integration tests using your client id and secret, clone this repository and run the following command:
$ npm install
$ PAYPAL_CLIENT_ID=YOUR_SANDBOX_CLIENT_ID PAYPAL_CLIENT_SECRET=YOUR_SANDBOX_CLIENT_SECRET npm test
You can start off by trying out creating and capturing an order
Note: Update the payPalClient.ts
with your sandbox client credentials or pass your client credentials as environment variable while executing the samples.creating and capturing an order
PayPalHttpClient used as part of this project returns Promises
You can read more about Promises here: https://www.promisejs.org/
Code released under SDK LICENSE
FAQs
NodeJS SDK for PayPal Checkout APIs
The npm package @hyperse-io/paypal-node-sdk receives a total of 14 weekly downloads. As such, @hyperse-io/paypal-node-sdk popularity was classified as not popular.
We found that @hyperse-io/paypal-node-sdk demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.
Product
We're excited to introduce Socket Optimize, a powerful CLI command to secure open source dependencies with tested, optimized package overrides.