Construire les endpoints de paiement du Protocole de commerce agentiqueVersion bêta privée
Découvrez la spécification du Protocole de commerce agentique.
Vous pouvez utiliser le protocole ACP (Agentic Commerce Protocol) pour permettre aux agents d’IA de gérer les transactions commerce entre les clients et les marchands. Cette spécification définit les méthodes et les structures de données pour la création, la mise à jour et l’exécution des tunnels de paiement.
Vous trouverez ci-dessous des exemples d’intégrations REST.
Créer une Session Checkout
Vous pouvez créer une nouvelle Session Checkout avec les détails du client, les articles et les informations d’expédition.
Requête
Spécifiez les paramètres requis pour votre requête.
Exemple de requête :
POST /checkouts { "items": [ { "id": "item_123", "quantity": 2 } ], "buyer": { "first_name": "John", "last_name": "Doe", "email": "john.doe@example.com", "phone_number": "+1234567890" }, "fulfillment_address": { "name": "John Doe", "line_one": "123 Main St", "line_two": "Apt 4B", "city": "San Francisco", "state": "CA", "country": "US", "postal_code": "94105" } }
Réponse
La réponse renvoie l’état actuel du paiement par le marchand.
Exemple de réponse :
{ "id": "checkout_abc123", "buyer": { "first_name": "John", "last_name": "Doe", "email": "john.doe@example.com", "phone_number": "+1234567890" }, "payment_provider": { "provider": "stripe", "supported_payment_methods": ["card"] }, "status": "ready_for_payment", "currency": "usd", "line_items": [ { "id": "item_123", "item": { "id": "item_123", "quantity": 2 }, "base_amount": 2000, "discount": 0, "total": 2000, "subtotal": 2000, "tax": 0 } ], "fulfillment_address": { "name": "John Doe", "line_one": "123 Main St", "line_two": "Apt 4B", "city": "San Francisco", "state": "CA", "country": "US", "postal_code": "94105" }, "fulfillment_options": [ { "type": "shipping", "id": "shipping_fast", "title": "Express Shipping", "subtitle": "2-3 business days", "carrier": "Shipping Co", "subtotal": 150, "tax": 0, "total": 150 } ], "fulfillment_option_id": "shipping_fast", "totals": [ { "type": "subtotal", "display_text": "Subtotal", "amount": 2000 }, { "type": "fulfillment", "display_text": "Shipping", "amount": 150 }, { "type": "tax", "display_text": "Tax", "amount": 100 }, { "type": "total", "display_text": "Total", "amount": 2250 } ], "messages": [], "links": [] }
Récupérer un objet Checkout
Pour récupérer une Session Checkout existante à l’aide d’un ID, effectuez une requête à l’API endpoint appropriée avec l’ID inclus dans la requête.
Requête
Spécifiez les paramètres requis pour votre requête.
| Paramètres | Type | Description |
|---|---|---|
| id | string | Identifiant unique du traitement du paiement. Required |
Exemple de requête :
GET /checkouts/:id
Réponse
La réponse renvoie l’état actuel du paiement par le marchand.
Exemple de réponse :
{ "id": "checkout_abc123", "buyer": { "first_name": "John", "last_name": "Doe", "email": "john.doe@example.com", "phone_number": "+1234567890" }, "payment_provider": { "provider": "stripe", "supported_payment_methods": ["card"] }, "status": "ready_for_payment", "currency": "usd", "line_items": [ { "id": "item_123", "item": { "id": "item_123", "quantity": 2 }, "base_amount": 2000, "discount": 0, "total": 2000, "subtotal": 2000, "tax": 0 } ], "fulfillment_address": { "name": "John Doe", "line_one": "123 Main St", "line_two": "Apt 4B", "city": "San Francisco", "state": "CA", "country": "US", "postal_code": "94105" }, "fulfillment_options": [ { "type": "shipping", "id": "shipping_fast", "title": "Express Shipping", "subtitle": "2-3 business days", "carrier": "Shipping Co", "subtotal": 150, "tax": 0, "total": 150 } ], "fulfillment_option_id": "shipping_fast", "totals": [ { "type": "subtotal", "display_text": "Subtotal", "amount": 2000 }, { "type": "fulfillment", "display_text": "Shipping", "amount": 150 }, { "type": "tax", "display_text": "Tax", "amount": 100 }, { "type": "total", "display_text": "Total", "amount": 2250 } ], "messages": [], "links": [] }
Mettre à jour une Session Checkout
Vous pouvez mettre à jour une Session Checkout existante en modifiant les articles, l’adresse de livraison ou les options de réalisation.
Requête
Spécifiez les paramètres requis pour votre requête.
Exemple de requête :
PUT /checkouts/:id { "items": [ { "id": "item_123", "quantity": 3 }, { "id": "item_456", "quantity": 1 } ], "fulfillment_address": { "name": "John Doe", "line_one": "456 Oak Ave", "city": "Los Angeles", "state": "CA", "country": "US", "postal_code": "90210" }, "fulfillment_option_id": "shipping_fast" }
Réponse
La réponse renvoie l’état actuel du paiement par le marchand.
Exemple de réponse :
{ "id": "checkout_abc123", "buyer": { "first_name": "John", "last_name": "Doe", "email": "john.doe@example.com", "phone_number": "+1234567890" }, "payment_provider": { "provider": "stripe", "supported_payment_methods": ["card"] }, "status": "ready_for_payment", "currency": "usd", "line_items": [ { "id": "item_123", "item": { "id": "item_123", "quantity": 3 }, "base_amount": 3000, "discount": 0, "total": 3000, "subtotal": 3000, "tax": 0 }, { "id": "item_456", "item": { "id": "item_456", "quantity": 1 }, "base_amount": 500, "discount": 0, "total": 500, "subtotal": 500, "tax": 0 } ], "fulfillment_address": { "name": "John Doe", "line_one": "456 Oak Ave", "city": "Los Angeles", "state": "CA", "country": "US", "postal_code": "90210" }, "fulfillment_options": [ { "type": "shipping", "id": "shipping_fast", "title": "Express Shipping", "subtitle": "2-3 business days", "carrier": "Shipping Co", "subtotal": 150, "tax": 0, "total": 150 } ], "fulfillment_option_id": "shipping_fast", "totals": [ { "type": "subtotal", "display_text": "Subtotal", "amount": 3500 }, { "type": "fulfillment", "display_text": "Shipping", "amount": 150 }, { "type": "tax", "display_text": "Tax", "amount": 100 }, { "type": "total", "display_text": "Total", "amount": 3750 } ], "messages": [], "links": [] }
Finaliser un Checkout
Vous pouvez terminer le traitement du paiement en traitant le paiement et en créant une commande.
Requête
Spécifiez les paramètres requis pour votre requête.
Exemple de requête :
POST /checkouts/:id/complete { "payment_data": { "token": "spt_123", "provider": "stripe", "billing_address": { "name": "John Doe", "line_one": "123 Main St", "line_two": "Apt 4B", "city": "San Francisco", "state": "CA", "country": "US", "postal_code": "94105" } } }
Réponse
La réponse renvoie l’état actuel du paiement par le marchand.
Exemple de réponse :
{ "id": "checkout_abc123", "buyer": { "first_name": "John", "last_name": "Doe", "email": "john.doe@example.com", "phone_number": "+1234567890" }, "status": "completed", "currency": "usd", "line_items": [ { "id": "item_123", "item": { "id": "item_123", "quantity": 3 }, "base_amount": 3000, "discount": 0, "total": 3000, "subtotal": 3000, "tax": 0 }, { "id": "item_456", "item": { "id": "item_456", "quantity": 1 }, "base_amount": 500, "discount": 0, "total": 500, "subtotal": 500, "tax": 0 } ], "fulfillment_address": { "name": "John Doe", "line_one": "456 Oak Ave", "city": "Los Angeles", "state": "CA", "country": "US", "postal_code": "90210" }, "fulfillment_options": [ { "type": "shipping", "id": "shipping_fast", "title": "Express Shipping", "subtitle": "2-3 business days", "carrier": "Shipping Co", "subtotal": 150, "tax": 0, "total": 150 } ], "fulfillment_option_id": "shipping_fast", "totals": [ { "type": "subtotal", "display_text": "Subtotal", "amount": 3500 }, { "type": "fulfillment", "display_text": "Shipping", "amount": 150 }, { "type": "tax", "display_text": "Tax", "amount": 100 }, { "type": "total", "display_text": "Total", "amount": 3750 } ], "messages": [], "links": [] }
Annuler un Checkout
Vous pouvez annuler une Session Checkout existante si nécessaire.
Requête
Spécifiez les paramètres requis pour votre requête.
| Paramètres | Type | Description |
|---|---|---|
| id | string | Identifiant unique du traitement du paiement. Required |
Exemple de requête :
POST /checkouts/:id/cancel {}
Réponse
La réponse renvoie l’état actuel du paiement par le marchand.
Exemple de réponse :
{ "id": "checkout_abc123", "buyer": { "first_name": "John", "last_name": "Doe", "email": "john.doe@example.com", "phone_number": "+1234567890" }, "status": "canceled", "currency": "usd", "line_items": [ { "id": "item_123", "item": { "id": "item_123", "quantity": 3 }, "base_amount": 3000, "discount": 0, "total": 3000, "subtotal": 3000, "tax": 0 }, { "id": "item_456", "item": { "id": "item_456", "quantity": 1 }, "base_amount": 500, "discount": 0, "total": 500, "subtotal": 500, "tax": 0 } ], "fulfillment_address": { "name": "John Doe", "line_one": "456 Oak Ave", "city": "Los Angeles", "state": "CA", "country": "US", "postal_code": "90210" }, "fulfillment_options": [ { "type": "shipping", "id": "shipping_fast", "title": "Express Shipping", "subtitle": "2-3 business days", "carrier": "Shipping Co", "subtotal": 150, "tax": 0, "total": 150 } ], "fulfillment_option_id": "shipping_fast", "totals": [ { "type": "subtotal", "display_text": "Subtotal", "amount": 3500 }, { "type": "fulfillment", "display_text": "Shipping", "amount": 150 }, { "type": "tax", "display_text": "Tax", "amount": 100 }, { "type": "total", "display_text": "Total", "amount": 3750 } ], "messages": [ { "type": "info", "content_type": "plain", "content": "Checkout cancelled: Customer changed their mind" } ], "links": [] }
Structures de données
Cette section décrit les structures données impliquées dans le traitement du paiement.
Client
Le client est un entrepreneur individuel qui est à l’origine de l’achat.
| Paramètres | Type | Description |
|---|---|---|
| first_name | string | Le prénom du client. Required |
| last_name | string | Le nom de famille du client. Required |
string | L’e-mail du client. Obligatoire | |
| phone_number | string optional | Le numéro de téléphone du client. |
Poste
L’Article est un produit ou un service que le client demande à acheter, ainsi que sa quantité.
| Paramètres | Type | Description |
|---|---|---|
| id | string | Identifiant unique de l’élément. Required |
| quantity | integer | La quantité demandée de l’élément pour ce paiement. Required |
LineItem
Le LineItem inclut fournit des informations sur l’élément ajouté au paiement, y compris le montant.
Adresse
L’adresse fournit l’adresse de livraison ou de facturation du client.
| Paramètres | Type | Description |
|---|---|---|
| name | string | Nom de la personne à qui les éléments sont expédiés. Required |
| line_one | string | Ligne d’adresse 1 (e.g., rue, boîte postale ou nom de l’entreprise). Required |
| line_two | string optional | Adresse - Ligne 2 (par exemple, appartement, suite, unité ou immeuble). |
| city | string | Ville, district, banlieue, commune ou village. Required |
| state | string | État, département, province ou région. Required |
| country | string | Code de pays à deux lettres (ISO 3166-1 alpha-2). Required |
| postal_code | string | Code postal ou ZIP. Required |
PaymentData
Les données de paiement fournissent les détails de paiement du client, y compris la valeur tokenisée et le prestataire de services de paiement.
Total
Le total fournit un résumé du total global.
| Paramètres | Type | Description |
|---|---|---|
type |
| Le type de total. Required Valeurs possibles : |
| display_text | string | Texte d’affichage du total. Required |
| amount | integer | Le montant du total. Required |
FulfillmentOption
Les options de traitement des commandes sont soit l’expédition, soit le format numérique. Pour des implémentations spécifiques,consulter ShippingFulfillmentOption etDigitalFulfillmentOption.
ShippingFulfillmentOption
La ShippingFulfillmentOption définit les paramètres des options de réalisation des expéditions, y compris les informations sur le transporteur et les délais de livraison.
| Paramètres | Type | Description |
|---|---|---|
type |
| Le type d’option de réalisation. Required Valeurs possibles : |
| id | string | Identifiant unique de l’option de réalisation des frais d’expédition. { % badge label=“Required” / %} |
| title | string | Le titre de l’option de réalisation des frais d’expédition. Required |
| subtitle | string optional | Le sous-titre de l’option de réalisation de la livraison. |
| courrier d’accompagnement | string optional | Le courrier d’accompagnement de l’option de réalisation des expéditions. |
| earliest_delivery_time | string optional | Le délai de livraison le plus proche de l’option de réalisation des expéditions (format ISO 8601). |
| latest_delivery_time | string optional | Le dernier délai de livraison de l’option de réalisation des expéditions (format ISO 8601). |
| subtotal | integer | Le sous-total de l’option de réalisation des frais d’expédition. Required |
| tax | integer | La taxe de l’option de réalisation des frais d’expédition. Required |
| total | integer | Le total de l’option de réalisation des frais d’expédition. Required |
DigitalFulfillmentOption
DigitalFulfillmentOption définit les paramètres des options de réalisation numérique, y compris le titre et les informations de prix.
| Paramètres | Type | Description |
|---|---|---|
type |
| Le type d’option de réalisation. Required Valeurs possibles : |
| id | string | Identifiant unique pour l’option de réalisation numérique. Required |
| title | string | Le titre de l’option de réalisation numérique. Required |
| subtitle | string optional | Le sous-titre de l’option de réalisation numérique. |
| subtotal | integer | Le sous-total de l’option de réalisation numérique. Required |
| tax | integer | La taxe de l’option de réalisation numérique. Required |
| total | integer | Le total de l’option de réalisation numérique. Required |
PaymentProvider
Le PaymentProvider définit le prestataire de services de paiement pris en charge par le marchand et les moyens disponibles.
| Paramètres | Type | Description |
|---|---|---|
provider |
| Le marchand prestataire de services de paiement. Required Valeurs possibles : |
supported_payment_methods |
| Les moyens de paiement autorisés par le marchand. Required Valeurs possibles : |
Message
Les messages sont soit des messages d’information, soit des messages d’erreur.
InfoMessage
L’InfoMessage représente des messages d’information, détaillant le type et le contenu.
| Paramètres | Type | Description |
|---|---|---|
type |
| Chaîne représentant le type de message. Valeurs possibles : |
| param | string optional | RFC 9535 JSONPath au composant de la Session Checkout auquel le message fait référence. |
content_type |
| Le type de contenu du message. Valeurs possibles : |
| content | string | Le contenu du message. |
ErrorMessage
L’ErrorMessage représente les messages d’erreur, détaillant le type et le code.
| Paramètres | Type | Description |
|---|---|---|
type |
| Chaîne représentant le type de message. Valeurs possibles : |
code |
| Le code de l’erreur. Valeurs possibles : |
| param | string optional | RFC 9535 JSONPath au composant de la Session Checkout auquel le message fait référence. |
content_type |
| Le type de contenu du message. Valeurs possibles : |
| content | string | Le contenu du message. |
Erreur
L’erreur définit les paramètres liés aux erreurs survenues pendant le traitement du paiement.
| Paramètres | Type | Description |
|---|---|---|
type |
| Le type d’erreur. Required Valeurs possibles : |
| code | string | Code d’erreur défini par l’implémentation. Required |
| message | string | Le message de l’erreur. Required |
| param | string optional | RFC 9535 JSONPath au composant de la Session Checkout auquel le message fait référence. |
Link
Le Link définit les paramètres des liens liés aux stratégies et aux accords.
| Paramètres | Type | Description |
|---|---|---|
type |
| Valeur de chaîne représentant le type de lien. Required Valeurs possibles : |
| url | string | L’URL du lien. {% badge label="Required » /%} |
Commande
La commande fournit le résultat de traitement du paiement et fournit des détails au client pour la recherche de commande.
| Paramètres | Type | Description |
|---|---|---|
| id | string | Identifiant unique de la commande. Required |
| checkout_session_id | string | Référence à la session de Checkout à l’origine de la commande. Required |
| permalink_url | string | L’URL du permalien pour la commande. Required |
Événements
L’événement définit les paramètres des événements liés à la création et aux mises à jour des commandes.
| Paramètres | Type | Description |
|---|---|---|
type |
| Le type d’événement. Required Valeurs possibles : |
| données | hash | Données d’événement contenant des informations sur la commande. Required |
OrderEventData
Les OrderEventData comprennent des données relatives aux événements de commande.
Remboursement
Le Remboursement définit les paramètres de gestion des remboursements associés aux commandes terminées.
| Paramètres | Type | Description |
|---|---|---|
type |
| Le type de remboursement. Required Valeurs possibles : |
| amount | integer | Le montant du remboursement. Required |