2015-03-09 18 views
14

Podczas korzystania Stripe w trybie podglądu na żywo dostaję ten błąd PHP:Stripe: Nie ma takiego tokena .. podobny obiekt istnieje w trybie testowym, ale klucz na żywo tryb użyto, aby ten wniosek

No such token tok_fgfhn.. a similar object exists in test mode, but a live mode key was used to make this request

wszystko działa dobrze w trybie testowym Stripe, i przełączyłem się na klucz API na żywo.

utworzyć nowego klienta I tak:

$token = $_POST['stripeToken']; 
    $email = $_POST['email']; 

$customer = \Stripe\Customer::create(array(
     'email' => $email, 
     'card' => $token 
    )); 

    //charge for user ads 
    $charge = \Stripe\Charge::create(array(
     'customer' => $customer->id, 
     'amount' => $amount, 
     'currency' => 'eur' 
    )); 

Czekałam wiele godzin, ale ja wciąż dostać ten błąd. Jak mogę to naprawić?

+0

Wydaje Twoje konto nie jest aktywna, czy nie są za pomocą poprawny tajny klucz. Czy skontaktowałeś się z nimi? – RST

+2

Wynika to z faktu, że nie zmieniono klucza API do publikowania "pk_live_XXX" i nadal używasz testu "pk_test_YYY" – koopajah

+0

dziękuję za odpowiedź, ale moje konto zostało aktywowane i zmieniono zarówno klucz tajny, jak i klucz API do opublikowania – Julien

Odpowiedz

6

Wygląda na to, że próbujesz obciążyć klienta, który istnieje na koncie testowym, a nie na Twoim koncie na żywo. Upewnij się, że tworzysz nowego klienta za pomocą kluczy bieżących i używasz tokena do utworzenia opłaty.

+0

moje pytanie jest datowane z roku na rok, zapomniałem go zamknąć, tak, to było głupi problem, użyłem klucza testowego – Julien

+0

Bez obaw. Wpadłem na ten problem kilka razy podczas haha ​​rozwoju. I jeszcze długo po tym, jak duplikowałem serwery prod, by przeprowadzić testy z większą liczbą rzeczywistych danych, zamiast minimalnych danych testowych, które miałem dostępne. Wyrzuciło mnie trochę, próbując zrozumieć, dlaczego żaden z moich pasków nie działa, kiedy miałem odpowiednie klucze ... to dlatego, że dane prod miały identyfikatory klientów utworzone za pomocą klucza na żywo, oczywiście, więc nie mogłem wykonaj dowolne operacje na nim za pomocą moich kluczy testowych. –

2

Zajrzyj do javascript używającego publicznego klucza testowego do pobrania tokena. Zmień go na publiczny publiczny klucz API.

To powinno być coś takiego

Stripe.setPublishableKey('pk_test_axEdfdasdfasfsadfsad'); 
1

Będziesz mieć dwa różne klucze na koncie paskiem. Uprzejmie upewnij się, że wymienić oba klawisze testowych z żywymi klawiszy:

żywo kluczowych sectret: sk_live_00000000000000000000000

żywo klucz rozpatrzenie: pk_live_00000000000000000000000

1- tajny klucz zastąpi w całym swoim php skrypty, w których ładuje się

2- Klucz publikacji zostanie zastąpiony w pliku .JS, przez który jesteś vali datując formularz płatności ten sam plik tworzy także token po pomyślnym zatwierdzeniu. Może to wywołać stripe.js lub inna nazwa może trzeba zlokalizować ten plik będzie miał klucz, który trzeba wymienić z testu żyć rozpatrzenie:

Stripe.setPublishableKey('pk_live_0000000000000'); //this would be publish key 

      function stripeResponseHandler(status, response) { //token function 
       if (response.error) { 
        // re-enable the submit button 
        $('.submit-button').removeAttr("disabled"); 
        // show hidden div 
        document.getElementById('a_x200').style.display = 'block'; 
        // show the errors on the form 
        $(".payment-errors").html(response.error.message); 
       } else { 
        var form$ = $("#payment-form"); 
        // token contains id, last4, and card type 
        var token = response['id']; 
        // insert the token into the form so it gets submitted to the server 
        form$.append("<input type='hidden' name='stripeToken' value='" + token + "' />"); 
        // and submit 
        form$.get(0).submit(); 
       } 
      }