Intégration API
Les liens de paiement utilisent l’API HUB2. Les points de terminaison disponibles sont listés dans la documentation suivante :API Payment Links
Authentification
Votre intégration utilise les mêmes clés API HUB2 pour l’authentification. La clé doit disposer des permissions suivantes :Api.payment_intent_create: créer et fermer des liens de paiementApi.payment_intent_read: consulter et lister les liens de paiement
Configuration des permissions
Points de terminaison de l’API
Lien de paiement
POST /payment-links: créer un lien de paiement en définissant les moyens de paiement et les opérateurs acceptés. L’intention de paiement et le paiement sont créés au fil du parcours du client sur la page de paiement. Exemple :
typevautsingle_usepar défaut (un seul paiement réussi). Utilisezmulti_usepour accepter plusieurs paiements, éventuellement plafonnés parmaximumPayments.- Si
expirationDateest absent ou déjà passé, le lien expire 15 minutes après sa création. successUrletfailureUrldoivent utiliser le schémahttps.
PATCH /payment-links/{id}/close: fermer un lien de paiement avant son expirationGET /payment-links: lister les liens de paiement créésGET /payment-links/{id}: consulter un lien de paiement et ses tentatives de paiement
Limites de flux par point de terminaison :
POST /payment-links: 100 requêtes par 10 secondesGET /payment-links/{id}: 1 requête par secondeGET /payment-links: 1 requête par 5 secondesPATCH /payment-links/{id}/close: 1 requête par seconde
HTTP 429 Too Many Requests.Paiements par carte
Un lien propose le paiement par carte lorsquepaymentMethods contient credit_card. Les paiements par carte passent toujours par le fournisseur de cartes configuré pour votre compte marchand : providers ne liste donc jamais de fournisseur de cartes. Les paiements par carte doivent être activés sur votre compte : consultez Paiements par carte dans le guide de configuration.
Pour un lien accessible uniquement par carte, omettez providers. Un tableau vide est refusé avec une erreur 400 :
providers pour le mobile money :
successUrl ou votre failureUrl si vous les avez définies.
Une requête de création qui ne peut pas être acceptée renvoie une erreur 400 dont le corps contient status, code, message et request_id. Utilisez code pour savoir comment réagir :
Une requête qui inclut
mobile_money sans providers est également refusée avec une erreur 400. Seul un lien accessible uniquement par carte peut les omettre.
Webhooks
Les paiements effectués via un lien déclenchent les webhooks habituelspayment.* et payment_intent.*. Les liens de paiement disposent aussi de leurs propres événements : payment_links.created, payment_links.paid, payment_links.completed, payment_links.expired et payment_links.closed. Si vous avez déjà configuré des webhooks pour les paiements, aucune étape supplémentaire n’est requise. Sinon, consultez :
