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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:01:24