2015-03-09 2 views
14

Wenn Streifen mit im Live-Modus erhalte ich diese PHP-Fehler:Streifen: No such Token .. ein ähnliches Objekt existiert im Testmodus, sondern eine Live-Modus-Taste wurde verwendet, um diesen Antrag zu stellen

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

alles funktioniert gut im Stripe-Test-Modus, und ich habe zu einem Live-API-Schlüssel gewechselt.

Ich schaffe einen neuen Kunden wie folgt aus:

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

ich viele Stunden, aber ich immer noch diesen Fehler gewartet haben. Wie kann ich es reparieren?

+0

Scheint Ihr Konto nicht aktiviert ist, oder Sie verwenden nicht die richtiger geheimer Schlüssel. Hast du sie kontaktiert? – RST

+2

Dies liegt daran, dass Sie den Publishable-API-Schlüssel 'pk_live_XXX' nicht geändert haben und immer noch den Test 'pk_test_YYY' – koopajah

+0

dank Ihrer Antwort verwenden, aber mein Konto ist aktiviert und ich habe sowohl den geheimen als auch den Publishable-API-Schlüssel geändert – Julien

Antwort

6

Es klingt, als ob Sie versuchen, einen Kunden zu belasten, der auf Ihrem Testkonto und nicht auf Ihrem Live-Konto vorhanden ist. Stellen Sie sicher, dass Sie mit Ihren Live-Schlüsseln einen neuen Kunden erstellen und den Token verwenden, um die Gebühr zu erstellen.

+0

meine Frage ist von einem Jahr für jetzt datiert, habe ich vergessen, es zu schließen, ja das war ein blödes Problem, ich benutzte den Testschlüssel – Julien

+0

Keine Sorge. Ich bin während der Entwicklung mehrmals auf dieses Problem gestoßen, haha. Und selbst lange Zeit danach, als ich Prod-Server kopierte, um einige Tests mit mehr und echten Daten durchzuführen, als die minimalen Testdaten, die ich zur Verfügung hatte. Wir haben mich ein wenig rausgeschmissen, um herauszufinden, warum meine Stripes nicht funktionierten, wenn ich die richtigen Schlüssel hatte ... weil die Kundendaten natürlich mit einem Live-Key erstellt wurden, also konnte ich nicht machen Sie irgendwelche Operationen mit meinen Testschlüsseln. –

2

Sehen Sie sich das JavaScript an, das den öffentlichen Test-API-Schlüssel zum Abrufen des Tokens verwendet. Ändern Sie es in Ihren öffentlichen Live-API-Schlüssel.

Es sollte so etwas wie dieses

Stripe.setPublishableKey('pk_test_axEdfdasdfasfsadfsad'); 
1

Sie haben zwei verschiedene Schlüssel in Ihrem Streifen Konto sein. Bitte stellen Sie sicher, Sie haben beide Testschlüssel mit Live-Tasten ersetzen:

Live Sectret Schlüssel: sk_live_00000000000000000000000

Live veröffentlichen Schlüssel: pk_live_00000000000000000000000

1- Geheimschlüssel ersetzt in allen PHP Skripte, wo geladen werden

\Stripe\Stripe::setApiKey("sk_live_00000000000000000000"); 

2- Publish-Schlüssel wird in Ihrer .JS-Datei ersetzen, durch die Sie vali sind Da Ihre Zahlungsmethode dieselbe Datei enthält, wird auch nach erfolgreicher Validierung ein Token erstellt. Es kann stripe.js nennen oder andere Namen müssen Sie diese Datei finden, wird es haben Schlüssel veröffentlichen, die Sie von Test ersetzen müssen leben:

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(); 
       } 
      } 
Verwandte Themen