创建订单
说明
创建订单后接口会返回收款链接,用户通过链接进入收银台进行支付。
接口地址
POST https://api.ttpay.io/v1/transaction/prepayment
接口参数
名称 | 位置 | 类型 | 必选 | 说明 |
---|---|---|---|---|
app_id | header | string | 是 | 应用 ID,示例值:8e4b8c2e7cxxxxxxxx1a1cbd3d59e0bd |
mch_id | body | string | 是 | 商户 ID,示例值:1234567890 |
description | body | string | 否 | 订单描述,示例值:充值 |
out_trade_no | body | string | 是 | 商户订单号,商家自行生成唯一订单号 |
expire_second | body | integer | 是 | 有效期(秒),示例值:3600 |
amount | body | number | 是 | 订单金额,示例值:15000000 |
chain | body | string | 是 | 所属公链,示例值:TRON |
currency | body | string | 是 | 币种,示例值:TRX 查看支持币种 |
to_address | body | string | 否 | 收款钱包(注:收款钱包为监听订单 的应用必填) |
attach | body | string | 否 | 自定义参数,在查询 API 和支付通知中原样返回,可作为自定义参数使用,实际情况下只有支付完成状态才会返回该字段 |
locale | body | string | 否 | 语言:zh_cn 中文、 en 英文,使用收银台将根据此设置显示默认语言。 |
notify_url | body | string | 否 | 回调地址,示例值:https://xxx/xxx 建议使用 https |
return_url | body | string | 否 | 返回地址,当支付完成或失败,点击返回按钮的地址,可以是 https 或 app 的路由。 |
order_type | body | string | 是 | 支付方式,示例值:platform_order 平台代收,merchant_order 监听订单。 |
参数示例
{
"app_id": "d549a3ac0e4641f998c6675fc539ba21",
"mch_id": "1234567890",
"description": "充值",
"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"
}
说明
app_id 可通过商户后台创建应用获取。
接口返回
名称 | 类型 | 说明 | 说明 |
---|---|---|---|
code | integer | 业务状态码 | |
msg | string | 状态描述 | |
request_id | string | 请求 ID | |
data | object | 数据对象 | |
prepay_id | string | 预支付 ID | 预支付交易会话标识。用于后续接口调用中使用,该值有效期为创建订单时设置的 expire_second 参数,也可直接访问payment_url 完成支付 |
payment_url | string | 支付收银台 URL | payment_url 为拉起支付收银台的中间页面,可通过访问该 url 完成支付,payment_url 的有效期为创建订单时设置的 expire_second 参数。 |
返回示例
{
"code": 0,
"msg": "ok",
"request_id": "9b9e08ab-48e5-4efa-83e7-97e5e3fe3d0c",
"data": {
"prepay_id": "15809074c5bbc36bce27exxxxxxxxxxxxxxxxxxxxa4ca0a281d7e1260624a1c2",
"payment_url": "/pay/order?prepay_id=15809074c5bbc36bce27exxxxxxxxxxxxxxxxxxxxa4ca0a281d7e1260624a1c2"
}
}
代码示例
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();