2013-11-27 3 views
24

Ein Kundenobjekt kann in Stripe.com viele Karten enthalten. Wie berechnen Sie eine vorhandene Karte?So laden Sie eine bestimmte Karte bei einem Kunden mit Stripe.com

Ich habe ein paar Dinge ausprobiert, aber die Stripe-API aus irgendeinem Grund borkt, wenn man ein altes Kunden-Token und ein neues Karten-Token bekommt, anstatt nur eine neue Karte für diesen Kunden zu erstellen. Also habe ich die Strecke gegangen alle Kundenkarten abrufen, dann eins nach dem Optionsfeld auswählen, dann Absenden des Token von der gewählten Karte in eine Ladungs ​​

 charge = Stripe::Charge.create(
     :amount => "#{@subscription.price}", 
     :currency => "usd", 
     :card => params[:existing_card_id], 
     :description => "Subscription for #{current_user.email}" 
    ) 

aber ich habe den Fehler

Stripe::InvalidRequestError: Invalid token id: card_24j3i2390s9df 

Antwort

37

Ich habe das herausgefunden.

Bei bestehenden Karten Token haben Sie Token als auch

in den Kunden senden
 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

Dank ist dies nicht offensichtlich in der Dokumentation, aber das war auch für mich (PHP). – Jazzy

+3

das gleiche hier in Python. bemerkt, dass Sie auch source = existing_card_id anstelle von card = setzen können. –

+1

@Jason: Können Sie den PHP-Code für diesen bereitstellen? – user1012181

6

Diese Antwort Hilfe die gleiche Lösung in PHP für Ladung eine bestimmte Kreditkartenkunden, andere als die Standardkreditkarte ME gelten . Hier werden die Stücke:

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; 
Verwandte Themen