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

PHP WordPress手动集成Stripe SEPA定期支付遇mandate参数错误求助

解决Stripe SEPA订阅中mandate参数错误及正确配置方法

错误原因

你在调用Subscription::create()时传入了mandate参数,但该参数不属于Stripe订阅API的合法请求字段,因此返回400错误。SEPA Debit的客户授权(Mandate)需要通过规范字段传递,而非直接在订阅创建时传入mandate。

代码修正要点

  1. 移除无效参数:删除订阅创建代码中的mandate和过时的default_source参数(已在Customer对象中设置默认支付方式,无需重复传递)
  2. 正确传递客户授权信息:通过payment_method_options.sepa_debit.mandate_options字段传递SEPA授权的客户接受信息,符合Stripe API规范
  3. 优化Customer创建逻辑:直接在Customer创建时设置默认支付方式,省去单独调用save()的步骤

修正后的完整代码

$iban = $_POST['useriban'];
$username = $_POST['username'];
$email = $_POST['useremail'];

// 创建SEPA Debit支付方式
$paymentMethod = \Stripe\PaymentMethod::create([
    'type' => 'sepa_debit',
    'sepa_debit' => [
        'iban' => $iban,
    ],
    'billing_details' => [
        'name' => $username,
        'email' => $email,
    ],
]);

// 创建客户并绑定默认支付方式
$customer = \Stripe\Customer::create([
    'name' => $username,
    'email' => $email,
    'payment_method' => $paymentMethod->id,
    'invoice_settings' => [
        'default_payment_method' => $paymentMethod->id,
    ],
]);

// 创建SEPA定期订阅
$subscription = \Stripe\Subscription::create([
    'customer' => $customer->id,
    'items' => [
        [
            'price' => 'plan_ODaZeXLlnFADJZ', // 替换为你的产品价格ID
        ],
    ],
    'payment_behavior' => 'default_incomplete', // 处理SEPA异步授权逻辑,可选但推荐
    'payment_method_options' => [
        'sepa_debit' => [
            'mandate_options' => [
                'customer_acceptance' => [
                    'type' => 'online',
                    'online' => [
                        'ip_address' => $_SERVER['REMOTE_ADDR'],
                        'user_agent' => $_SERVER['HTTP_USER_AGENT'], // 添加用户代理,满足合规要求
                    ],
                ],
            ],
        ],
    ],
]);

关键说明

  • payment_behavior设置:SEPA Debit授权需要异步验证,使用default_incomplete可以让订阅处于待激活状态,直到Stripe确认授权完成,避免订阅创建失败
  • 合规要求:必须记录客户接受授权的IP地址和用户代理信息,这是SEPA法规的强制要求
  • Mandate自动生成:Stripe会根据你传递的客户接受信息自动创建并关联Mandate,无需手动创建Mandate对象

内容的提问来源于stack exchange,提问作者Muhammad Jamil Baig

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 16:35:30