@api-craft/payments
v1.0.0
Published
Platform-agnostic payment router with multi-gateway driver support for Express
Downloads
11
Maintainers
Readme
@api-craft/payments
A platform-agnostic payment router plugin for Express.js that supports multiple gateways like Stripe and Razorpay with automatic route handling and powerful after-hooks.
✨ Features
- 🔌 Plug & play payment routes (
/create,/verify,/webhook) - 🧩 Multi-gateway support (Stripe, Razorpay)
- ⚙️ Custom
afterHookfor post-payment actions - 🔐 Secure signature verification for webhooks
- 🧠 Intelligent structure for extensibility
🚀 Installation
npm install @api-craft/paymentsDpendecies like stripe, razorpay are peer deps you need to only install needed driver
🧰 Usage
// server.js
import express from 'express';
import { createPaymentRouter } from '@api-craft/payments';
const app = express();
app.use(express.json());
app.use(
'/payments',
createPaymentRouter({
gateway: 'stripe', // or 'razorpay'
apiKey: process.env.STRIPE_SECRET_KEY,
keyId: process.env.RAZORPAY_KEY_ID,
keySecret: process.env.RAZORPAY_KEY_SECRET,
webhookSecret: process.env.PAYMENT_WEBHOOK_SECRET,
successUrl: 'https://yourdomain.com/payments/success',
cancelUrl: 'https://yourdomain.com/payments/cancel',
afterHook: async ({ gateway, data, status, req, res }) => {
// Save to DB, send emails, etc.
console.log(`[${gateway}] Payment status: ${status}`, data);
},
})
);
app.listen(3000, () => console.log('Server running on port 3000'));🧠 Available Routes
| Method | Route | Description |
| ------ | ------------------- | --------------------------------- |
| POST | /payments/create | Initiates a payment session/order |
| GET | /payments/verify | Verifies payment after redirect |
| POST | /payments/webhook | Handles payment gateway webhooks |
🧩 Supported Gateways
✅ Stripe
✅ Razorpay
⏳ More coming soon...
Driver API
Each driver exports 3 core functions:
export async function create(config, req) { /* ... */ }
export async function verify(config, req) { /* ... */ }
export async function webhook(config, req) { /* ... */ }To add support for a new gateway, create a file in drivers/ and implement these methods.
🔐 Webhook Security
Stripe: uses stripe-signature header
Razorpay: uses x-razorpay-signature header with HMAC-SHA256
Make sure you pass the correct webhookSecret when initializing.
📝 License
MIT © Thamilselven
Part of the @api-craft ecosystem.
🤝 Contribute
Want to add more drivers or features? PRs welcome!
