🌐 Intégration de la Page de Paiement Hébergée
Intégrez la page de paiement hébergée par HaloPay. Les clients sont redirigés vers une page de paiement hébergée par HaloPay. Il s'agit de l'intégration la plus simple avec un minimum de travail front-end.
📦 Étape 1 : Créer une commande de paiement
Soumettre l'ordre de paiement et recevoir l'adresse de paiement
**POST** https://api.pay.halochat.io/api/entrust/pre-create
Renvoie l'adresse de réception/le code QR et les informations sur la commande
Headers
| Nom | Type | Description |
|---|---|---|
| X-Sign* | String | hmacSHA256 (body (json string)+timestamp+appKey). Guide de signature. |
| X-Timestamp* | String | Horodatage en secondes (10 chiffres). La demande est valable pendant deux minutes. |
| X-Appid* | String | Identifiant unique du marchand. Retrouvez-le sur la page AppManage. |
| content-type* | String | application/json |
Corps de la Requête (Body)
| Nom | Type | Requis | Description |
|---|---|---|---|
| out_trade_no | String | Oui | ID de commande dans le système du marchand. Un ID unique pour chaque commande |
| symbol | String | Oui | Symbole de la monnaie fiduciaire |
| amount | String | Oui | Montant (arrondi à 2 décimales) |
| name | String | Non | Nom du produit |
| image | String | Non | URL de l'image du produit |
| describe | String | Non | Description du produit |
| time_expire | String | Non | Délai d'expiration (secondes), 0 indique la valeur par défaut |
| callback_url | String | Non | URL de rappel (callback) |
Exemple de Corps de Requête
{
"out_trade_no": "uz54NEW9TVhLSIDHUSYB4aEFupKoE7I8",
"symbol": "USD",
"amount": "15",
"name": "PRODUCT_NAME",
"image": "https://callback.com/logo.png",
"describe": "CHECKOUT_DESCRIPTION",
"time_expire": 1773750780,
"callback_url": "https://callback.com/"
}
Réponse (Succès 200)
Header
| Nom | Valeur | Requis | Type | Description |
|---|---|---|---|---|
| X-Appid | h3j6k9m2n... | Y | String | Identifiant unique du marchand. Retrouvez-le sur la page AppManage. |
| X-Timestamp | 1677152490 | Y | String | Horodatage en secondes (10 chiffres). La demande est valable pendant deux minutes. |
| X-Sign | e0b78d93... | Y | String | hmacSHA256 (body (json string)+timestamp+appKey). Guide de signature. |
Body
{
"code": 0,
"msg": "success",
"data": {
"url": "https://checkout.pay.halochat.io/202603172021145994e1572e91672b34",
"time_expire": 1773750780,
"trade_no": "202603172021145994e1572e91672b34"
}
}
Paramètres
| Nom | Valeur | Requis | Type | Description |
|---|---|---|---|---|
| code | 0 | true | Integer | |
| message | success | true | String | |
| data | true | Object | ||
| data.url | https://checkout.pay.halochat.io/202603172021145994e1572e91672b34 | true | String | L'adresse de la page web utilisée pour le paiement |
| data.time_expire | 1773754032 | true | Integer | Date limite de paiement |
| data.trade_no | 202603172021145994e1572e91672b34 | true | String | ID de la commande HaloPay |
Réponse (Échec 200)
{
"code": 10003,
"msg": "Params Error: Invalid amount",
"data": null
}
| Nom | Valeur | Requis | Type | Description |
|---|---|---|---|---|
| code | 10003 | true | Number | |
| msg | Service error, please try again | true | String | |
| data | true | Object |
Par mesure de sécurité, nous signerons les données retournées (et d'après ceci, seul { code: 0 } devrait être signé, mais cela signe tout le corps retourné). De plus, il renverra Appid, Sign, Timestamp dans l'en-tête de la réponse. La méthode de signature est hmacSHA256 (body (json string)+timestamp+appKey). Veuillez utiliser les données avec prudence si la vérification de la signature échoue. Cela indique que les données ont été altérées.
Le corps (body) de la requête HTTP est une chaîne json. Ajoutez le contenu du corps de la requête HTTP à la signature. Assurez-vous que le contenu du corps correspond au contenu de la signature. Dès qu'HaloPay recevra la demande, le contenu du corps sera lu et la signature sera vérifiée.