为什么印度支付方式重要
UPI主导地位
UPI每月处理超过100亿笔交易。许多印度客户没有国际卡。
低交易成本
UPI几乎没有交易费用。非常适合高交易量、低价值的交易。
订阅支持
与大多数替代支付方式不同,UPI和Rupay支持通过RBI授权的定期付款。
支持的方法
| 方法 | 类型 | 订阅 | 最小金额 |
|---|---|---|---|
| UPI收款 | 二维码 / VPA | 是* | ₹1 |
| Rupay信用卡 | 卡 | 是* | ₹1 |
| Rupay借记卡 | 卡 | 是* | ₹1 |
配置
API方法类型
| 类型 | 描述 |
|---|---|
upi_collect | 通过二维码或VPA输入的UPI |
credit | 包括Rupay的信用卡 |
debit | 包括Rupay的借记卡 |
示例:印度专用结账
UPI的要求
为了在结账时显示UPI:- 账单国家必须是印度 (
IN) - 货币必须是INR
- 对于非印度商家:自适应货币必须启用
带有RBI授权的订阅
印度支付方式的订阅在RBI(印度储备银行)规定下运行,有独特的要求。RBI授权的工作原理
授权类型
| 订阅金额 | 授权类型 | 限制 |
|---|---|---|
| 低于₹15,000 | 按需授权 | ₹15,000 |
| ₹15,000或以上 | 固定金额授权 | 精确订阅金额 |
48小时处理延迟
这是与国际卡支付最大的不同:处理48小时窗口
为印度订阅处理Webhook事件
| 事件 | 时间 | 操作 |
|---|---|---|
subscription.created | 授权签署 | 记录订阅开始 |
payment.succeeded | 约48小时后费用日期 | 授予/继续访问 |
payment.failed | 扣款失败 | 通知客户,暂停访问 |
subscription.on_hold | 付款失败 | 提示更新支付方式 |
subscription.active | 付款后重新激活 | 恢复访问 |
测试
UPI测试ID
| 状态 | UPI ID |
|---|---|
| 成功 | success@upi |
| 失败 | failure@upi |
印度卡测试号码
| 品牌 | 场景 | 卡号 | 到期 | CVV |
|---|---|---|---|---|
| Visa | 成功 | 4576238912771450 | 06/32 | 123 |
| Visa | 拒绝 | 4706131211212123 | 06/32 | 123 |
| Mastercard | 成功 | 5409162669381034 | 06/32 | 123 |
| Mastercard | 拒绝 | 5105105105105100 | 06/32 | 123 |
最佳实践
计划48小时延迟
计划48小时延迟
构建您的应用程序以处理费用发起与实际付款之间的间隔。考虑:
- 订阅访问的宽限期
- 清晰地向客户沟通处理时间
- 基于Webhook的履行,而不是基于日期
处理授权取消
处理授权取消
客户可以随时通过其银行应用程序取消授权。监控
subscription.on_hold webhook,并提示客户重新订阅或更新支付方式。设置适当的授权金额
设置适当的授权金额
对于可变定价(例如,基于使用),考虑是否₹15,000的按需授权足够。如果费用可能超过此金额,客户需要重新授权。
突出提供UPI
突出提供UPI
对于印度客户,UPI应为主要支付选项。许多用户由于熟悉度和较低摩擦,更倾向于使用UPI而不是卡。
故障排除
UPI未出现在结账时
UPI未出现在结账时
检查:
- 账单国家设置为
IN? - 货币设置为
INR? - 如果是非印度商家:自适应货币启用了吗?
upi_collect包含在allowed_payment_method_types中吗?
country: "IN"和billing_currency: "INR"。升级后订阅费用失败
升级后订阅费用失败
原因: 新费用金额超过现有授权限制(₹15,000阈值)。解决方案: 客户必须更新支付方式,以建立具有正确限制的新授权。
订阅被暂停,但客户声称他们没有取消
订阅被暂停,但客户声称他们没有取消
原因: 客户可能在48小时窗口中取消了授权,或者其银行拒绝了扣款。解决方案: 客户需要重新授权该授权或更新其支付方式。
付款扣款延迟超过48小时
付款扣款延迟超过48小时
原因: 银行API延迟可能会将处理时间延长2-3个小时。解决方案: 这是预期的。构建您的系统以处理总长达约51小时的可变延迟。
授权被取消但订阅仍然活跃
授权被取消但订阅仍然活跃
原因: 在RBI规定中的边缘情况 — 在处理窗口期间取消授权不会立即取消订阅。解决方案: 下一次扣款将失败并且订阅将移动至
on_hold。监控payment.failed的webhooks。