Pour toute question, nous sommes à un clic

Poser une question

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):

Avant de commencer, assurez-vous que vous avez créé un compte ou vous êtes connecté.
sequenceDiagram participant C as Customer participant OS as Online store participant PG as Payment Gateway autonumber activate C C ->> OS: Initiate payment activate OS OS -->> C: Open payment page C ->> OS: Enter card data OS ->> PG: Create Payment
("/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
  1. Un client sélectionne un produit dans la boutique en ligne, puis clique sur Acheter.
  2. Le serveur de la boutique en ligne reçoit une demande d'achat et ouvre une page de paiement.
  3. Le client saisit les détails de sa carte sur la page de paiement de la boutique en ligne.
  4. 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ètre amount (le montant du paiement en unités monétaires mineures, par exemple en centimes) et le paramètre currency (code à trois lettres de la devise de paiement, selon ISO 4217). De plus, vous devriez passer soit le bloc paymentMethod avec les données de carte soit le paramètre storedPaymentMethodId (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/"
    }'
  5. Payment Gateway crée un Payment.

  6. Payment Gateway envoie le webhook payment.created à la boutique en ligne.

  7. Le serveur de la boutique en ligne envoie HTTP Code = 200 en réponse.

  8. 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"
    }
  9. La boutique en ligne redirige le client vers l'URL pour la vérification 3-D Secure.

  10. Le client confirme le paiement.

  11. Payment Gateway traite le paiement.

  12. Payment Gateway envoie le webhook payment.succeeded à la boutique en ligne.

  13. Le serveur de la boutique en ligne envoie HTTP Code = 200 en réponse.

  14. La boutique en ligne envoie une demande /payments/{id} pour récupérer un Payment.

  15. En réponse, Payment Gateway envoie l'objet Payment avec status=succeeded.

Catégories:
eCommerce API V2
Catégories
Résultats de recherche