2015-12-22 13 views
22

In modalità test quando creo un nuovo cliente e provo a pagare, ho ricevuto questo errore.Pagamento righe: errore come cliente cus _ ***** non ha una carta collegata con ID tok _ *****

cus_7Zz2BCnybIZLGw cliente non ha una carta legata con ID tok_17Kp8GAwLkQPB7OqrrM73VVI

Im numero utilizzando carta: 4242424242424242 exp_month: 12 exp_year 2016

La risposta di ritorno è,

Array 
(
    [charge_status] => 
    [error_info] => Array 
     (
      [type] => invalid_request_error 
      [message] => Customer cus_7Zz2BCnybIZLGw does not have a linked card with ID tok_17Kp8GAwLkQPB7OqrrM73VVI. 
      [param] => card 
      [code] => missing 
     ) 

    [message] => Customer cus_7Zz2BCnybIZLGw does not have a linked card with ID tok_17Kp8GAwLkQPB7OqrrM73VVI. 
) 

I dati di caricamento in ingresso sono ,

$customer = Stripe_Customer::create(array(
     'account_balance' => 100, 
     'source' => $token, 
     'email' => strip_tags(trim($email)) 
    ) 
); 

$customer_id = $customer->id; 

$charge = array(
       'card'   => 4242424242424242, 
       'amount'  => 100, 
       'currency'  => 'cad', 
       'receipt_email' => [email protected], 
       'description' => 'my payment', 
       'customer'  => $customer_id 
      ); 

risposta

47

Ci sono tre modi diversi per create a charge:

  • solo con il parametro source. In questo caso, source deve essere un ID token (creato da Checkout o Stripe.js), ad esempio una stringa che inizia con tok_.

  • con il parametro customer. In questo caso, customer deve essere un ID customer, ad esempio una stringa che inizia con cus_. La carta predefinita del cliente verrà addebitata.

  • con entrambi i parametri customer e source. In questo caso, customer deve essere un ID cliente come nel caso precedente, ma source deve essere un ID di scheda, ad esempio una stringa che inizia con card_. L'oggetto della carta dovrebbe appartenere al cliente.

Nel tuo caso, si sta passando un ID token nel parametro source insieme a un ID cliente nel parametro customer.

Se si tratta di una nuova scheda, è necessario prima utilizzare il token su create a card sul cliente, quindi creare il pagamento con l'ID della carta. Se la carta è già stata salvata per questo cliente, non è necessario raccogliere nuovamente i dati della carta (e quindi non è necessario creare alcun token).

+1

Perfetto! Grazie mille Ywain :) – Sree

+0

@Ywain e quando si utilizza un token Apple Pay? Sembra che non sia possibile associare le transazioni di Apple Pay a un account cliente e chiedere loro di utilizzare ogni volta il foglio prezzi e l'interfaccia utente TouchID. O accendo il token su una carta e poi si comporta come una carta memorizzata e non come Apple Pay, o ricevo un nuovo token ogni volta e non è presente alcuna cronologia di addebiti sull'account del cliente. – emkman

+2

@emkman: Suppongo che potresti utilizzare Apple Pay per creare ogni volta un nuovo token, associare il token all'oggetto cliente esistente, creare il costo utilizzando l'oggetto cliente e quindi eliminare la carta dal token Apple Pay. In questo modo puoi utilizzare Apple Pay per autenticare ogni transazione e mantenere comunque una cronologia degli addebiti sull'oggetto del cliente. – Ywain

0

Avevo impostato "SourceToken" in StripeCustomerCreateOptions E "SourceTokenOrExistingSourceId" in StripeChargeCreateOptions (SourceToken) per il mio StripeCustomer.

La rimozione del compito di SourceTokenOrExistingSourceId ha risolto il problema per il mio StripeCharge, poiché il token ha creato ID in conflitto.

Problemi correlati