Informations générales
Spécification technique pour l'intégration du traitement des paiements en cryptomonnaie et des retraits avec 2328.io.
Bienvenue dans la documentation de l'API 2328.io. Cette référence décrit comment intégrer le traitement des paiements en cryptomonnaie et les retraits dans votre application.
Démarrage
Pour commencer l'intégration :
- Créez un compte marchand et un projet sur 2328.io
- Obtenez votre project UUID et votre API key depuis les paramètres du projet
- Générez une Payout API key distincte si vous prévoyez d'utiliser les retraits
- Lisez la section Authentication pour apprendre à signer les requêtes
- Effectuez votre premier appel Create Payment
URL de base
Toutes les requêtes API en production utilisent l'URL de base suivante :
https://api.2328.io/apiToutes les requêtes doivent être effectuées via HTTPS. Les requêtes sans HTTPS sont bloquées.
Ce que vous pouvez faire
Avec l'API 2328.io, vous pouvez :
- Accepter des paiements en crypto — créer des sessions de paiement et rediriger les clients vers une page de paiement hébergée ou un Telegram MiniApp
- Effectuer des retraits — envoyer par programmation des retraits depuis votre solde marchand vers n'importe quelle adresse blockchain
- Vérifier les soldes — consultez les soldes des comptes du marchand par devise, leur équivalent en USD et les montants verrouillés par AML
- Utiliser des portefeuilles statiques — générer des adresses de dépôt permanentes liées à un utilisateur ou à une commande
- Récupérer les taux de change — obtenir des taux en temps réel pour les paires fiat et crypto
- Recevoir des webhooks — être notifié instantanément lorsqu'un statut de paiement change
Limites de débit
L'API autorise jusqu'à 10 requêtes par seconde par projet. Les requêtes au-delà de cette limite reçoivent une réponse HTTP 429 Too Many Requests — patientez puis réessayez.
Choisissez le bon modèle d'intégration
| Exigence | Modèle recommandé | Pourquoi |
|---|---|---|
| Laissez le client choisir comment payer | Paiement hébergé | Créez un paiement et redirigez vers result.url ; 2328.io présente les directions disponibles actuellement. |
| Gardez le client dans votre propre processus de paiement | Facture H2H à adresse directe | Envoyez to_currency et network lors de la création du paiement ; affichez les address, payer_amount et qr retournés. |
Facturez exactement 25 USDT ou 0.001 BTC | Facture libellée en crypto-monnaie | Mettez la cryptomonnaie dans currency et le montant décimal exact dans amount. |
| Donnez à chaque utilisateur une adresse de dépôt réutilisable | Portefeuille statique | L'adresse est permanente et peut recevoir de nombreux dépôts indépendants. |
| Normaliser les actifs entrants en une seule devise de solde | Conversion automatique | Configurez les règles du projet dans le tableau de bord et utilisez le résultat de convert lorsque la conversion est terminée. |
| Échanger un solde marchand existant | Conversion manuelle | Aperçu avec /v1/convert/price, puis exécution avec /v1/convert. |
| Envoyez des fonds à une adresse de blockchain | Paiement | Utilisez la clé API Payout séparée, calculez d'abord, et réconciliez le statut de paiement. |
Le paiement hébergé et H2H sont deux présentations du même API de paiement. H2H ne crée pas un paiement plus faible ou non signé : le backend crée toujours la facture, 2328.io possède toujours l'adresse et le statut, et les webhooks signés restent faisant autorité pour le règlement.
Invariants d'intégration
Ces règles s'appliquent à chaque intégration en production :
- Backend only — ne pas garder les clés API dans les navigateurs, applications mobiles, journaux, analyses, et captures d'écran de support.
- Decimal strings — envoyer et stocker de l'argent sous forme de chaînes. Ne jamais arrondir la cryptomonnaie ou les taux de change avec une arithmétique flottante binaire.
- Immutable idempotency keys — générer
order_idavant la première requête et conserver la requête complète avec celui-ci. Une nouvelle tentative avec le mêmeorder_idpeut renvoyer l'objet original plutôt que d'appliquer des champs modifiés. - Webhook-first settlement — les redirections, le sondage client, les hachages de transaction fournis par les utilisateurs et les délais d'attente HTTP ne constituent pas une preuve de paiement.
- Verify, deduplicate, then mutate — vérifier le HMAC, réclamer un enregistrement d'idempotence de manière atomique, mettre à jour la commande/le solde une seule fois et renvoyer rapidement un HTTP 200.
- Reconciliation — interroger périodiquement l'état des paiements, des portefeuilles statiques et des paiements afin qu'un webhook perdu ne puisse pas laisser de désaccord permanent.
- Dynamic availability — validez les paires de devises/réseaux avec
/v1/directions; un actif pris en charge peut toujours avoir une direction de dépôt ou de retrait temporairement désactivée. - Explicit status policy — décidez comment votre produit gère le paiement partiel, le surpaiement, l'expiration, le verrouillage AML, le repli de conversion et les délais d'attente ambigus en amont avant la mise en service.
Données recommandées à conserver
Pour les paiements, stockez au minimum uuid, order_id, le corps original de la requête, amount, currency, payer_currency, payer_amount, network, address, expires_at, les dernières payment_status, txid, payment_amount, merchant_amount, le bloc optionnel convert, et le payload brut de webhook vérifié.
Pour les portefeuilles statiques, gardez le portefeuille uuid, l'adresse, la devise, le réseau, la référence client/compte, le statut et l'URL de rappel séparément des enregistrements de dépôt. Chaque dépôt nécessite sa propre transaction uuid, txid, statut, montant reçu, montant commerçant et résultat de conversion.