Serverintegration
@capacitor-community/stripe akzeptiert ausschließlich für den Client sichere Werte. Ihr Backend erstellt PaymentIntents, SetupIntents, Customers und temporäre Schlüssel mit dem geheimen Stripe-Schlüssel. Das Plugin ruft die geheime API niemals auf.
Den geheimen Schlüssel auf den Server beschränken
Belassen Sie sk_live_... und sk_test_... auf dem Server. Liefern Sie ausschließlich den veröffentlichbaren Schlüssel an die Anwendung aus, über Stripe.initialize oder Android-Google-Pay-Metadaten. Betten Sie den geheimen Schlüssel nicht in Capacitor-Konfiguration, Versionsverwaltung oder Client-Protokolle ein.
Client Secrets
Erstellen Sie einen PaymentIntent für eine sofortige Zahlung oder einen SetupIntent, um eine Zahlungsmethode für später zu speichern. Geben Sie das Client Secret des Intents an die Anwendung zurück, nicht den geheimen Schlüssel und nicht eine direkte Charge.
Temporäre Customer-Schlüssel sind optional. Verwenden Sie sie mit einer Customer-ID, wenn PaymentSheet oder PaymentFlow gespeicherte Zahlungsmethoden anzeigen soll. Wenn Sie customerId an das Plugin übergeben, müssen Sie auch customerEphemeralKeySecret übergeben. Ein PaymentIntent ohne Customer ist gültig.
Ordnen Sie Serverfelder den Plugin-Optionen zu:
| Serverfeld | Plugin-Option |
|---|---|
paymentIntent |
paymentIntentClientSecret |
setupIntent |
setupIntentClientSecret |
ephemeralKey |
customerEphemeralKeySecret |
customer |
customerId |
Antwortstrukturen
PaymentIntent mit Customer:
{
"paymentIntent": "pi_..._secret_...",
"ephemeralKey": "ek_...",
"customer": "cus_..."
}
SetupIntent mit Customer:
{
"setupIntent": "seti_..._secret_...",
"ephemeralKey": "ek_...",
"customer": "cus_..."
}
PaymentIntent ohne Customer:
{
"paymentIntent": "pi_..._secret_..."
}
Apple Pay verwendet ein PaymentIntent-Client-Secret. Google Pay verwendet im Web ein PaymentIntent-Client-Secret. Android akzeptiert über die historisch benannte Option paymentIntentClientSecret auch ein SetupIntent-Client-Secret. Native PaymentSheet- und PaymentFlow-Versionen akzeptieren beide Intent-Secrets, mit oder ohne Customer-Felder. Die aktuelle Web-PaymentSheet-Version akzeptiert nur PaymentIntents; Web-PaymentFlow akzeptiert beide Intent-Typen.
Webhooks als maßgebliche Quelle
Completed auf dem Gerät ist ein UI-Signal. Es beweist nicht, dass Stripe Geld eingezogen hat. Erfüllen Sie Bestellungen auf Grundlage verifizierter Stripe-Webhooks wie payment_intent.succeeded oder setup_intent.succeeded.
Behandeln Sie Canceled als Schließen des Sheets durch den Kunden. Behandeln Sie Failed und FailedToLoad als Fehler. Erstellen Sie vor einem erneuten Versuch einen neuen Intent, wenn der vorherige nicht mehr bestätigt werden kann.
Der offizielle Demo-Server, der die obigen Strukturen zurückgibt, befindet sich unter capacitor-community/stripe/demo/server.