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

Ruby on Rails中Stripe ACH支付PaymentIntent状态为requires_source_action问题

解决Stripe ACH测试PaymentIntent卡在requires_source_action的问题

问题描述

创建了测试用的ACH PaymentIntent,代码如下:

Stripe::PaymentIntent.create(
  {
    amount: 1099,
    currency: 'usd',
    setup_future_usage: 'off_session',
    confirm: true,
    payment_method_types: ['us_bank_account'],
    on_behalf_of: 'acct_XXXXXXXXXXXX',
    mandate_data: {
      customer_acceptance: {
        type: 'offline'   
      },   
    },
    payment_method_data: {
      type: 'us_bank_account',
      billing_details: {
        name: 'Test Name'
      },
      us_bank_account: {
        routing_number: '110000000',
        account_number: '000123456789',
        account_holder_type: 'individual'
      }
    }
  }
)

随后调用确认接口:

Stripe::PaymentIntent.confirm(
  'pi_3MosEfLYIdOgExxxxxxxxxx',
  {payment_method: 'pm_1MosEfLYIdOgE1Qxxxxxx'},
)

沙箱面板显示已确认,但PaymentIntent状态仍为requires_source_action。

Stripe Sandbox Dashboard

解决方案

  • 处理source_action验证要求:状态为requires_source_action意味着需要完成额外验证步骤,测试环境下针对该测试账户会触发微存款验证流程。需从PaymentIntent对象的next_action字段获取验证相关信息。
  • 模拟微存款验证:针对测试用的US银行账户(路由号110000000、账号000123456789),调用PaymentIntent.verify_microdeposits接口,传入测试用的微存款金额完成验证:
Stripe::PaymentIntent.verify_microdeposits(
  'pi_3MosEfLYIdOgExxxxxxxxxx',
  {
    amounts: [1, 2],
    payment_method: 'pm_1MosEfLYIdOgE1Qxxxxxx'
  }
)
  • 避免重复确认操作:创建PaymentIntent时已设置confirm: true,无需再单独调用confirm接口,重复操作可能导致状态异常。
  • 检查关联账户权限:确认on_behalf_of指定的关联账户(acct_XXXXXXXXXXXX)已正确配置ACH支付权限,且测试环境下状态正常。

完成上述操作后,PaymentIntent状态会更新为succeeded,支付流程即可完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 11:57:16