Skip to content

订单接口

接口概述

订单接口是茄椒支付平台的核心接口,用于处理支付订单的创建、查询、通知等操作。所有接口都采用RESTful风格设计,支持JSON格式的数据交换。

接口基础信息

请求地址

请求头信息

所有API请求必须包含以下请求头:

请求头说明示例值
Content-Type内容类型application/json

通用响应格式

json
{
    "code": 200,
    "msg": "success",
    "data": {
        // 具体业务数据
    }
}

提交订单

接口说明

创建新的支付订单,返回订单支付数据,支持CNY(人民币)和USDT发起支付,以CNY发起会自动根据汇率返回需要支付的对应USDT金额, 以USDT发起支付则不参与汇率转换直接返回对应支付USDT金额, 用于生成指定数字货币的支付数据,包括收款金额(USDT)、收款地址、收款地址二维码等。商户可选择直接跳转至 官方的收银台 供用户支付,也可以使用数据 自定义收银台。在用户支付成功后,系统将即时进行 回调通知。

请求地址

POST /api/pay/create

请求参数

参数名类型必填说明示例值
pidstring商户ID10001
chain_typeint支付链类型支付方式: 1 波场 (TRC20)、2:以太坊 (ERC20)
order_nostring订单号20240101000001
amountdecimal订单金额100.00
currencystring货币类型,默认CNY币种:CNY 或 USDT
typeint支付类型1=链上转账 2=内部转账
platstring内部转账平台,选 type 为 2 时 必选LINK:链上交易, 欧易:OKX、币安:BINANCE、火币:HTX
scanpayint返回类型默认 11=返回订单信息 0=只返回跳转连接
notify_urlstring异步通知地址https://example.com/notify
return_urlstring同步返回地址https://example.com/return
paramobject用户自定义数据,在回调到 notifyUrl 的时候会原样返回{"user_id": "123"}
signaturestring参考 签名算法D9BB7783FA0AD06DBD3E0EA71E56F3B0

请求示例

json
{
    "pid": "10001",
    "chain_type": 1,
    "order_no": "20240101000001",
    "amount": "100.00",
    "type": 1,
    "currency": "CNY",
    "scanpay": 1,
    "notify_url": "https://example.com/notify",
    "return_url": "https://example.com/return",
    "param": "{\"user_id\": \"123\"}",
    "signature": "D9BB7783FA0AD06DBD3E0EA71E56F3B0"
}

响应参数一

  • scanpay 为 1 时,返回订单信息
参数名类型说明示例值
plat_order_nostring平台订单ID20240101000001
u_addrstring平台收款钱包地址0x1234567890abcdef1234567890abcdef12345678
u_typestring平台收款钱包类型1=波场 (TRC20) 2=以太坊 (ERC20)
amountdecimal支付的USDT金额1.000001
expire_timeint支付过期时间戳1704069000

响应示例一

json
{
    "code": 200,
    "msg": "success",
    "data": {
        "plat_order_no": "P20240101000001",
        "u_addr": "0x1234567890abcdef1234567890abcdef12345678",
        "u_type": "TRC20",
        "amount": "1.000001",
        "expire_time": 1704069000
    }
}

响应参数二

  • scanpay 为 0 时,返回订单信息
参数名类型说明示例值
urlstring平台订单支付URLhttps://www.qiejiao.com/index/payment/order?plat_order_no=20240101000001
plat_order_nostring平台订单ID20240101000001

响应示例二

json
{
    "code": 200,
    "msg": "success",
    "data": {
        "url": "",
        "plat_order_no": "20240101000001"
    }
}

订单查询

接口说明

查询订单支付状态和详细信息。

请求地址

GET /api/pay/query

请求参数

参数名类型必填说明示例值
pidstring商户ID123456789
order_nostring商户订单号20240101000001

请求示例

bash
GET /api/pay/query?pid=10001&order_no=20240101000001

响应参数

参数名类型说明示例值
plat_order_nostring平台订单IDP20240101000001
order_nostring商户订单号20240101000001
amountdecimal订单金额100.00
statusstring订单状态pending, paid, failed, expired
u_typestring支付方式1=波场 (TRC20) 2=以太坊 (ERC20)
paytimeint支付时间戳1704067300
createtimeint创建时间戳1704067200

响应示例

json
{
    "code": 200,
    "msg": "success",
    "data": {
        "plat_order_no": "P20240101000001",
        "order_no": "20240101000001",
        "amount": "1.000001",
        "status": "paid",
        "u_type": "TRC20",
        "paytime": 1704067300,
        "createtime": 1704067200,
    }
}

异步通知

