我很确定这是一个基本问题,但我无法在文档或谷歌上找到答案。
我试图将收费归功于客户。所以,我正在创建一个一次性令牌来为卡充电,但我想弄清楚如何将这笔费用连接到我已经创建的客户。假设客户不想使用以前存储的信用卡。这是我试图做的,但它返回一个错误,因为Stripe认为我正在试图向客户和卡充电(这可能是我告诉它要做的,这里)。
$charge = \Stripe\Charge::create(array(
"amount" => $product_price, // amount in cents, again
"currency" => "usd",
"customer" => $customer_id,
"source" => $token,
"description" => "Example charge"
));
如何将一次性令牌费用附加给客户?
在创建费用后,您将无法将已创建的费用归因于客户。同样,一旦令牌被用于收费,您将无法再次使用它。相反,您需要创建一个客户对象,将未使用的令牌作为source
附加,然后通过传递customer
参数来创建费用。这里有一个例子:https://stripe.com/docs/charges#saving-credit-card-details-for-later
对于那些多年后通过搜索找到这个的人
可以通过Stripe进行一次性使用,并将其归于客户,而无需将该卡保存为客户的可重复使用的来源 - https://stripe.com/docs/stripe-js/reference#stripe-create-source。
它是通过在Stripe.js或Elements中使用Source API实现的,也就是说,通过创建一个“独立”source
,而不是卡token
- https://stripe.com/docs/stripe-js/reference#stripe-create-source
在对卡进行标记时,这是一个必须附加到客户的可重用源,在创建可用于一次性使用费的源时,您可以选择将其附加到客户进行内部跟踪。此来源不能再用于任何未来的交易。
使用Stripe.js或Elements中的stripe.createSource
,然后将返回对象的id(source.id
)传递给后端,然后您可以使用它来创建与Customer关联的费用。
PHP:
$charge = \Stripe\Charge::create([
'amount' => 1099,
'currency' => 'eur',
'customer' => 'cus_AFGbOSiITuJVDs',
'source' => 'src_18eYalAHEMiOZZp1l9ZTjSU0',
]);
红宝石:
charge = Stripe::Charge.create({
amount: 1099,
currency: 'eur',
customer: 'cus_AFGbOSiITuJVDs',
source: 'src_18eYalAHEMiOZZp1l9ZTjSU0',
})