印度支付API推荐及开发者指南
主流印度支付平台API
1. UPI (Unified Payments Interface)
- 特点: 即时银行间转账,印度最流行的支付方式
- 主要提供商:
- NPCI UPI API (官方接口)
- Google Pay for Business
- PhonePe Payment Gateway
- 适用场景: P2P转账、商户收款、账单支付
2. Razorpay
- 优势:
- 支持UPI、钱包、网银、信用卡等多种方式
- Developer-friendly文档和SDK
- API文档: https://razorpay.com/docs/
- 费用: ~2%交易费(根据交易量可协商)
3. Paytm Payment Gateway
- 优势:
庞大的用户基础(4亿+用户)
支持Paytm钱包和UPI集成
CCAvenue
老牌支付网关,支持国际卡收单
API集成关键考虑因素
-
合规要求:
- RBI的PA-DSS认证(Payment Application Data Security Standard)
- PCI DSS合规(处理信用卡数据时)
-
必备功能验证:
// Razorpay订单创建示例(Node.js)
const razorpay = new Razorpay({
key_id: 'YOUR_KEY_ID',
key_secret: 'YOUR_SECRET'
});
const options = {
amount: req.body.amount *100, // paise单位
currency: "INR",
receipt: "order_rcptid_11"
};
razorpay.orders.create(options, function(err, order) {
console.log(order);
res.json(order);
});
-
Webhook配置建议:
# Flask webhook验证示例(Python)
@app.route('/webhook', methods=['POST'])
def handle_webhook():
received_signature = request.headers.get('X-Razorpay-Signature')
# Verify signature
expected_signature = hmac.new(
WEBHOOK_SECRET.encode('utf-8'),
request.data,
hashlib.sha256).hexdigest()
if not hmac.compare_digest(received_signature, expected_signature):
return jsonify({"status": "error"}),400
API测试与沙箱环境
所有主要提供商都提供沙盒环境:
1.RazorPay Sandbox Dashboard
2.PayTM Developer Portal
3.CCAvenue Test Merchant Account
测试要点:
✅ UPI虚拟ID测试(payu@ybl等)
✅成功/失败回调模拟
KYC与商家入驻流程
典型所需文件:
📄公司注册证明(GST/PAN)
📄银行账户详情(MICR/IFSC)
平均审核时间:3工作日(RazorPay最快24小时)
FAQ常见问题
Q:RBI对自动扣款(subscription)的特殊要求?
A:需要强制双重认证(mandate registration flow),首次扣款需客户明确授权。
Q:NACH与UPI自动付款区别?NACH适合大额定期付款(如贷款还款),而UPI更适合小额高频订阅。
印度支付API开发者指南(续)
高级集成场景
1. 订阅支付实现
// Razorpay订阅创建示例
const subscription = await razorpay.subscriptions.create({
plan_id: 'plan_IAgeVJ4dDnRjp5',
customer_notify: 1,
total_count: 12, //12个月分期
});
// Webhook处理订阅事件(成功/失败)
app.post('/subscription-webhook', (req, res) => {
const event = req.body.event;
if(event === 'subscription.charged') {
//更新数据库记录...
}
});
2. UPI深度链接生成
// Android端UPI Intent生成(Java)
Uri upiUri = Uri.parse("upi://pay")
.buildUpon()
.appendQueryParameter("pa", "merchant@upi")
.appendQueryParameter("pn", "商户名称")
.appendQueryParameter("am", String.valueOf(amount))
.build();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(upiUri);
startActivityForResult(intent, UPI_REQUEST_CODE);
特殊支付方式处理
1. EMI选项集成
关键参数:
emi_options
: ["cardless", "credit_card"]bank_code
: HDFC/SBI等银行代码
# Python EMI可用性检查示例(Razorpay)
eligible_banks = razorpay.payment.getBankTransferEmiOptions({
"amount": amount_in_paise,
})
2. PayLater服务
支持平台:
- LazyPay (API需单独申请)
- Simpl (通过PayTM/Razorpay间接接入)
性能优化建议
1️⃣ 本地化缓存策略
缓存银行列表、EMI选项等静态数据(注意RBI要求的每日刷新)
2️⃣ 智能路由降级
if (UPI失败次数 >阈值){
自动切换至Wallets/PayLater;
}
3️⃣ 批量退款接口使用
CSV文件处理大量退款更高效
RBI最新监管要求(2023更新)
📌必须实现的变更:
▸ AFA(Authenticated Fraud Analytics)上报 – PCI-DSS v4.0新增要求
▸ Tokenization合规 – PAN卡号必须替换为tokens
⚠️截止日期:2024年1月前完成改造
Debugging工具推荐
🔧 Postman Collections:
• Razorpay官方集合
• PayTM沙箱环境模拟器
🔍日志必备字段:
{
"gateway":"razorpay",
"payment_id":"pay_Hk8yKZq7L9XURB",
"rbi_compliance":{
"tokenized":true,
"afa_report_id":"ABXZ12983"
}}
需要继续深入哪个具体方向?我可以提供:
→ UPI QR码动态生成细节
→ BharatQR与普通UPI的区别实践
→ OTP自动填充的Android实现方案
发表回复