设置manual确认方式创建Stripe Payment Intent却直接成功是否正常?
Stripe同步收款PaymentIntent直接返回succeeded是否正常?
这种行为是完全正常的,原因如下:
confirmation_method: 'manual'的实际作用
这个参数是指定当支付需要额外验证(如3DS验证、银行授权等)时,必须通过手动调用confirmPaymentIntent接口完成确认;但如果支付方法本身不需要任何额外验证步骤(比如你使用的测试卡),Stripe会自动完成确认流程,直接将PaymentIntent置为succeeded状态。从你的返回结果可以验证:
next_action: null:说明没有需要后续处理的验证动作amount_received: 5999:已经全额收到款项status: 'succeeded':支付流程已完成
测试场景的特殊性
在Stripe测试环境中,大部分测试卡(如4242 4242 4242 4242)是无需额外验证的,所以会直接触发自动确认。如果想测试需要手动确认的场景,可以使用需要3DS验证的测试卡(如4000000000003220),此时创建PaymentIntent会返回包含next_action的结果,需要你后续完成验证后再手动确认。代码逻辑的合理性
你设置了confirm: true,意味着创建PaymentIntent的同时会立即尝试确认支付。当支付方法满足自动确认条件时,就会直接完成整个流程,这和confirmation_method: 'manual'的设置并不矛盾——后者只是定义"需要确认时的方式",而非强制要求必须手动触发确认。
内容的提问来源于stack exchange,提问作者vince
相关产品推荐
相关产品推荐

