如何通过 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 向客户收取特定卡的费用的主要内容,如果未能解决你的问题,请参考以下文章

通过 API 添加 Stripe 订阅

Laravel Stripe Cashier 删除客户

Stripe:即使设置了 CancelAt 字段,也会向客户收取全额费用

Stripe - 支付订单错误:无法向没有活动卡的客户收费

为啥 Stripe.com 返回错误 (402) 需要付款?

Paypal 自适应支付 - 审计跟踪