1.1.2 • Published 5 months ago

@sastatesla/payment-gateway-sdk v1.1.2

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

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

npm install @sastatesla/payment-gateway-sdk

Usage

1. Initialize the SDK in your code:

import {PaymentManager} from "@sastatesla/payment-gateway-sdk"

2. Configure Provider

Prepare your provider config. For example, for Razorpay:

const payment = PaymentManager.init({
	provider: "razorpay",
	config: {
		keyId: "YOUR_KEY_ID",
		keySecret: "YOUR_SECRET"
	}
})

Or for Cashfree:

const payment = PaymentManager.init({
	provider: "cashfree",
	config: {
		keyId: "YOUR_KEY_ID",
		keySecret: "YOUR_SECRET",
		environment: "TEST"
	}
})

3. Charging a User

// 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

const refundResult = await paymentManager.refund(
	transactionId: "PAYMENT_ID",
)
console.log(refundResult);

5. Checking Payment Status

const paymentStatus = await paymentManager.getPaymentStatus("PAYMENT_ID")
console.log(paymentStatus)

6. Listing User Payments

const userPayments = await paymentManager.listUserPayments("USER123", {
	fromDate: "2024-01-01",
	toDate: "2024-12-31",
	status: "captured"
})
console.log(userPayments)

7. Listing All Payments

const allPayments = await paymentManager.listAllPayments({
	fromDate: "2024-01-01",
	toDate: "2024-12-31"
})
console.log(allPayments)

8. Getting Settlement Details

const settlementDetails =
	await paymentManager.getSettlementDetails("SETTLEMENT_ID")
console.log(settlementDetails)

9. Checking Refund Status

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!