paypal-handler
Version:
402 lines (315 loc) • 8.53 kB
Markdown
# PayPal Handler Documentation
**PayPal Handler** is a utility file designed to handle and streamline PayPal API interactions. It provides methods for configuring PayPal, creating payment plans, executing payments, and managing recurring payment cycles.
## Features
- **PayPal Configuration**: Set up PayPal client with environment details.
- **One-Time Payments**: Create and execute one-time payment transactions.
- **Recurring Payments**: Manage subscription-based payment plans.
- **Installments**: Facilitate installment-based payment plans.
- **Execute Payments**: Execute and finalize PayPal transactions.
- **Billing Agreements**: Execute billing agreements seamlessly.
### installation
npm i paypal-handler
## Prerequisites
Before using the `PayPal Handler`, ensure you have:
1. A PayPal Developer account.
2. PayPal API credentials (`client_id` and `client_secret`).
## Configuration
### `configurePaypal(config)`
Configures PayPal SDK with `client_id`, `client_secret`, and `mode` (sandbox/live).
#### Parameters:
- `config` (object): Configuration object containing:
- `mode` (string): PayPal environment (`sandbox` or `live`).
- `client_id` (string): PayPal API Client ID.
- `client_secret` (string): PayPal API Client Secret.
#### Example:
```javascript
const initializePaypal = async (mode, client_id, client_secret) => {
try {
let configuration = {
mode: mode,
client_id: client_id,
client_secret: client_secret,
};
const { error, message, response } = await configurePaypal(configuration);
if (error) {
console.log(error);
throw new Error(error);
}
return response;
} catch (error) {
return error;
}
};
```
## Payment Operations
### `createOneTimePayment(payload)`
Creates a one-time payment transaction.
#### Parameters:
- `payload` (object): Validated payload for one-time payment. Must include:
- `amount` (number): Payment amount.
- `currency` (string): ISO currency code (e.g., `USD`).
- `return_url` (string): Redirect URL after payment approval.
- `discount`, `discount_type`, and `tax` (optional): Payment adjustments.
#### Example:
```javascript
const createOneTimePayment = async (
paypal,
amount,
currency,
discount_type,
discount,
tax,
return_url
) => {
try {
let onetime_payment_obj = {
amount: amount,
currency: currency,
discount_type: discount_type,
discount: discount,
tax: tax,
return_url: return_url,
};
const { error, message, response } = await createPaymentPlanOneTime(
onetime_payment_obj,
paypal
);
if (error) {
console.log(error);
throw new Error(error);
}
return response;
} catch (error) {
return error;
}
};
```
### `executePayment(paymentId, payerId)`
Executes a PayPal payment after it has been approved by the user.
#### Parameters:
- `paymentId` (string): The ID of the payment to execute.
- `payerId` (string): The PayPal payer ID.
#### Example:
```javascript
const paymentId = "PAY-12345";
const payerId = "PAYER-67890";
const executePaymentFunction = async (paypal, paymentId, payerId) => {
try {
let execute_payment_obj = {
payment_id: paymentId,
payer_id:payerId ,
};
const { error, message, response } = await executePayment(
execute_payment_obj,
paypal
);
if (error) {
console.log(error);
throw new Error(error);
}
return response;
} catch (error) {
return error;
}
};
```
### `createRecurringPaymentPlan(payload)`
Creates a recurring payment plan (e.g., subscriptions).
#### Parameters:
- `payload` (object): Validated payload for a recurring payment plan. Must include:
- `amount`, `currency`, `frequency`, `plan_name`, and `trial_period_days`.
- Optional adjustments like `discount`, `discount_type`, `tax`, or `custom_days`.
#### Example:
```javascript
const createRecurringPayment = async (
paypal,
amount,
currency,
discount_type,
discount,
tax,
return_url,
frequency,
interval_count
) => {
try {
let recurring_payment_obj = {
amount: amount,
currency: currency,
frequency: frequency,
plan_name: "Recurring Payment Plan",
trial_period_days: 0,
return_url: return_url,
discount_type: discount_type,
discount: discount,
tax: tax,
custom_days: interval_count,
};
const { error, message, response } = await createPaymentPlanRecurring(
recurring_payment_obj,
paypal
);
if (error) {
console.log(error);
throw new Error(error);
}
return response;
} catch (error) {
return error;
}
};
```
### `createFixedRecurringPayment(payload)`
Creates a recurring payment plan with a fixed number of cycles.
#### Parameters:
- `payload` (object): Validated payload for fixed-cycle recurring payments.
#### Example:
```javascript
const createFixedRecurringPayment = async (
paypal,
amount,
currency,
discount_type,
discount,
tax,
return_url,
frequency,
interval_count
) => {
try {
let recurring_payment_obj = {
amount: amount,
currency: currency,
frequency: frequency,
plan_name: "Fixed Recurring Payment Plan",
trial_period_days: 0,
cycles: 1,
return_url: return_url,
discount_type: discount_type,
discount: discount,
tax: tax,
custom_days: interval_count,
};
const { error, message, response } = await createPaymentFixedRecurring(
recurring_payment_obj,
paypal
);
if (error) {
console.log(error);
throw new Error(error);
}
return response;
} catch (error) {
return error;
}
};
```
### `createInstallmentPayment(payload)`
Creates a payment plan based on installments.
#### Parameters:
- `payload` (object): Validated payload for installment payments.
#### Example:
```javascript
const createInstallmentsPayment = async (
paypal,
amount,
initial_amount,
currency,
discount_type,
discount,
tax,
return_url,
frequency,
interval_count
) => {
try {
let installments_payment_obj = {
amount: amount,
initial_amount: initial_amount,
currency: currency,
frequency: frequency,
plan_name: "Installments Payment Plan",
trial_period_days: 0,
cycles: 1,
return_url: return_url,
discount_type: discount_type,
discount: discount,
tax: tax,
custom_days: interval_count,
};
const { error, message, response } = await createPaymentInstallments(
installments_payment_obj,
paypal
);
if (error) {
console.log(error);
throw new Error(error);
}
return response;
} catch (error) {
return error;
}
};
```
### `executeBillingAgreement(token)`
Executes a billing agreement for recurring payments.
#### Parameters:
- `token` (string): The token returned from PayPal after user approval.
#### Example:
```javascript
const token = "EC-12345";
const billingAgreementExecuteFunction = async (paypal, token) => {
try {
let billing_agreement_execute_obj = {
token: token,
};
const { error, message, response } = await billingAgreementExecute(
billing_agreement_execute_obj,
paypal
);
if (error) {
console.log(error);
throw new Error(error);
}
return response;
} catch (error) {
return error;
}
};
```
## Error Handling
All functions return a consistent response format to simplify integration:
- **On Success:**
```json
{
"success": true,
"data": "<PayPal API response>"
}
```
- **On Failure:**
```json
{
"success": false,
"error": "<error details>"
}
```
## Examples
Please Refer to Examples Folder for better understanding
## License
This utility is open-source and licensed under the [MIT License](LICENSE).
## Contributions
Contributions are welcome! Please feel free to open issues, submit PRs, or suggest improvements.
## Author
[MetaDevZone](https://metadevzone.com)