Intégration directe
Dans ce schéma, une boutique en ligne a sa propre page de paiement pour collecter les données de carte nativement via son site web.
D'abord, vous devriez vous abonner aux webhooks suivants (voir Webhooks pour les détails):
-
payment.succeeded- se produit quand un paiement réussit. -
payment.failed- se produit quand un paiement échoue.
("/payments" request) activate PG PG -->> PG: Create Payment PG -->> OS: "payment.created" webhook OS ->> PG: HTTP Code = 200 PG -->> OS: Response rect rgb(191, 223, 255) alt 3 DS is required OS -->> C: Redirect to ACS for 3DS verification C ->> PG: Confirm Payment end end PG -->> PG: Process payment PG -->> OS: "payment.succeeded" webhook OS ->> PG: HTTP Code = 200 rect rgb(191, 223, 255) opt Retrieving Payment status OS ->> PG: Retrieve a Payment
("/payments/{id}" request) PG -->> OS: Payment with "status=succeeded" end end deactivate OS deactivate PG
- Un client sélectionne un produit dans la boutique en ligne, puis clique sur Acheter.
- Le serveur de la boutique en ligne reçoit une demande d'achat et ouvre une page de paiement.
- Le client saisit les détails de sa carte sur la page de paiement de la boutique en ligne.
-
Le serveur de la boutique en ligne envoie une demande
/paymentsà la Payment Gateway pour créer un Payment (voir API Reference pour les détails). La demande devrait contenir le paramètreamount(le montant du paiement en unités monétaires mineures, par exemple en centimes) et le paramètrecurrency(code à trois lettres de la devise de paiement, selon ISO 4217). De plus, vous devriez passer soit le blocpaymentMethodavec les données de carte soit le paramètrestoredPaymentMethodId(l'identifiant d'une Stored Payment Method).Exemple de demande:
curl -X POST "https://dev.bpcbt.com/api2/payments" \ -H "X-Api-Key: 6HUXQFbeomV1zf5i8cgm5W8KfncENVEa5uh8RngB" \ -H "X-Version: 2023-10-31" \ -H "Content-Type: application/json" \ -d '{ "amount": 70000, "captureMethod": "automatic", "currency": "EUR", "customerDetails": { "address": { "city": "Test city", "country": "CY", "line1": "Test address1", "line2": "Test address2", "postalCode": "Test postal code", "state": "Test state" }, "email": "test@example.com", "name": "TEST CARDHOLDER", "phone": "+449998887766" }, "description": "Some description", "metadata": {}, "paymentMethod": { "type": "card", "card": { "cvc": "123", "expiryMonth": 12, "expiryYear": 2024, "holderName": "TEST CARDHOLDER", "number": "4444555511113333" } }, "paymentMethodOptions": { "card": { "threeDSecureMode": "automatic", "verify": false } }, "returnUrl": "https://mybestmerchantreturnurl.com/" }' Payment Gateway crée un Payment.
Payment Gateway envoie le webhook
payment.createdà la boutique en ligne.Le serveur de la boutique en ligne envoie
HTTP Code = 200en réponse.-
Payment Gateway envoie la réponse pour la demande
/payments.- Si la réponse contient le bloc
nextAction, cela signifie que 3-D Secure est requis. Les étapes 9 et 10 sont effectuées. - Si la réponse ne contient pas le bloc
nextAction, 3-D Secure n'est pas requis. Dans ce cas, les étapes 9 et 10 sont omises, passez à l'étape 11. - Si le paiement a réussi, la réponse contient
status=succeeded.
Exemple de réponse:
{ "id": "p_HbtjsyTuig5SWYufjsFeTNAX3WisQFUSvbroA1C48Y5XN8Pstcdw", "amount": 70000, "amountCapturable": 0, "amountReceived": 70000, "captureMethod": "automatic", "created": "2024-03-31T23:40:24Z", "currency": "EUR", "customerDetails": { "address": { "city": "Test city", "country": "CY", "line1": "Test address1", "line2": "Test address2", "postalCode": "Test postal code", "state": "Test state" }, "email": "test@example.com", "name": "TEST CARDHOLDER", "phone": "+449998887766" }, "description": "Some description", "metadata": {}, "paymentMethod": { "card": { "expiryMonth": 12, "expiryYear": 2024, "holderName": "TEST CARDHOLDER", "maskedNumber": "444455**3333" }, "type": "card" }, "paymentMethodOptions": { "card": { "threeDSecureMode": "automatic", "verify": false } }, "returnUrl": "https://mybestmerchantreturnurl.com/", "status": "succeeded" } - Si la réponse contient le bloc
La boutique en ligne redirige le client vers l'URL pour la vérification 3-D Secure.
Le client confirme le paiement.
Payment Gateway traite le paiement.
Payment Gateway envoie le webhook
payment.succeededà la boutique en ligne.-
Le serveur de la boutique en ligne envoie
HTTP Code = 200en réponse. La boutique en ligne envoie une demande
/payments/{id}pour récupérer un Payment.En réponse, Payment Gateway envoie l'objet Payment avec
status=succeeded.