Wenn Sie Kartendaten sammeln über Stripe Checkout, Stripe sendet Ihnen ein Karten-Token zurück mit einer ID wie dieser tok_XXX
.
Das Karten-Token ist nur der erste Schritt in der Verarbeitung einer Zahlung. Sie müssen dann dieses Token an Ihren Server senden, wo Sie die Gebühr erstellen API verwenden, um eine Gebühr zu erstellen und eine Zahlung zu erhalten, oder Sie speichern die Karte für einen Kunden mit dem Create Customer API.
In beiden Fällen kennt Stripe die E-Mail-Adresse des Kunden nicht und wird nicht vom Token übernommen. Sie müssen es explizit an die API senden, wenn Sie diese E-Mail-Adresse verwenden möchten.
Wenn Sie einen Kunden erstellen, übergeben Sie ihn im Parameter email
beim Erstellen. Diese E-Mail wird dann verwendet, um E-Mail-Quittungen an diesen Kunden zu senden, wenn Sie die gespeicherte Karte aufladen.
Wenn Sie eine Gebühr sofort erstellen, ohne zuerst einen Kunden zu erstellen, müssen Sie Stripe explizit mitteilen, dass der E-Mail-Beleg an diese Adresse gesendet werden soll. Dies geschieht, indem der Parameter receipt_email
in der API wie dokumentiert here übergeben wird.
Das letzte Problem mit Ihrem Code ist, dass, obwohl Stripe sendet Ihnen die E-Mail-Adresse des Kunden zurück in den Rückruf token
Sie nicht im Code verwenden. Das bedeutet, dass Sie, sobald das Token Ihren Server erreicht, keine E-Mail-Adresse mehr haben und Ihr Code einfach den leeren Wert ignorieren muss.
Sie wollen, um Ihren Handler zu ändern, so etwas zu tun:
stripeHandler = StripeCheckout.configure({
key: "{{stripe_key}}",
image: '/static/img/framework/logo.png',
token: function(token) {
$("#stripe_token").val(token.id);
$("#stripe_email").val(token.email);
$("#payment_form").submit()
}
});
Dies setzt voraus, dass das Formular bereits ein zweites verstecktes Eingabefeld mit der ID hat stripe_email
, wo die E-Mail einzustellen. Sie können ein vollständiges Beispiel mit PHP here sehen.
Eine andere Lösung wäre, das Retrieve Token API serverseitig basierend auf der Token-ID aufzurufen, um die E-Mail in der email
Eigenschaft andernfalls zu erhalten.