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

调用Stripe退款API返回receipt_number为null,如何给用户发退款凭证?

Stripe退款receipt_number为空的解决方法

Stripe的receipt_number字段不会在退款创建完成后立刻返回,只有当退款对应的邮件回执已经生成/发送后,该字段才会被填充有效值,默认创建退款时该字段为null属于正常现象。

以下是三种可行的解决方案:

  • 方案1:开启Stripe自动发送退款邮件配置
    操作路径:进入Stripe后台,依次打开「设置」-「付款设置」-「客户通信」板块,开启「退款成功时向客户发送邮件」选项。开启后创建退款时Stripe会自动生成回执邮件并发送给用户,你可以在退款创建后通过stripe.refunds.retrieve(退款ID)接口主动查询最新退款信息,或者监听refund.updated webhook事件,待回执生成后即可获取到非空的receipt_number字段。
    示例代码:

    // 创建退款
    const refund = await stripe.refunds.create({
      charge: payment.strip.chargeId,
      amount: refundAmount * 100,
    });
    // 监听refund.updated事件或者延迟后查询
    const updatedRefund = await stripe.refunds.retrieve(refund.id);
    const receiptNumber = updatedRefund.receipt_number;
    
  • 方案2:手动触发退款回执生成
    如果你不需要Stripe自动发送所有退款邮件,仅需要针对当前退款获取回执编号,可以手动调用回执发送接口,触发回执生成后再查询即可获取receipt_number:
    示例代码:

    // 手动触发退款回执发送
    await stripe.refunds.sendReceipt(refund.id);
    // 查询最新退款信息获取回执编号
    const updatedRefund = await stripe.refunds.retrieve(refund.id);
    
  • 方案3:直接使用退款唯一ID作为凭证编号
    退款返回结果中的id字段(示例中为re_3K0N3qGRxQkYXSuu2S7aM0jl)是Stripe全局唯一的退款标识,可直接作为退款凭证编号展示给用户,该ID在Stripe后台可直接检索到对应退款记录,完全满足用户核对交易的需求,不需要额外获取receipt_number。

*注意:所有涉及receipt_number获取的操作都需要注意异步延迟,不要在退款创建的同步返回中直接读取该字段,优先使用refund.updated webhook事件触发后续凭证发送逻辑,稳定性高于主动轮询。

内容的提问来源于stack exchange,提问作者Rafiq

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:15:05