通知说明

支付成功后,平台会向商户配置的notify_url发送异步通知。商户需要正确处理通知并返回响应。

通知参数

参数名类型说明示例值
pidstring商户ID10001
plat_order_nostring平台订单IDP20240101000001
order_nostring商户订单号20240101000001
amountdecimal支付的usdt金额1.000001
cny_amountdecimalcny金额7.2
statusstring支付状态paid
paytimeint支付时间戳1704067300
chain_typestring支付链类型1=波场 (TRC20) 2=以太坊 (ERC20)
paramstring用户自定义数据{"user_id": "123"}
signaturestring通知签名 参考 签名算法D9BB7783FA0AD06DBD3E0EA71E56F3B0

通知示例

json
{
    "pid": 10001,
    "plat_order_no": "P20240101000001",
    "order_no": "20240101000001",
    "chain_type": 1,
    "amount": "1.000001",
    "status": "paid",
    "paytime": 1704067300,
    "createtime": 1704067200,
    "param": "{\"user_id\": \"123\"}",
    "signature": "D9BB7783FA0AD06DBD3E0EA71E56F3B0"
}

响应要求

商户收到通知后,需要在3秒内返回响应:

  • 成功响应:返回HTTP 200状态码和success字符串
  • 失败响应:返回其他状态码或错误信息

处理流程

php
// 异步通知处理示例
public function notifyHandler()
{
    try {
        // 获取通知数据
        $data = $this->request->post();
        
        // 验证签名
        if (!$this->verifySignature($data)) {
            throw new Exception('签名验证失败');
        }
        
        // 验证订单状态
     
        
        // 返回成功响应
        echo 'success'
        exit;
    } catch (Exception $e) {
        // 记录错误日志
        Log::error('异步通知处理失败: ' . $e->getMessage());
        echo 'fail'
    }
}

手动补单

接口说明

当异步通知失败或商户系统异常时,可以使用手动补单接口重新获取订单状态。

请求地址

POST /api/pay/supplement

请求参数

补单如果能提供 交易哈希值能提高补单成功率,

参数名类型必填说明示例值
pidstring商户ID123456789
order_nostring业务订单号20240101000001
p_addrstring付款钱包地址20240101000001
hashstring交易哈希值0x3ebc59510baaa6861e98*****e
signaturestring签名 参考 签名算法D9BB7783FA0AD06DBD3E0EA71E56F3B0
  • 订单为 链上转账hash 值为交易 hash哈希值p_addr 为付款钱包地址
  • 订单为 欧易内部hash 值为 欧易平台 p_addr参考编号hash订单号
  • 订单为 币安内部hash 值为 币安平台 p_addr交易IDhash哈希值
  • 订单为 火币内部hash 值为 火币平台 p_addr区块链交易IDhash哈希值

请求示例

json
{
    "pid": "123456789",
    "order_no": "20240101000001",
    "p_addr": "0x8da7822a53485ec2ba50db89375c75faeb8dff14",
    "hash": "0x3ebc59510baaa6861e980af93af101870357d14847edd621949d57aa9f450e5e",
    "signature": "D9BB7783FA0AD06DBD3E0EA71E56F3B0"
}

响应参数

与订单查询接口相同。

响应示例

json
{
    "code": 200,
    "msg": "success",
    "data": {
        "plat_order_no": "20240101000001",
        "order_no": "20240101000001",
        "amount": "100.00",
        "status": "paid",
        "u_type": "wechat",
        "paytime": 1704067300,
    },
}

收银台

商户可直接从创建订单返回数据中,取出 payUrl 字段,然后跳转至该地址,供用户支付。

订单流程示意图
订单流程示意图

错误代码

错误代码错误描述解决方案
1成功请求处理成功
403权限不足检查商户权限设置
404资源不存在检查请求的资源路径
409订单已存在使用新的订单号重新提交
422业务逻辑错误检查业务规则限制
429请求频率过高降低请求频率
500服务器错误联系技术支持
503服务不可用服务维护中,稍后重试

注意事项

  1. 订单号唯一性:商户订单号必须保证唯一性
  2. 金额精度:金额精确到分,使用字符串类型避免精度问题
  3. 时间戳:使用Unix时间戳,单位为秒
  4. 签名验证:所有请求都必须进行签名验证
  5. 异步通知:确保异步通知接口能够正确处理请求
  6. 错误重试:对于网络错误,建议使用指数退避策略重试
  7. 日志记录:记录所有接口调用日志,便于问题排查

订单接口是支付系统的核心,请严格按照文档要求进行对接。如有问题,请联系技术支持。

Released under the MIT License.