2013-11-27 20 views
24

カスタマーオブジェクトはStripe.comに多数のカードを持つことができます。あなたはどのようにして既存のカードに請求しますか?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 

答えて

37

私はこれを理解しました。既存のカードトークンで

デフォルトのクレジットカード以外の特定のクレジットカード顧客を、顧客に送るトークンだけでなく

 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}" 
    ) 
+1

おかげで、これはドキュメントで明らかにされていませんが、これは(PHP)にも私のために働きました。 – Jazzy

+3

ここはpythonと同じです。 card =の代わりにsource = existing_card_idを設定することもできます。 –

+1

@Jason:これにPHPコードを提供できますか? – user1012181

6

MEこの回答助けが充電のために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; 
関連する問題