Utiliser Payment Element avec différents prestataires
Découvrez comment collecter des informations de carte bancaire avec le composant Payment Element, et les utiliser avec un prestataire de services de paiement tiers.
Utilisez le composant Payment Element pour créer un tunnel de paiement personnalisé qui vous permet de collecter les informations de la carte bancaire, de créer un PaymentMethod et de transmettre le moyen de paiement à un prestataire tiers.
Demander un accès
Pour obtenir un accès au service de transfert de Stripe, contactez le service d’assistance Stripe.
Créer un PaymentMethodCôté client
Utilisez le composant Payment Element pour collecter les informations de paiement. Si vous n’avez pas intégré Payment Element, découvrez comment démarrer. Quand le client envoie votre formulaire de paiement, appelez stripe.createPaymentMethod pour créer un objet PaymentMethod. Transmettez l’ID de PaymentMethod à l’endpoint ForwardingRequest sur votre serveur.
Créer une ForwardingRequest
Contactez le service d’assistance Stripe pour configurer votre endpoint de destination et commencer à acheminer des transactions. Envoyez les informations de carte à cet endpoint de test avant de connecter votre intégration à votre prestataire de services de paiement tiers.
const stripe = require("stripe")(
); const express = require('express'); const app = express(); app.set('trust proxy', true); app.use(express.json()); app.use(express.static(".")); app.post('/create-forwarding-request', async (req, res) => { try { const forwardedReq = await stripe.forwarding.requests.create( { payment_method: req.body.paymentMethodId, url: '{{DESTINATION_ENDPOINT}}', request: { headers: [{ name: 'Destination-API-Key', value: '{{DESTINATION_API_KEY}}' },{ name: 'Destination-Idempotency-Key', value: '{{DESTINATION_IDEMPOTENCY_KEY}}' }], body: JSON.stringify({ "amount": { "currency": "USD", "value": 1099 }, "reference": "Your order number", "card": { "number": "", "exp_month": "", "exp_year": "", "cvc": "", "name": "", } }) }, replacements: ['card_number', 'card_expiry', 'card_cvc', 'cardholder_name'], } ); if (forwardedReq.response_details.status != 200) { // Return error based on third-party API response code } else { // Parse and handle the third-party API response const forwardedResult = JSON.parse(forwardedReq.response_details.body); res.json({ status: forwardedReq.response_details.status }); } } catch (err) { res.json({ error: err }); } }); app.listen(3000, () => { console.log('Running on port 3000'); });"sk_test_4eC39HqLyjWDarjtT1zdp7dc"
Traiter la réponseCôté client
Une fois la requête envoyée, vous devez traiter la réponse.
const handleServerResponse = async (response) => { if (response.error) { // Show error on payment form } else if (response.status != 200) { // Show error based on response code } else { // Parse the response body to render your payment form } }