💳 Intégration Native du Paiement
Il y a eu des mises à jour récentes des points de terminaison et des paramètres de l'API. Veuillez vous référer au Journal des modifications pour plus de détails.
Native Checkout API : Les utilisateurs peuvent scanner le code QR ou copier l'adresse sur la page de paiement intégrée à vos sites/applications pour effectuer les paiements.
Intégrez l'API Native Checkout pour créer la page de paiement sur vos sites/applications. Les utilisateurs paient dans vos sites/applications. Pas besoin de les diriger vers des pages externes. Prenez le contrôle total de l'expérience de paiement de vos utilisateurs.
📦 1. Créer une commande
- Description de l'interface : Soumettez les commandes de paiement via cette interface et obtenez les informations de réception.
- Adresse de l'interface :
POST /api/order/create
Paramètres de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| out_trade_no | string | Oui | ID de commande du marchand |
| currency_id | int | Oui | ID de devise globalement unique |
fiat_name | string | Non | Nom de la devise fiduciaire (USD / USDT / JPY / CHF / CAD / NOK / SEK / HKD / SGD / KRW / TWD / CNY / INR / BRL / MXN / ZAR / RUB / TRY / EUR / GBP / AUD / VND / THB) |
| fiat_amount | string | Non | Montant de la devise fiduciaire ("1.2") |
| token_amount | string | Non | Montant du jeton |
| callback_url | string | Non | URL de rappel (callback) |
| time_out | int64 | Non | Horodatage d'expiration à 10 chiffres, indiquez 0, la valeur par défaut est de 30 minutes (1753513764) |
Description des champs de réponse
| Champ | Type | Description | Exemple |
|---|---|---|---|
| trade_no | string | ID de transaction | "20250629153045a7b3c9d2e5f8a1b4c6" |
| chain | string | Réseau blockchain | "Tron" |
| token | string | Jeton de crypto-monnaie | "TRX" |
| contract | string | Adresse du contrat du jeton | "TRX" |
| amount | string | Montant de la transaction | "15.724197" |
| mode | string | Mode de paiement | "address" |
| pay_address | string | Adresse du destinataire | "TSg8kWPE2s7z5Lon6bSnZZrYnquGHx2..." |
| time_expire | integer | Horodatage d'expiration | 1753515371 |
| decimal | integer | Décimales du jeton | 6 |
| chain_id | integer | ID de chaîne | 3448148188 |
| equity | integer | Valeur d'équité | 1 |
| create_time | integer | Horodatage de création | 1753513571 |
| amount_collected | string | Montant collecté | "0" |
| need_confirms | integer | Confirmations requises | 0 |
| already_confirms | integer | Confirmations actuelles | 0 |
| entrust_url | string | URL de paiement | "https://checkout.pay.halochat.io/20260....b876498e0771e1" |
| referer | string | Informations de référence | "" |
| chain_info | object | Informations sur la chaîne | {"token": "TRX", "rpc": "...", ...} |
Exemple de réponse réussie
{
"code": 0,
"msg": "success",
"data": {
"trade_no": "20260317173635066d54f5b6c7269d41",
"chain": "Tron",
"token": "TRX",
"contract": "TRX",
"amount": "16.556743",
"mode": "address",
"pay_address": "THgSjcyhyxfzrjtS7VYw1vnHvb7QkMsY...",
"time_expire": 1773741995,
"decimal": 6,
"chain_id": 3448148188,
"equity": 1,
"create_time": 1773740196,
"amount_collected": "",
"need_confirms": 0,
"already_confirms": 0,
"entrust_url": "https://checkout.pay.halochat.io/20260317173635066d54f5b6c7269d41",
"referer": "",
"chain_info": {
"token": "TRX",
"abi": "",
"rpc": "https://nile.trongrid.io",
"browser_url": "https://nile.tronscan.org/#/transaction",
"decimal": 6,
"logo": "https://halo-n.oss-ap-southeast-1.aliyuncs.com/png/202505/45d1f4b5-b80f-4331-af78-ec557f97d832.png",
"series": "Tron",
"monitor_chain_id": 3448148188
}
}
}
🔍 2. Interroger la commande
- Description de l'interface : Utilisez cette interface pour interroger le statut de la commande.
- Adresse de l'interface :
POST /api/order/detail
Paramètres de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| trade_no | string | Oui | ID de transaction |
Description des champs de réponse
| Champ | Type | Description | Exemple |
|---|---|---|---|
| trade_no | string | ID de transaction (plateforme) | "20250629153045a7b3c9d2e5f8a1b4c6" |
| out_trade_no | string | ID de commande du marchand | "202401011753513569" |
| chain | string | Réseau blockchain | "Tron" |
| token | string | Jeton de crypto-monnaie | "TRX" |
| contract | string | Adresse du contrat du jeton | "TRX" |
| fiat_name | string | Nom de la devise fiduciaire | "USD" |
| fiat_amount | string | Montant fiduciaire à payer | "5" |
| amount | string | Montant crypto à envoyer | "15.724197" |
| mode | string | Mode de paiement | "address" |
| pay_address | string | Adresse crypto du destinataire | "TSg8kWPE2s7z5Lon6bSnZZrYnquGHx2bsj" |
| status | string | Statut de la transaction | "TO-BE-PAID" |
| time_expire | integer | Horodatage d'expiration (Unix) | 1753515371 |
| decimal | integer | Décimales du jeton | 6 |
| chain_id | integer | ID de chaîne | 3448148188 |
| equity | integer | Valeur d'équité | 1 |
| create_time | integer | Horodatage de création (Unix) | 1753513571 |
| amount_collected | string | Montant collecté | "0" |
| need_confirms | integer | Confirmations requises | 0 |
| already_confirms | integer | Confirmations actuelles | 0 |
| entrust_url | string | URL de paiement (si applicable) | "" |
| referer | string | Informations de référence | "" |
| chain_info | object | Informations sur la chaîne | {"token": "TRX", "rpc": "...", ...} |
Exemple de réponse réussie
{
"code": 0,
"msg": "success",
"data": {
"trade_no": "20260317173635066d54f5b6c7269d41",
"out_trade_no": "ORDER_1773740195363",
"chain": "Tron",
"token": "TRX",
"contract": "TRX",
"fiat_name": "USD",
"fiat_amount": "5",
"amount": "16.556743",
"mode": "address",
"pay_address": "THgSjcyhyxfzrjtS7VYw1vnHvb7QkMsY7w",
"status": "TO-BE-PAID",
"time_expire": 1773741995,
"decimal": 6,
"chain_id": 3448148188,
"equity": 1,
"create_time": 1773740196,
"amount_collected": "0",
"need_confirms": 0,
"already_confirms": 0,
"entrust_url": "",
"referer": "",
"chain_info": {
"token": "TRX",
"abi": "",
"rpc": "https://nile.trongrid.io",
"browser_url": "https://nile.tronscan.org/#/transaction",
"decimal": 6,
"logo": "",
"series": "",
"monitor_chain_id": 0
}
}
}
💱 3. Taux de change
- Description de l'interface : Obtenez le taux de change actuel entre le TOKEN et la devise légale.
- Adresse de l'interface :
POST /api/order/exchange-rates
Paramètres de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| currency_id | int | Oui | ID de devise globalement unique |
fiat_name | string | Oui | Abréviation de la devise fiduciaire (USD / USDT / JPY / CHF / CAD / NOK / SEK / HKD / SGD / KRW / TWD / CNY / INR / BRL / MXN / ZAR / RUB / TRY / EUR / GBP / AUD / VND / THB) |
| fiat_amount | string | Oui | Montant de la devise fiduciaire |
Description des champs de réponse
| Champ | Type | Description |
|---|---|---|
| amount | string | Montant |
| exchange_rate | string | Taux de change |
Exemple de réponse réussie
{
"code": 0,
"msg": "success",
"data": {
"amount": "0.00001971",
"exchange_rate": "100"
}
}
📋 4. Liste des jetons de l'application (avec solde)
- Description de l'interface : Retourne les cryptomonnaies pour lesquelles l'encaissement est activé pour l'application actuelle (
X-Appid), avec les soldes agrégés par adresse (même base quePOST /api/account/balance). Ce n'est pas le catalogue complet de la plateforme ; pour tous les jetons pris en charge, voir §5 Liste de jetons. - Adresse de l'interface :
POST /api/currency/app-token-list - Paramètres de la requête : Corps
{}, en-têtes d'authentification identiques aux autres API.
Description des champs de réponse
Objet racine :
| Champ | Type | Description |
|---|---|---|
| code | integer | Code métier, 0 = succès |
| msg | string | Message |
| data | array | Jetons avec encaissement activé et soldes pour l'application |
Éléments de data[] :
| Champ | Type | Description |
|---|---|---|
| currency_id | integer | ID de devise unique global |
| chain | string | Nom de la chaîne |
| network | string | Nom du réseau |
| token | string | Symbole du jeton |
| contract | string | Adresse du contrat |
| chain_id | integer | ID de chaîne |
| logo | string | URL du logo |
| decimal | integer | Décimales du jeton |
| balance | string | Solde total (chaîne décimale) |
| operable_balance | string | Solde utilisable |
| frozen_amount | string | Montant gelé |
| status | integer | Statut : 1 — activé, 2 — désactivé |
| transaction_enabled | boolean | Encaissement activé (toujours true dans cette réponse) |
Exemple de réponse réussie
{
"code": 0,
"msg": "success",
"data": [
{
"currency_id": 46,
"chain": "Tron",
"network": "Nile",
"token": "JST",
"contract": "TF17BgPaZYbxxxxhriubPDsA7ArKoLX3",
"chain_id": 3448148188,
"logo": "https://halo-n.oss-ap-southeast-1.aliyuncs.com/png/202505/xxx-c3f3-4d5d-a9b5-0143d78326f9.png",
"decimal": 18,
"balance": "0.785074013",
"operable_balance": "0.785074013",
"frozen_amount": "0",
"status": 1,
"transaction_enabled": true
}
]
}
📋 5. Liste de jetons
- Description de l'interface : Obtenez la liste des jetons pris en charge par le système. Pour les jetons avec encaissement activé et les soldes de votre application, utilisez §4 Liste des jetons de l'application.
- Adresse de l'interface :
POST /api/currency/token-list - Paramètres de la requête : Aucun
Description des champs de réponse
| Champ | Type | Description |
|---|---|---|
| currency_id | int | ID de devise globalement unique. |
| chain | string | Chaîne |
| network | string | Réseau |
| token | string | Jeton |
| contract | string | Adresse du contrat. Si la devise principale actuelle est identique au nom de la devise, la valeur correspondra au nom de la devise. |
| chain_id | int | ID de chaîne. Seule la série Ethereum a une valeur. |
| logo | string | Logo |
| decimal | int | Précision |
Exemple de réponse réussie
{
"code": 0,
"msg": "success",
"data": [
{
"currency_id": 46,
"chain": "Tron",
"token": "JST",
"network": "Nile",
"contract": "TF17BgPaZYbxxxxhriubPDsA7ArKoLX3",
"chain_id": 3448148188,
"logo": "https://halo-n.oss-ap-southeast-1.aliyuncs.com/png/202505/xxx-c3f3-4d5d-a9b5-0143d78326f9.png",
"decimal": 18
}
]
}
💸 6. Paiement (Retrait)
- Description de l'interface : Les marchands peuvent retirer de l'argent vers une adresse spécifiée via cette interface.
- Adresse de l'interface :
POST /api/payout/create
Paramètres de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| currency_id | int | Oui | ID de devise globalement unique |
| amount | string | Oui | Montant de base de la devise |
| to_address | string | Oui | Adresse du destinataire |
| callback_url | string | Non | Adresse de rappel (adresse de rappel par défaut définie par l'APPID du marchand) |
| google_code | string | Non | Code de vérification Google (requis si la vérification est activée pour l'application actuelle) |
Exemple de réponse réussie
{
"code": 0,
"msg": "success",
"data": {
"cost": "0.801502",
"actual_receipt": "0.001",
"trade_no": "202603171746187e582d1b789b27ea55",
"estimated_transfer": "0"
}
}
📊 7. Interroger l'état du transfert
- Description de l'interface : Interrogez le statut de la commande de paiement.
- Adresse de l'interface :
POST /api/payout/detail
Paramètres de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| trade_no | string | Oui | Numéro de transaction |
Description des champs de réponse
| Champ | Type | Description |
|---|---|---|
| trade_no | string | ID de transaction |
| service_charge | string | Frais de service |
| gas | string | Frais de GAS |
| token | string | Devise |
| amount | string | Montant |
| target_address | string | Adresse du destinataire |
| start_time | int | Heure de début |
| created_time | int | Heure de création |
| status | string | Statut de la transaction (CONFIRMING-PROGRESS : En cours de confirmation, PAID : Succès, FAIL : Échec, CANCEL : Annulé, PROGRESS : En attente) |
Exemple de réponse réussie
{
"code": 0,
"msg": "success",
"data": {
"service_charge": "0.000002",
"gas": "0.8015",
"amount": "0.001",
"status": "TRANSFER",
"target_address": "TDYiTL3pke3T9BsoTotbKb922WsXQCmSxv",
"start_time": 1773740882,
"created_time": 1773740882,
"trade_no": "202603171748020a09cbb09b4846bc99",
"token": "DK7bKg181cC7pBgX3PxSIH2WdklZ5IPT"
}
}
💰 8. Vérifier le solde
Récupérez les informations de solde d'une seule devise pour une application via cette API.
- Adresse de l'interface :
POST /api/account/balance
Paramètres de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| currency_id | int | Oui | ID de devise globalement unique |
Description des champs de réponse
| Champ | Type | Description |
|---|---|---|
| currency_id | int | ID de devise globalement unique |
| balance | string | Quantité restante |
| balance_usdt | string | Valeur de la quantité restante convertie en USDT |
| operable_balance | string | La quantité utilisable (Si le montant de la devise principale dans l'adresse du portefeuille est trop bas pour être collecté, cette adresse de portefeuille ne peut pas être utilisée. Référez-vous au centre personnel => paramètres réseau pour le seuil minimum utilisable.) |
| operable_balance_usdt | string | Valeur de la quantité utilisable |
| chain | string | Nom de la chaîne |
| network | string | Réseau |
| token | string | Jeton |
| contract | string | Adresse du contrat (jeton principal comme nom de jeton abrégé) |
Exemple de réponse réussie
{
"code": 0,
"msg": "success",
"data": {
"currency_id": 46,
"balance": "0.785074013",
"operable_balance": "0.785074013",
"operable_balance_usdt": "0.043642",
"balance_usdt": "0.043642",
"chain": "Tron",
"network": "Nile",
"token": "JST",
"contract": "TF17BgPaZYbz8oxbjhriubPDsA7ArKoLX3"
}
}
🖼️ 9. Code QR de paiement statique
- Description de l'interface : Demandez une adresse de paiement statique indépendante via l'API. Elle rappellera l'adresse de l'interface CallBack de l'APPID correspondant.
- Adresse de l'interface :
POST /api/payment-qr-code/create
Paramètres de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| name | string | Oui | Nom du code QR |
| currency_id | int | Oui | ID de devise globalement unique |
| amount | string | Non | Montant de paiement par défaut (peut être "0") |
Description des champs de réponse
| Champ | Type | Description | Exemple |
|---|---|---|---|
| id | int | ID de code QR unique | 115 |
| address | string | Adresse de paiement statique | "TXd8UKLtLqk5V15v7e3W43ZdNw6berp6DP" |
Exemple de réponse réussie
{
"code": 0,
"msg": "success",
"data": {
"id": 115,
"address": "TXd8UKLtLqk5V15v7e3W43ZdNw5berp6DP"
}
}
Cela nécessite l'APPID de l'application de code QR pour effectuer une requête à cette API.