Razorpay .NET集成自动支付捕获:创建订单时如何获取payment对象?
Razorpay自动支付捕获:创建订单时的payment对象处理
你搞混了步骤顺序——创建订单阶段根本不需要提前获取payment对象,payment是用户完成支付后才生成的实体。文档里的payment.capture_options是支付完成后,针对已生成的payment进行捕获配置的操作,和创建订单是两个不同阶段。
下面给你理清楚正确的流程:
1. 先正常创建订单,控制捕获模式
创建订单时,你只需要通过payment_capture参数来设置自动/手动捕获的基础规则,不需要涉及payment对象:
// 以Node.js SDK为例 const Razorpay = require('razorpay'); const razorpay = new Razorpay({ key_id: '你的Key ID', key_secret: '你的Key Secret' }); const createOrder = async () => { const order = await razorpay.orders.create({ amount: 1000, // 金额最小单位,比如10卢比=1000 currency: 'INR', receipt: '自定义订单编号', payment_capture: 0 // 0=手动捕获,1=支付成功后立即自动捕获 }); return order; };
2. 获取payment对象并配置捕获过期时长
用户完成支付后,你会通过两种方式拿到payment_id:
- Razorpay发送的webhook通知里包含
payment_id - 前端支付成功后返回的回调数据里也会有
payment_id
拿到payment_id后,就可以获取对应的payment对象,再设置捕获选项:
// 获取payment对象 const payment = await razorpay.payments.fetch('拿到的PAYMENT_ID'); // 设置自动捕获过期时长(比如1小时后自动触发捕获) await razorpay.payments.update('拿到的PAYMENT_ID', { capture_options: { automatic_expiry_period: 3600, // 单位:秒 manual_expiry_period: 86400 // 手动捕获的过期时长,可选配置 } });
关于文档截图的说明
你截图里的代码是支付完成后的配置操作,不是创建订单时的步骤。创建订单只需要确定payment_capture的模式,后续再用payment ID来细化捕获的过期规则。
内容的提问来源于stack exchange,提问作者Binoy kumar hari
相关产品推荐
相关产品推荐

