@setu/upi-deep-links
is a NodeJS SDK for accessing Setu’s UPI Deeplinks APIs. The SDK is designed with ease of access in mind, with full TypeScript support.
SDK documentation →
Full documentation →
Product overview →
- npm
npm install @setu/upi-deep-links
- yarn
yarn add @setu/upi-deep-links
- Full support for latest UPI Deeplinks APIs
- Type definitions for all inputs & outputs
- Allows both JWT & OAuth authentication mechanisms
SANDBOX
mode to test integration &PRODUCTION
for live data- Internal mechanism for OAuth authentication to automatically re-fetch token when current one expires, and retry all failed requests.
import { SetuUPIDeepLink } from "@setu/upi-deep-links";
const upidl = SetuUPIDeepLink({
schemeID: "5bf4376b-6008-43c8-8ce0-a5ea196e3091",
secret: "9975fd99-d5ed-416a-9963-5d113dc80582",
productInstanceID: "861023031961584801",
mode: "SANDBOX",
authType: "JWT",
});
const paymentLinkBody = {
amountValue: 20000, // amount in paisa
billerBillID: "918147077472", // Unique merchant platform identifier for bill
amountExactness: "EXACT",
// Optional fields
settlement: {
parts: [
{
account: {
id: "987654321",
ifsc: "KKBK0000001",
},
remarks: "EXACT sample split",
split: {
unit: "INR",
value: 10000,
},
},
],
primaryAccount: {
id: "123456789",
ifsc: "KKBK0000001",
},
},
};
const data = await upiDL.createPaymentLink(paymentLinkBody);
const data = await upiDL.checkPaymentStatus("891365293916423373");
const data = await upidl.triggerMockPayment({
amountValue: 200, // amount in rupees
platformBillID: "891365293916423373",
vpa: "nareshlocal@kaypay", // Merchant VPA
});
const data = await upiDL.expireBill("891365293916423373");
const data = await upiDL.initiateRefund({
refunds: [
{
identifier: platformBillID,
identifierType: "BILL_ID",
refundType: "FULL",
deductions: [
{
account: {
id: "123456789",
ifsc: "KKBK0000001",
},
split: {
unit: "INR",
value: 10000,
},
},
{
account: {
id: "987654321",
ifsc: "KKBK0000001",
},
split: {
unit: "INR",
value: 10000,
},
},
],
},
],
});
const data = await upiDL.getRefundBatchStatus(initiateRefundResponse.batchID);
const data = await upiDL.getRefundStatus(getRefundBatchStatusResponse.refunds[0].id);
Have a look through existing Issues and Pull Requests that you could help with. If you'd like to request a feature or report a bug, please create a GitHub Issue using the template provided.
MIT. Have at it.