尝试向客户收取服务费用时出现此错误。
该客户没有任何旧版保存的付款详细信息,但附加了付款方式。使用付款意图而不是创建费用:https://stripe.com/docs/ payments/ payment-intents/migration
这是代码
$charge = [
'amount' => $totalCost * 100,
'currency' => StripeHelper::CURRENCY,
'description' => "recurring-" . $bookingid . "-C" . $weeks,
'customer' => $source,
"transfer_group" => "$bookingid-$minderId",
];
try {
$charge = $this->stripe->charges->create($charge);
} catch (\Stripe\Error\Api $ex) {
Yii::error($ex->getMessage());
return ['error' => $ex->getMessage(), 'code' => $ex->getCode()];
} catch (\Stripe\Error\InvalidRequest $ex) {
Yii::error($ex->getMessage());
return ['error' => $ex->getMessage(), 'code' => $ex->getCode()];
} catch (\Exception $ex) {
Yii::error($ex->getMessage());
return ['error' => $ex->getMessage(), 'code' => $ex->getCode()];
}
return $charge;
当我之前执行此操作大约 20 到 30 次时,它成功处理了费用。但是,现在它显示上述错误。
非常感谢您帮助解决此问题。
根据错误消息,您的客户附加了 PaymentMethod,但没有令牌或来源。对于上下文,Charges API 不支持使用 PaymentMethod 对象(即带有前缀
pm_
)。您可以使用 https://stripe.com/docs/api/ payment_methods/customer_list 查看客户附加了哪些付款方式。
就像错误消息提到的那样,如果您使用 PaymentMethods,则应该使用 PaymentIntents API:https://stripe.com/docs/api/ payment_intents/create。 PaymentIntents API 还向后兼容令牌/来源:https://stripe.com/docs/ payments/ payment-methods/transitioning#compatibility