2015-12-22 12 views
22

W trybie testowym, gdy tworzę nowego klienta i próbuje płatności, mam ten błąd.Płatności w paski: Otrzymywanie błędów jako klient _ ***** nie ma połączonej karty z tokiem identyfikacyjnym _ *****

cus_7Zz2BCnybIZLGw Klient nie posiada powiązanego kartę ID tok_17Kp8GAwLkQPB7OqrrM73VVI

Im liczba użyciu karty: 4242424242424242 exp_month: 12 exp_year 2016

Odpowiedź powrót jest

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. 
) 

Dane opłaty wejściowej to ,

$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 
      ); 

Odpowiedz

47

Istnieją trzy różne sposoby: create a charge

  • tylko parametru source. W tym przypadku source musi być identyfikatorem token ID (utworzonym przez Checkout lub Stripe.js), tj. Ciągiem rozpoczynającym się od tok_.

  • tylko z parametrem customer. W tym przypadku customer musi być identyfikatorem customer, tj. Ciągiem rozpoczynającym się od cus_. Domyślna karta klienta zostanie obciążona.

  • z parametrami customer i source. W tym przypadku, customer musi być identyfikatorem klienta, jak w poprzednim przypadku, ale source powinien być identyfikatorem karty, tj. Ciągiem rozpoczynającym się od card_. Obiekt karty powinien należeć do klienta.

W przypadku, jesteś przechodzącą symboliczny identyfikator w parametrze source wraz z identyfikatorem klienta w parametrze customer.

Jeśli jest to nowa karta, najpierw należy użyć tokena do klienta create a card, a następnie utworzyć opłatę z identyfikatorem karty. Jeśli karta była już zapisana dla tego klienta, nie musisz zbierać danych karty ponownie (a tym samym nie musisz w ogóle tworzyć tokena).

+1

Idealnie! Bardzo dziękuję Ywain :) – Sree

+0

@Więc co z używaniem tokena z Apple Pay? Wygląda na to, że nie można powiązać transakcji Apple Pay z kontem klienta i za każdym razem używać arkusza cenowego i interfejsu TouchID. Albo zmieniam token na kartę, a potem zachowuje się jak przechowywana karta, a nie jak Apple Pay, albo za każdym razem otrzymuję nowy token i nie ma historii opłat dołączonej do konta klienta. – emkman

+2

@emkman: Przypuszczam, że za każdym razem możesz użyć Apple Pay do utworzenia nowego tokena, dołączyć token do istniejącego obiektu klienta, utworzyć opłatę za pomocą obiektu klienta, a następnie usunąć kartę z tokenu Apple Pay. W ten sposób możesz użyć Apple Pay do uwierzytelnienia każdej transakcji i nadal przechowywać historię opłat na obiekcie klienta. – Ywain

0

Ustawiłem "SourceToken" w StripeCustomerCreateOptions ORAZ "SourceTokenOrExistingSourceId" w StripeChargeCreateOptions (SourceToken) dla mojego klienta StripeCustomer.

Usunięcie przypisania obiektu SourceTokenOrExistingSourceId rozwiązało problem związany z plikiem StripeCharge, ponieważ token utworzył sprzeczne identyfikatory.

Powiązane problemy