@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
Markdown
# 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!