能否通过Flutter将Razorpay支付状态从Authorized改为Captured?
当然可行,这是Razorpay支付流程里的标准操作。Authorized状态代表支付已获得用户支付渠道的授权,但还没完成实际扣款,Captured才是最终完成资金划转的状态,你可以通过以下两种方式实现状态变更:
1. 自动捕获(事前配置)
如果在创建Razorpay订单时,把参数auto_capture设为true,支付成功后系统会自动将状态转为Captured。要是之前的订单没开这个配置,就用手动捕获的方式处理。
2. 手动捕获(事后操作)
这一步必须通过后端接口完成(绝对不能在Flutter前端执行,防止泄露API密钥),具体步骤:
- 从Flutter端支付成功的回调里拿到
payment_id - 后端用你的Razorpay密钥,向Razorpay的API发送POST请求:
POST /payments/{payment_id}/capture - 请求体里要传入和订单金额一致的捕获金额(单位为最小货币单位,比如印度卢比用派萨)
- 接口调用成功后,支付状态会立刻更新为
Captured,同时你会收到Razorpay的webhook通知确认状态变更
注意事项
- 捕获操作有时间限制,一般是支付授权后的5天内(具体以Razorpay官方最新规则为准),超时后授权会失效,没法再捕获
- 测试环境可以用Razorpay的测试密钥和测试支付方式验证捕获流程
- 如果捕获失败,检查请求参数是否正确、金额是否匹配,以及授权是否还在有效期内
内容的提问来源于stack exchange,提问作者Sugam Das
相关产品推荐
相关产品推荐

