php - 创建 paymentIntent 后,如何在 Stripe 中更新客户的默认付款方式?
问题描述
我正在尝试为连接帐户设置订阅。我的流程是创建客户:
$customer = \Stripe\Customer::create([
'description' => "Product",
], ['stripe_account' => $configuration['StripeKey']]);
然后我创建 PaymentIntent:
$intent = \Stripe\PaymentIntent::create([
'amount' => $price,
'currency' => $configuration['Currency'],
'customer' => $customer->id,
], ['stripe_account' => $configuration['StripeKey']]);
客户输入他们的卡详细信息,卡成功应用到客户。但是,我需要将卡设置为默认值,以便为客户创建订阅,但在检索 paymentIntent 时:
$pm = \Stripe\PaymentIntent::retrieve($_POST['payment_intent'], ['stripe_account' => $configuration['StripeKey']]);
尽管仪表板中有付款方式,但 payment_method 显示为 null。
我在哪里错了?
解决方案
首先,您可能无法payment_method
在检索付款意图时看到 ,因为该字段是可扩展的(请参阅https://stripe.com/docs/expand)。您需要将检索代码更新为以下内容:
$pm = \Stripe\PaymentIntent::retrieve([
'id'=>$_POST['payment_intent'],
'stripe_account' => $configuration['StripeKey'],
'expand' => ['payment_method']
]);
此外,您应该setup_future_usage:off_session
在创建付款意图时进行设置。确认付款意图后,这将自动将 PaymentMethod 附加到您的客户。
附加付款方式后,您可以invoice_settings.default_payment_method
将客户 ( https://stripe.com/docs/api/customers/update#update_customer-invoice_settings-default_payment_method ) 更新为用于 Stripe 订阅的默认付款方式。
话虽这么说,我有点困惑为什么您要创建 PaymentIntent 但谈论订阅。您是否自己管理订阅(不使用 Stripe 的订阅 API)?如果您正在使用 Stripe 的订阅并且只想设置付款方式,您可以使用 SetupIntent 来代替。
推荐阅读
- javascript - 仅在停止拖动后记录 HTML 输入范围值
- swift - 进入屏幕时如何自动播放音频
- c++ - 为什么将大的正数作为负数存储在计算机内存中?
- swiftui - 小部件正确更新数据
- powerbi - Power Query 表转换
- python - 如果不存在,如何检查索引中是否存在键(last_password_changed_at),使用python将帐户索引中的“字段”更新为当前日期
- mysql - 当日期保存在字符串字段中而不是浮动时间戳时,如何对数据集执行大于操作
- c# - 如何在 asp.net mvc 上使用自动完成功能
- solr - 如何从 solr 查询中获取 nextcursorvalue
- python - UUID 在 rest-framework 中显示为整数