如何通过 Stripe.com 向客户收取特定卡的费用
Posted
技术标签:
【中文标题】如何通过 Stripe.com 向客户收取特定卡的费用【英文标题】:How to charge a particular card on a customer with Stripe.com 【发布时间】:2013-12-13 07:45:16 【问题描述】:一个客户对象在 Stripe.com 中可以有很多张卡片。您如何从现有卡中收费?
我尝试了一些方法,但由于某种原因,条带 API 在获取旧客户令牌和新卡令牌时出现问题,而不仅仅是在该客户上创建新卡。所以我采取了检索所有客户卡的路线,然后通过单选按钮选择一张,然后将所选卡的令牌提交到费用中
charge = Stripe::Charge.create(
:amount => "#@subscription.price",
:currency => "usd",
:card => params[:existing_card_id],
:description => "Subscription for #current_user.email"
)
但我得到了错误
Stripe::InvalidRequestError: Invalid token id: card_24j3i2390s9df
【问题讨论】:
【参考方案1】:这个答案有助于我在 php 中应用相同的解决方案来向特定信用卡客户收费,而不是默认信用卡。这里是碎片:
JSON:
"charge":
"amount":122,
"currency":"usd",
"customer":"cus_7hVsgytCc79BL7",
"card":"card_17SENFJ4sx1xVfmD8skoSjNs"
PHP
$item = $params->request->getJsonRawBody();
$new_charge = \Stripe\Charge::create(array(
"amount" => $this->ConvertAmount($item->charge->amount),
"currency" => $item->charge->currency,
"customer" => $item->charge->customer,
"card" => $item->charge->card
));
return $new_charge;
【讨论】:
【参考方案2】:我想通了。
对于现有的卡令牌,您还必须发送客户令牌
charge = Stripe::Charge.create(
:amount => "#@subscription.price",
:currency => "usd",
:customer => current_user.stripe_customer_id,
:card => params[:existing_card_id],
:description => "Subscription for #current_user.email"
)
【讨论】:
谢谢,这在文档中并不明显,但这也适用于我(PHP)。 在 python 中也一样。注意到你也可以设置 source=existing_card_id 而不是 card=。 根据文档我们必须发送 :source => card_id stripe.com/docs/api/ruby#create_charge以上是关于如何通过 Stripe.com 向客户收取特定卡的费用的主要内容,如果未能解决你的问题,请参考以下文章
Stripe:即使设置了 CancelAt 字段,也会向客户收取全额费用