> For the complete documentation index, see [llms.txt](https://apidoc.tokenpay.me/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://apidoc.tokenpay.me/fr-fr/commande/creation-de-commande.md).

# Création de commande

{% hint style="info" %}
TASTUCE (TIP)

Une fois la commande créée, l'interface renverra le lien de paiement et l'utilisateur entrera dans la caisse via le lien pour payer. Si le commerçant a configuré une application en marque blanche, le code frontal doit également être connecté au JS-SDK. [Voir le SDK](https://www.npmjs.com/package/@ttpay/payment_modal)
{% endhint %}

#### Adresse de l'interface (Interface address)

```
POST https://api.tokenpay.me/v1/transaction/prepayment
```

#### Paramètres de l'interface (Interface parameters)

| Nom             | Emplacement | Type    | Requis | Description                                                                                                                                                                                                                                                    |
| --------------- | ----------- | ------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `app_id`        | header      | string  | Oui    | ID de l'application, valeur d'exemple : `8e4b8c2e7cxxxxxxxx1a1cbd3d59e0bd`                                                                                                                                                                                     |
| `mch_id`        | body        | string  | Oui    | ID du marchand, valeur d'exemple : `12345678`                                                                                                                                                                                                                  |
| `description`   | body        | string  | Non    | Description de la commande, valeur d'exemple : `recharge`                                                                                                                                                                                                      |
| `out_trade_no`  | body        | string  | Oui    | Numéro de commande du marchand, le marchand génère son propre numéro de commande unique                                                                                                                                                                        |
| `expire_second` | body        | integer | Oui    | Date d'expiration (secondes), valeur d'exemple : `3600`                                                                                                                                                                                                        |
| `amount`        | body        | number  | Oui    | Montant de la commande, valeur d'exemple : `15000000`                                                                                                                                                                                                          |
| `chain`         | body        | string  | Oui    | Chaîne publique propriétaire, valeur d'exemple : `TRON`                                                                                                                                                                                                        |
| `currency`      | body        | string  | Oui    | Devise, valeur d'exemple : `TRX`. [Voir les devises prises en charge](/fr-fr/devise/informations-sur-la-devise.md)                                                                                                                                             |
| `to_address`    | body        | string  | Non    | Portefeuille de collecte (Remarque : le portefeuille de paiement est requis pour l'application `monitor order`)                                                                                                                                                |
| `attach`        | body        | string  | Non    | Les paramètres personnalisés (tels que des identifiants uniques comme les ID utilisateur) sont renvoyés inchangés dans les API de requête et les notifications de paiement. En pratique, ce champ n'est renvoyé que lorsque le statut du paiement est terminé. |
| `locale`        | body        | string  | Non    | Langue : `zh_cn` Chinois, `en` Anglais. L'utilisation de la caisse affichera la langue par défaut en fonction de ce paramètre.                                                                                                                                 |
| `notify_url`    | body        | string  | Non    | URL de rappel, valeur d'exemple : `https://xxx/xxx`. [Suggère d'utiliser https](/fr-fr/description/informations-de-securite.md)                                                                                                                                |
| `return_url`    | body        | string  | Non    | Adresse de retour : lorsque le paiement est terminé ou échoue, cliquez sur le bouton de retour sur l'adresse. Cela peut être une URL https ou la route de l'application.                                                                                       |
| `order_type`    | body        | string  | Oui    | Mode de paiement, valeur d'exemple : `platform_order` collecte par la plateforme                                                                                                                                                                               |

**Exemple de paramètres (Parameters example)**

```json
{
  "app_id": "d549a3ac0e4641f998c6675fc539ba21",
  "mch_id": "12345678",
  "description": "recharge",
  "out_trade_no": "fb72xxxx-xxxx-xxxx-xxxx-xxxx8a7b52cb",
  "expire_second": 600,
  "amount": 9,
  "chain": "TRON",
  "currency": "USDT",
  "to_address": "TQjxEW2Z3p9wjoxxxxxxxxgJUrWXBun91w",
  "attach": "anim dolore",
  "locale": "zh_cn",
  "notify_url": "https://xxx/xxx",
  "return_url": "https://xxxx/xxx?id=xxxx",
  "order_type": "platform_order"
}
```

{% hint style="info" %}
ASTUCE (TIP)

`app_id` peut être obtenu via le back-office du marchand en [créant une application](https://ttpay.io/console/pages/app-list/pay-app).
{% endhint %}

#### Retour de l'interface (Interface return)

| Nom           | Type    | Description                                             | Description                                                                                                                                                                                                                                                                                                      |
| ------------- | ------- | ------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `code`        | integer | [Code de statut](/fr-fr/code-derreur/code-de-statut.md) |                                                                                                                                                                                                                                                                                                                  |
| `msg`         | string  | Description du statut                                   |                                                                                                                                                                                                                                                                                                                  |
| `request_id`  | string  | ID de la requête                                        |                                                                                                                                                                                                                                                                                                                  |
| `data`        | object  | Objet de données                                        |                                                                                                                                                                                                                                                                                                                  |
| `prepay_id`   | string  | ID de prépaiement                                       | ID de session de transaction de prépaiement. Il est utilisé pour les appels d'interface ultérieurs, et sa valeur est valide pendant le temps du paramètre `expire_second` défini lors de la création de la commande. Vous pouvez également accéder directement à l'URL `payment_url` pour finaliser le paiement. |
| `payment_url` | string  | URL de la caisse de paiement                            | `payment_url` sert à faire apparaître la page intermédiaire de la caisse de paiement, vous pouvez finaliser le paiement en visitant cette URL. `payment_url` est valide pendant le temps du paramètre `expire_second` défini lors de la création de la commande.                                                 |

#### Exemple de retour (Return example)

```json
{
    "code": 0,
    "msg": "ok",
    "request_id": "9b9e08ab-48e5-4efa-83e7-97e5e3fe3d0c",
    "data": {
        "prepay_id": "15809074c5bbc36bce27exxxxxxxxxxxxxxxxxxxxa4ca0a281d7e1260624a1c2",
        "payment_url": "/pay/order?prepay_id=15809074c5bbc36bce27exxxxxxxxxxxxxxxxxxxxa4ca0a281d7e1260624a1c2"
    }
}
```

#### Exemple de code (Example code)

{% tabs %}
{% tab title="Shell" %}

```sh
curl --location --request POST 'https://api.tokenpay.me/v1/transaction/prepayment' \
--header 'Authorization: <Authorization>' \
--header 'User-Agent: tokenpay API (https://tokenpay.me)' \
--header 'Content-Type: application/json' \
--data-raw '<body data here>'
```

{% endtab %}

{% tab title="Go" %}

```go
package main

import (
   "fmt"
   "strings"
   "net/http"
   "io/ioutil"
)

func main() {

   url := "https://api.tokenpay.me/v1/transaction/prepayment"
   method := "POST"

   payload := strings.NewReader(`<body data here>`)

   client := &http.Client {
   }
   req, err := http.NewRequest(method, url, payload)

   if err != nil {
      fmt.Println(err)
      return
   }
   req.Header.Add("Authorization", "<Authorization>")
   req.Header.Add("User-Agent", "tokenpay API (https://tokenpay.me)")
   req.Header.Add("Content-Type", "application/json")

   res, err := client.Do(req)
   if err != nil {
      fmt.Println(err)
      return
   }
   defer res.Body.Close()

   body, err := ioutil.ReadAll(res.Body)
   if err != nil {
      fmt.Println(err)
      return
   }
   fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
   CURLOPT_URL => 'https://api.tokenpay.me/v1/transaction/prepayment',
   CURLOPT_RETURNTRANSFER => true,
   CURLOPT_ENCODING => '',
   CURLOPT_MAXREDIRS => 10,
   CURLOPT_TIMEOUT => 0,
   CURLOPT_FOLLOWLOCATION => true,
   CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
   CURLOPT_CUSTOMREQUEST => 'POST',
   CURLOPT_POSTFIELDS =>'<body data here>',
   CURLOPT_HTTPHEADER => array(
      'Authorization: <Authorization>',
      'User-Agent: tokenpay API (https://tokenpay.me)',
      'Content-Type: application/json'
   ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
```

<br>
{% endtab %}

{% tab title="Python" %}

```python
import http.client
import json

conn = http.client.HTTPSConnection("https://api.tokenpay.me")
payload = "<body data here>"
headers = {
   'Authorization': '<Authorization>',
   'User-Agent': 'tokenpay API (https://tokenpay.me)',
   'Content-Type': 'application/json'
}
conn.request("POST", "/v1/transaction/prepayment", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
```

{% endtab %}

{% tab title="Java" %}

```java
OkHttpClient client = new OkHttpClient().newBuilder()
   .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "<body data here>");
Request request = new Request.Builder()
   .url("https://api.tokenpay.me/v1/transaction/prepayment")
   .method("POST", body)
   .addHeader("Authorization", "<Authorization>")
   .addHeader("User-Agent", "tokenpay API (https://tokenpay.me)")
   .addHeader("Content-Type", "application/json")
   .build();
Response response = client.newCall(request).execute();
```

{% endtab %}
{% endtabs %}
