Order creation

TIP

After the order is created, the interface will return the payment link, and the user will enter the cash register through the link to pay.

Interface address

POST https://api.ttpay.io/v1/transaction/prepayment

Interface parameters

NameLocationTypeRequiredDescription
app_idheaderstringYesApplication ID, example value:8e4b8c2e7cxxxxxxxx1a1cbd3d59e0bd
mch_idbodystringYesMerchant ID, example value:1234567890
descriptionbodystringNoOrder description, example value:recharge
out_trade_nobodystringYesMerchant order number, the merchant generates its own unique order number
expire_secondbodyintegerYesExpiry date(second), example value:3600
amountbodynumberYesOrder amount, example value:15000000
chainbodystringYesOwned public chain, example value:TRON
currencybodystringYesCurrency, example value:TRX. View supported currencies
to_addressbodystringNoCollection wallet( Notes: payment wallet is required for the application of monitor order)
attachbodystringNoCustom parameter. It returns as-is in the query API and payment notifications and can be used as a custom parameter. In practice, this field is returned only when the payment is complete.
localebodystringNoLanguage: zh_cn Chinese、 en English.Using cash register will display the default language based on this setting.
notify_urlbodystringNoCallback url, example value:https://xxx/xxx. Suggest using https
return_urlbodystringNoReturn address, when payment is complete or fails, click the return button on the address. And it can be the https or the route of the app.
order_typebodystringYesPayment method, example value: platform_order platform collection , merchant_order monitor order

Parameters example

{
  "app_id": "d549a3ac0e4641f998c6675fc539ba21",
  "mch_id": "1234567890",
  "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"
}

TIP

app_id through the merchant backstage creating an applicationopen in new windowto obtain.

Interface return

NameTypeDescriptionDescription
codeintegerStatus code
msgstringStatus description
request_idstringRequest ID
dataobjectData object
prepay_idstringPrepayment IDPrepayment transaction session ID. It is used for subsequent interface calls, and its value is valid for the expire_second parameter set when the order is created, or you can access the payment_url directly to complete the payment.
payment_urlstringPaymwnt cash register URLpayment_url is to pull up the middle page of the payment cash register, you can complete the payment by visiting this url. You can pay by visiting the url. payment_url is valid for the expire_second parameter set when the order is created.

Return example

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

Example code

curl --location --request POST 'https://api.ttpay.io/v1/transaction/prepayment' \
--header 'Authorization: <Authorization>' \
--header 'User-Agent: TTPay API (https://ttpay.io)' \
--header 'Content-Type: application/json' \
--data-raw '<body data here>'
package main

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

func main() {

   url := "https://api.ttpay.io/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", "TTPay API (https://ttpay.io)")
   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))
}
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
   CURLOPT_URL => 'https://api.ttpay.io/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: TTPay API (https://ttpay.io)',
      'Content-Type: application/json'
   ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

import http.client
import json

conn = http.client.HTTPSConnection("https://api.ttpay.io")
payload = "<body data here>"
headers = {
   'Authorization': '<Authorization>',
   'User-Agent': 'TTPay API (https://ttpay.io)',
   'Content-Type': 'application/json'
}
conn.request("POST", "/v1/transaction/prepayment", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
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.ttpay.io/v1/transaction/prepayment")
   .method("POST", body)
   .addHeader("Authorization", "<Authorization>")
   .addHeader("User-Agent", "TTPay API (https://ttpay.io)")
   .addHeader("Content-Type", "application/json")
   .build();
Response response = client.newCall(request).execute();
Last updated: