Paiements
Créer un paiement
POSThttps://tupay.apps.lepetittahitien.dev/api/v1/payments/intent
Paramètres d’en-tête
- exemple 9f8c1a2b-3d4e-4f60-8a71-5b2c9d0e6f13
Idempotency-Keychaîne· en-têterequisObligatoire sur cette opération. UUID v4 recommandé. Rejouer la même clé renvoie le résultat mémorisé sans réexécuter l'opération : un retry après timeout ne débite jamais deux fois.
La clé est cloisonnée par marchand : deux comptes peuvent employer la même chaîne sans jamais se voir.
Rejouer une clé avec un corps différent vaut 409
idempotency_key_reuse. Seuls l'ordre des clés JSON et l'espacement sont ignorés dans la comparaison. La méthode et le chemin font partie de l'empreinte : la même clé sur une autre opération est donc un corps différent.Une seconde requête arrivant pendant que la première s'exécute attend au plus trois secondes, puis reçoit 409
idempotency_in_progress. Il faut alors retenter la même requête à l'identique.Rétention : 24 heures. Passé ce délai la clé redevient libre, et la rejouer CRÉE une nouvelle ressource au lieu de rendre le corps mémorisé.
Corps de requête application/json · requis
- minimum 100maximum 10000000exemple 4500
amountXpfentierrequis - format uuid
merchantIdchaînefacultatifFacultatif : le marchand est déduit de la clé API. Fourni, il doit correspondre, sinon 403.
- format uuid
paymentLinkIdchaînefacultatif - exemple pm_1f9c3d2a-7b4e-4a19-8c05-2d6f8b1e4a73
paymentMethodchaînefacultatifCarte enregistrée à débiter —
<uuid>oupm_<uuid>. Exige `customer` : sans lui, rien ne permet de vérifier que la carte appartient bien à ce client.Le débit est tenté dans CE MÊME appel : la réponse porte
status: succeeded, ou un402si la banque refuse. Un moyen détaché vaut409. offSessionbooléenfacultatifLe porteur n'est pas devant son écran (abonnement, relance). N'a de sens qu'avec
paymentMethod.Hors session, une authentification forte ne peut pas aboutir : la banque rend alors
failureCode: authentication_required, et c'est à vous de ramener le porteur devant son écran.- exemple cus_8f14e45f-ceea-4c1a-9b7d-2a3f6c8e01b4
customerchaînefacultatifClient à rattacher —
<uuid>oucus_<uuid>. La transaction porteracustomerId, etexpand[]=customerla développera.Un identifiant inconnu, ou appartenant à un autre marchand, rend
404avant tout appel au prestataire : aucune intention n'est ouverte chez lui, rien n'est à annuler. Un client supprimé reste acceptable — la suppression ferme la modification de la fiche, pas son usage. - au plus 50 clés
metadataobjetfacultatifClés libres (longueur maximale 40), valeurs de type chaîne (longueur maximale 500).
⚠️ Une valeur qui ressemble à un numéro de carte bancaire est REFUSÉE, sur toutes les ressources : Tupay n'en stocke jamais, y compris ici. Ce refus protège votre conformité PCI-DSS autant que la nôtre. Si c'est une référence interne numérique, préfixez-la (« cmd-… ») pour lever l'ambiguïté.
Vos propres clés et valeurs, attachées à l'objet et relisibles avec lui. De quoi relier une ressource Tupay à votre système sans tenir de table de correspondance.
Bornes : 50 clés au plus, 40 caractères par clé, 500 par valeur. Elles portent sur le RÉSULTAT de la fusion, pas sur ce que vous envoyez : ajouter 5 clés à un objet qui en compte 48 est refusé.
À la modification, les clés fournies remplacent les anciennes et les autres survivent. Une clé à
nullest supprimée. Un objet vide ne change rien, etmetadata: nullefface tout.Ce n'est pas un espace de stockage : les valeurs ne sont ni indexées ni cherchables, et n'ont aucun effet sur le traitement.