尝试向客户收取服务费用时出现此错误。
此客户没有任何遗留的已保存付款详细信息,但附加了付款方法。请使用付款意向而不是创建费用: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次之前,它是成功地处理收费。然而,现在它显示上面提到的错误。
我将非常感谢您在解决这个问题上的帮助。
2条答案
按热度按时间ztyzrc3y1#
根据错误消息,您的客户已附加PaymentMethod,但未附加Token或Source。对于上下文,Charges API不支持使用PaymentMethod对象(即前缀为
pm_
)。您可以使用https://stripe.com/docs/api/payment_methods/customer_list查看客户附加的付款方法。就像错误消息中提到的那样,如果您使用的是PaymentMethods:https://stripe.com/docs/api/payment_intents/create,则应该使用PaymentIntents API。PaymentIntents API也向后兼容令牌/源代码:https://stripe.com/docs/payments/payment-methods/transitioning#compatibility
tjrkku2a2#
我联系了Stripe支持解决这个问题。
“此客户没有任何旧版保存的付款详细信息,但附加了付款方法。请使用付款意向而不是创建费用:https://stripe.com/docs/payments/payment-intents/migration."
他们提供了以下资料:
根据他们的说法,用于收费支付的API已被弃用。虽然它目前正在运行,但它不再被维护,并且遇到了许多问题,这就是发生此错误的原因。他们建议使用Payment Intents API,如请求中提供的文档中详细说明的那样:https://stripe.com/docs/payments/payment-intents/migration。