web-dev-qa-db-ja.com

Stripe.comで顧客の特定のカードに請求する方法

顧客オブジェクトは、Stripe.comに多くのカードを持つことができます。既存のカードにどのように請求しますか?

私はいくつかのことを試しましたが、ストライプAPIは、その顧客に新しいカードを作成するだけでなく、古い顧客トークンと新しいカードトークンを取得するときに何らかの理由で失敗します。だから私はすべての顧客のカードを取得し、ラジオボタンで1つを選択し、選択したカードのトークンを請求に提出するというルートをたどりました

      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
26
ajbraus

私はこれを理解しました。

既存のカードトークンでは、カスタマートークンも送信する必要があります

     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}"
      )
43
ajbraus

この回答は、デフォルトのクレジットカード以外の特定のクレジットカードの顧客に請求するために、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;
8
ciuccoa