onepay-sdk
v0.1.0
Published
A simple payment gateway for Node.js
Maintainers
Readme
🧾 OnePay-SDK - Unified Payment Gateway Wrapper
OnePay-SDK is a lightweight and developer-friendly TypeScript package that simplifies integration with multiple payment gateways such as Stripe and Razorpay in a single unified interface.
🔐 Use OnePay-SDK to easily validate and manage API keys for multiple gateways in one project.
🚀 Features
- ✅ Multi-gateway support (Stripe & Razorpay)
- 🛠️ Validate API keys with easy-to-use methods
- 💳 Create, verify, and process payments through a consistent API
- 🔄 Process refunds with a unified interface
- 🔍 Retrieve payment details across gateways
- 🔌 Plug-and-play class-based API
- 💡 Written in TypeScript (with full types support)
- 🔧 Easily extendable for more gateways in future
📦 Installation
npm install onepay-sdk
# or
yarn add onepay-sdk🛠️ Usage
Initialize OnePay-SDK
To start using OnePay-SDK, initialize it with the API keys for the supported gateways:
import { OnePay } from "onepay-sdk";
const onePay = new OnePay([
{ gateway: "stripe", apiKey: "your-stripe-api-key" },
{ gateway: "razorpay", apiKey: "your-razorpay-key-id", apiSecret: "your-razorpay-key-secret" },
]);Validate Gateways
You can validate the configured gateways to ensure the API keys are correct:
const stripeValidation = await onePay.validateGateway("stripe");
console.log(stripeValidation);
const razorpayValidation = await onePay.validateGateway("razorpay");
console.log(razorpayValidation);Create Payments
OnePay allows you to create payments for the supported gateways:
Razorpay
const razorpayPayment = await onePay.createPayment({
gateway: "razorpay",
amount: 50, // Amount in regular currency (will be converted to paise internally)
currency: "INR",
description: "Premium Subscription",
metadata: { customer_id: "cust_123", product_id: "prod_456" }
});
console.log(razorpayPayment);
// Returns Razorpay order details including orderIdStripe
const stripePayment = await onePay.createPayment({
gateway: "stripe",
amount: 50, // Amount in regular currency (will be converted to cents internally)
currency: "usd",
description: "Test Payment",
customerEmail: "[email protected]",
paymentMethodTypes: ["card"],
customerId: "cust_123456", // Optional Stripe customer ID
metadata: { order_id: "6735" }
});
console.log(stripePayment);
// Returns a client secret that can be used with Stripe.jsVerify Payments
After payment completion on the client side, you can verify payments:
Razorpay Verification
const verifyRazorpay = await onePay.verifyPayment({
gateway: "razorpay",
paymentId: "pay_123456789",
orderId: "order_123456789",
signature: "signature_from_razorpay_callback"
});
console.log(verifyRazorpay);Stripe Verification
const verifyStripe = await onePay.verifyPayment({
gateway: "stripe",
paymentId: "pi_123456789" // Payment Intent ID
});
console.log(verifyStripe);Process Refunds
You can process refunds for completed payments:
// Full refund
const fullRefund = await onePay.refundPayment(
"stripe",
"pi_123456789"
);
// Partial refund
const partialRefund = await onePay.refundPayment(
"razorpay",
"pay_123456789",
25.00 // Refund amount in regular currency
);Retrieve Payment Details
Get payment information at any time:
const paymentDetails = await onePay.getPaymentDetails(
"stripe",
"pi_123456789"
);
console.log(paymentDetails);🧩 Type Definitions
OnePay-SDK exports TypeScript interfaces to help with development:
// Initialize payment gateways
type KeyProps = {
gateway: 'stripe' | 'razorpay';
apiKey: string;
apiSecret?: string;
}
// Create payment payload
type PaymentPayload = {
gateway: 'stripe' | 'razorpay';
amount: number;
currency: string;
description: string;
customerEmail?: string;
metadata?: Record<string, any>;
paymentMethodTypes?: string[];
customerId?: string;
receiptId?: string;
}
// Verify payment payload
type PaymentVerificationPayload = {
gateway: 'stripe' | 'razorpay';
paymentId: string;
orderId?: string; // For Razorpay
signature?: string; // For Razorpay
}📋 Response Format
All methods return a consistent response format:
{
success: boolean;
gateway: 'stripe' | 'razorpay';
message?: string; // Error message if success is false
// For Stripe
clientSecret?: string;
paymentIntentId?: string;
// For Razorpay
order?: any;
orderId?: string;
}🤝 Contributing
Contributions are welcome! Feel free to open issues or submit pull requests.
