Stripe:使用一次性令牌向客户收取属性费用

时间:2016-06-14 11:41:42

标签: stripe-payments

我很确定这是一个基本问题,但我无法在文档或Google上找到答案。

我试图将费用归咎于客户。 所以,我正在创建一个一次性令牌来为卡充电,但我想弄清楚如何将这笔费用连接到我已经创建的客户。假设客户不想使用以前存储的信用卡。这是我试图做的,但是它返回了一个错误,因为Stripe认为我正在试图向客户和卡充电(这可能是我告诉它要做的,这里)。

$charge = \Stripe\Charge::create(array(
  "amount" => $product_price, // amount in cents, again
  "currency" => "usd",
  "customer" => $customer_id,
  "source" => $token,
  "description" => "Example charge"
));

有人会如何将一次性代币费用附加给客户?

2 个答案:

答案 0 :(得分:1)

在创建费用后,您将无法将已创建的费用归因于客户。同样,一旦令牌被用于收费,您将无法再次使用它。相反,您需要创建一个客户对象,将未使用的令牌附加为source,然后通过传递customer参数来创建费用。这里有一个例子: https://stripe.com/docs/charges#saving-credit-card-details-for-later

答案 1 :(得分:0)

  

对于许多年后通过搜索找到的人

可以通过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,然后将返回的对象(source.id)的ID传递到您的后端,然后可以使用它来创建与客户相关的费用

PHP:

$charge = \Stripe\Charge::create([
  'amount' => 1099,
  'currency' => 'eur',
  'customer' => 'cus_AFGbOSiITuJVDs',
  'source' => 'src_18eYalAHEMiOZZp1l9ZTjSU0',
]);

Ruby:

charge = Stripe::Charge.create({
  amount: 1099,
  currency: 'eur',
  customer: 'cus_AFGbOSiITuJVDs',
  source: 'src_18eYalAHEMiOZZp1l9ZTjSU0',
})