- Gérer vos alias (mode live uniquement).
- Collecter un paiement instantané.
- Envoyer un paiement instantané.
Gérer vos alias
Référence de l’API HUB2 - Lister les alias Référence de l’API HUB2 - Créer un alias Référence de l’API HUB2 - Supprimer un alias Les trois points de terminaison d’alias ciblent l’un de vos comptes via le paramètre de cheminaccountType : collection (reçoit les paiements instantanés) ou transfer (les émet). Ils ne fonctionnent qu’en mode live : en sandbox, ils sont refusés avec une erreur 403 (instant_payment_live_only).
Lister les alias d’un compte
La liste contient tous les alias que l’annuaire détient pour le compte, y compris l’alias principal enregistré par HUB2.Curl
aliasKey est la valeur à communiquer pour que les payeurs puissent joindre votre compte, et la valeur à envoyer comme payeeAlias lors d’une tentative de paiement.
Créer un alias
Curl
SHID. Un compte détient un seul alias SHID : lorsque le compte en possède déjà un, l’API répond 201 et renvoie cet alias avec created à false au lieu d’en créer un second. Relancer une création est donc toujours sans risque.
Supprimer un alias
Curl
204 No Content. À partir de là, les payeurs ne peuvent plus joindre votre compte avec cet alias et HUB2 ne l’accepte plus comme votre propre alias lors d’un paiement.
- L’alias principal enregistré par HUB2 ne peut pas être supprimé : la requête est refusée avec une erreur
409(instant_payment_primary_alias_protected). Contactez le support HUB2 pour le retirer. - Un alias qui n’est pas le vôtre est refusé exactement comme un alias qui n’existe pas, avec une erreur
403(instant_payment_alias_not_owned).
Erreurs sur les alias
Collecter un paiement instantané
Une collecte suit l’intégration des paiements : vous créez une intention de paiement, effectuez une tentative de paiement dessus, puis suivez son statut. Seule la tentative de paiement diffère pour le paiement instantané. L’intention de paiement doit être enXOF.
Obtenir les frais
Référence de l’API HUB2 - Récupérer les frais Pour afficher les frais avant que le client ne paie, appelez le point de terminaison des frais de l’intention de paiement avecpaymentMethod=instant_payment et le country. Le paramètre provider n’est pas requis pour le paiement instantané, qui n’a qu’un seul opérateur. S’il est envoyé, il est ignoré.
Curl
Effectuer la tentative de paiement
Référence de l’API HUB2 - Tentative de paiement Effectuez une tentative de paiement sur l’intention de paiement avec le mode de paiementinstant_payment.
Curl
Il n’y a ni champ
provider ni objet mobileMoney. Les deux alias sont indiqués à chaque requête et ne sont jamais tronqués ni normalisés : envoyez-les exactement tels qu’ils sont enregistrés.
HUB2 vérifie tout ce qu’il peut avant que la requête n’atteigne le rail, car un paiement envoyé sur le rail ne peut pas être rappelé :
- le pays est servi et le paiement instantané est activé pour votre compte marchand ;
payeeAliasest bien formé et fait partie de vos alias de collecte actifs. Un alias enregistré pour un autre marchand, ou pour personne, est refusé de la même manière (403,instant_payment_alias_not_owned) ;payerAliasest bien formé. HUB2 ne vérifie pas qu’il existe : le rail y répond, et un alias de payeur inexistant fait échouer le paiement.
Suivre le paiement
Le paiement est créé au statutcreated, reste ensuite pending pendant que le rail le traite, et l’intention de paiement est processing. Le résultat provient du rail et fait passer le paiement à successful ou failed, avec un objet failure qui contient la cause de l’échec.
Utilisez les webhooks pour suivre le résultat, comme pour tout autre mode de paiement. Si vous ne pouvez pas, interrogez le statut de l’intention de paiement uniquement tant que le statut est processing.
Lorsque HUB2 ne peut pas savoir si le rail a reçu une requête, le paiement reste pending au lieu d’être mis en échec. Ne créez pas de second paiement pour le même achat dans ce cas : attendez le webhook ou lisez le statut.
Erreurs de paiement
Envoyer un paiement instantané
Référence de l’API HUB2 - Créer un transfert Un transfert suit l’intégration des transferts. Pour le paiement instantané, définissez le type de destination àinstant_payment et envoyez l’alias du bénéficiaire. La devise doit être XOF.
Curl
La requête ne contient pas d’alias de payeur. Le compte débité est toujours votre propre compte de transfert, et HUB2 sélectionne l’alias à utiliser parmi ceux enregistrés sur ce compte, en commençant par l’alias principal. La réponse renvoie dans l’objet
destination le payerAlias utilisé et le payeeAlias que vous avez envoyé, ainsi que provider à pispi.
Si votre compte de transfert n’a aucun alias actif, le transfert est refusé avec une erreur 400. Comme pour un paiement, HUB2 ne vérifie que la forme de l’alias du bénéficiaire : un alias de bénéficiaire inexistant fait échouer le transfert.
Un transfert passe par les statuts habituels (created, pending, puis successful ou failed). Suivez-le avec les webhooks, comme pour les autres destinations. Lorsque HUB2 ne peut pas savoir si le rail a reçu la requête, le transfert reste pending : ne créez pas de second transfert pour le même bénéficiaire, attendez le webhook ou lisez le statut.
Erreurs de transfert
Causes d’échec
Lorsqu’un paiement ou un transfert échoue, le champfailure.code indique la cause. Les causes d’échec du rail sont traduites ainsi :
Consultez aussi les listes complètes des causes d’échec des paiements et des causes d’échec des transferts.
Sandbox
En mode sandbox, aucune requête n’atteint le rail : HUB2 simule le résultat à partir des 8 derniers caractères de l’alias de la contrepartie, c’est-à-dire lepayerAlias d’un paiement et le payeeAlias d’un transfert. L’alias doit tout de même être bien formé, par exemple +22500000001, et le pays doit être CI ou SN.
Vos propres alias restent vérifiés en sandbox : le payeeAlias d’un paiement doit être un alias de collecte de votre compte marchand, et un transfert nécessite un alias sur votre compte de transfert. Les alias ne peuvent pas être créés en sandbox : listez-les donc au préalable en mode live (voir Gérer vos alias) et réutilisez-les en sandbox.
Paiements
Toute autre valeur fait échouer le paiement avec
bad_parameters.
Transferts
Toute autre valeur fait échouer le transfert avec
invalid_destination.