You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js集成Razorpay实现客户直付零售商银行账户方案咨询

实现方案核心逻辑

你需要的客户付款直接转入零售商账户、资金不经过平台中间账户的需求,可以通过Razorpay Routes的第三方直接转账(TPT)模式实现。你未找到的添加银行账户接口实际为Razorpay的Fund Account创建接口,所有零售商的银行账户需要先创建为Razorpay系统内的Fund Account对象,后续即可直接路由资金。

Node.js 集成分步实现

前置准备

首先确保你已在Razorpay商户后台开通Routes功能并激活直接转账权限,之后安装官方Node.js SDK:
npm install razorpay

步骤1:初始化Razorpay客户端

const Razorpay = require('razorpay');
// 生产环境请将密钥存入环境变量,禁止硬编码
const razorpayInstance = new Razorpay({
  key_id: '你的Razorpay_KEY_ID',
  key_secret: '你的Razorpay_KEY_SECRET'
});

步骤2:为零售商创建Fund Account(添加银行账户)

该接口就是你要的添加银行账户API,每个零售商只需调用一次创建Fund Account,后续用返回的fund_account_id即可直接发起转账,无需重复上传银行信息:

async function createRetailerFundAccount(retailerInfo) {
  try {
    const fundAccount = await razorpayInstance.fundAccounts.create({
      account_type: 'bank_account',
      bank_account: {
        name: retailerInfo.bankHolderName,
        ifsc: retailerInfo.ifscCode,
        account_number: retailerInfo.bankAccountNo
      },
      contact: {
        name: retailerInfo.retailerName,
        email: retailerInfo.retailerEmail,
        contact: retailerInfo.retailerPhone
      }
    });
    // 请将返回的fundAccount.id存入你的数据库,和对应零售商信息绑定
    return fundAccount.id;
  } catch (err) {
    console.error('创建Fund Account失败:', err);
    throw err;
  }
}

你已留存的存量零售商银行账户可以批量调用该接口完成初始化,新入驻零售商在入驻流程中调用一次即可。

步骤3:创建直转支付订单

创建订单时直接配置转账规则,客户付款成功后Razorpay会自动将资金直接划转至对应零售商的银行账户,不会进入你的平台结算账户:

async function createDirectPayOrder(orderInfo, retailerFundAccountId) {
  try {
    const order = await razorpayInstance.orders.create({
      amount: orderInfo.amount * 100, // Razorpay金额单位为印度派士,需转整数
      currency: 'INR',
      receipt: `order_${orderInfo.platformOrderId}`,
      transfers: [
        {
          account: retailerFundAccountId,
          amount: orderInfo.amount * 100, // 若需扣除平台佣金,此处填写扣佣后的金额即可
          currency: 'INR',
          on_hold: 0 // 无需冻结,付款成功后立即转账
        }
      ]
    });
    // 将返回的order.id传给前端,即可发起Razorpay支付流程
    return order;
  } catch (err) {
    console.error('创建直转订单失败:', err);
    throw err;
  }
}

如果单个订单对应多个零售商,只需在transfers数组中添加多个配置项,分别指定不同零售商的fund_account_id和对应转账金额即可,Razorpay会自动拆分资金分别直转。

步骤4:状态校验

支付和转账完成后Razorpay会触发webhook回调,你只需在后台配置监听payment.captured、transfer.processed、transfer.failed三类事件,即可完成交易状态的校验和异常处理,无需额外手动触发转账操作。

注意事项
  • 测试阶段可使用Razorpay官方提供的测试IFSC、测试银行账号完成功能验证,不要直接使用生产数据调试
  • 若你需要留存部分佣金,仅需调整transfers配置项中的转账金额,佣金部分会自动进入你的平台账户,剩余待转金额仍走直转链路不经过你的中间账户
  • 请妥善保管商户密钥,所有敏感接口调用务必在服务端完成,禁止在前端暴露key_secret

内容的提问来源于stack exchange,提问作者ankit singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 21:54:04