2017-09-10 3 views
0

Ich habe Stripe funktioniert super. Nach der Spende eines Kunden wird ein neues Abonnement erstellt, und es funktioniert hervorragend - es sei denn, Stripe erkennt die E-Mail und sagt: "Geben Sie den Bestätigungscode ein."Stripe Checkout - Abonnement Problem mit Recognized Stripe Benutzer

Wenn der Kunde das tut, wird aus irgendeinem Grund kein neues Abonnement erstellt und der Kunde wird nicht belastet.

Hier ist meine Ladungs ​​monthly.php

<?php 

require_once('init.php'); 
// Set your secret key: remember to change this to your live secret key in production 
// See your keys here https://dashboard.stripe.com/account/apikeys 
\Stripe\Stripe::setApiKey("sk_test_**************"); 

// Get the credit card details submitted by the form 
$token = $_POST['stripeToken']; 
$email = $_POST['stripeEmail']; 
$amount = $_POST['amount']; 
$finalamount = $amount * 100; 
$dollars = ".00"; 
$plan = "/month"; 
$dash = " - "; 
$monthlyplan = $amount .$dollars .$plan .$dash .$email; 


//Create monthly plan 
$plan = \Stripe\Plan::create(array(
    "name" => $monthlyplan, 
    "id" => $monthlyplan, 
    "interval" => "month", 
    "currency" => "usd", 
    "amount" => $finalamount, 
)); 


// Create a Customer 
$customer = \Stripe\Customer::create(array(
    "source" => $token, 
    "description" => "MONTHLY DONATION", 
    "plan" => $monthlyplan, 
    "email" => $email,) 
); 


?> 

Irgendwelche Ideen, warum, wenn Streifen der Benutzer erkennt und er ist „angemeldet“ es mir nicht erlauben, ein Abonnement zu erstellen?

Im Stripe log, ich erhalten diese 400-Fehler:

{ 
    "error": { 
    "type": "invalid_request_error", 
    "message": "Plan already exists." 
    } 
} 

Aber es ist auf keinen Fall ein Plan erstellt ... ah!

+0

Ich bin mir nicht sicher, was passiert! Sie haben gesagt, dass Sie beim Erstellen des Abonnements Probleme haben. Der mitgelieferte Code dient jedoch zum Erstellen von Plan und Kunden. Und die Fehlermeldung lautete: "Plan existiert bereits", obwohl die ID des Plans mit dem vorhandenen Plan gemäß Nachricht übereinstimmt! – Zico

Antwort

1

Der Grund Ihre Anfrage fehlschlägt, weil, wenn ein Benutzer mit der gleichen E-Mail-Adresse kommt zurück und will für den gleichen Plan unterzeichnen, haben Sie bereits mit diesem Namen einen bestehenden Plan,

$monthlyplan = $amount .$dollars .$plan .$dash .$email;

, so dass Ihr Anruf an \Stripe\Plan::create einen Fehler zurückgibt und den Rest Ihrer Anrufe hier fehlschlägt.

Sie könnten Ihrer Plan-ID etwas wie eine eindeutige ID oder Zeit hinzufügen.

http://php.net/manual/en/function.time.php http://php.net/manual/en/function.uniqid.php

Einige andere Möglichkeiten, dass Leute dies in der Regel handhaben sind:

  • erstellen einzigen Plan für $ 1 und dann die Menge anzupassen, wenn Ihr Abonnement zu schaffen. Also würde ein monatlicher Plan für 1 € mit einer Menge von 100 $ 100 Monat kosten.

  • Speichern Sie den Betrag, den ein Kunde innerhalb Ihrer Anwendung bezahlen wird. Abonnieren Sie Ihren Kunden einen $ 0/Monatsplan. Verwenden Sie Webhooks, um nach invoice.created Ereignissen zu horchen. Lassen Sie Ihren Webhook-Handler jeden Monat ein Rechnungsposten für das Guthaben hinzufügen.