UNPKG

@sastatesla/payment-gateway-sdk

Version:

A unified interface for integrating multiple payment providers (e.g., Razorpay, Cashfree) in your Node.js application.

155 lines (110 loc) 2.91 kB
# PaymentManager SDK A unified interface for integrating multiple payment providers (e.g., Razorpay, Cashfree) in your Node.js application. ## Features - Plug-and-play support for multiple payment providers. - Consistent API for charging, refunding, querying payment and settlement status, and listing payments. - Easy to extend for other providers (just implement the `PaymentProvider` abstract class). - Input validation and error normalization. --- ## Installation ```bash npm install @sastatesla/payment-gateway-sdk ``` --- ## Usage ### 1. Initialize the SDK in your code: ```typescript import {PaymentManager} from "@sastatesla/payment-gateway-sdk" ``` ### 2. Configure Provider Prepare your provider config. For example, for Razorpay: ```typescript const payment = PaymentManager.init({ provider: "razorpay", config: { keyId: "YOUR_KEY_ID", keySecret: "YOUR_SECRET" } }) ``` Or for Cashfree: ```typescript const payment = PaymentManager.init({ provider: "cashfree", config: { keyId: "YOUR_KEY_ID", keySecret: "YOUR_SECRET", environment: "TEST" } }) ``` ### 3. Charging a User ```typescript // Usage const paymentResult = await payment.charge( amount: 500, currency: "INR", source: "customer_abc123", metadata: { orderId: "order_001" } ); console.log("Charge Result:", paymentResult); ``` ### 4. Refunding a Payment ```typescript const refundResult = await paymentManager.refund( transactionId: "PAYMENT_ID", ) console.log(refundResult); ``` ### 5. Checking Payment Status ```typescript const paymentStatus = await paymentManager.getPaymentStatus("PAYMENT_ID") console.log(paymentStatus) ``` ### 6. Listing User Payments ```typescript const userPayments = await paymentManager.listUserPayments("USER123", { fromDate: "2024-01-01", toDate: "2024-12-31", status: "captured" }) console.log(userPayments) ``` ### 7. Listing All Payments ```typescript const allPayments = await paymentManager.listAllPayments({ fromDate: "2024-01-01", toDate: "2024-12-31" }) console.log(allPayments) ``` ### 8. Getting Settlement Details ```typescript const settlementDetails = await paymentManager.getSettlementDetails("SETTLEMENT_ID") console.log(settlementDetails) ``` ### 9. Checking Refund Status ```typescript const refundStatus = await paymentManager.getRefundStatus("REFUND_ID") console.log(refundStatus) ``` --- ## Extending for New Providers 1. **Implement `PaymentProvider` Abstract Class** Create a new provider class extending `PaymentProvider` and implement all required abstract methods. 2. **Add Switch Case in `PaymentManager`** Add a case for your new provider in the `PaymentManager` constructor. --- ## Error Handling All errors are normalized using the `APIError` utility and thrown as exceptions. Catch them in your application to handle gracefully. --- ## License MIT ## Contributions Issues and PRs welcome!