支付接口文档
左侧快速定位,右侧查看说明与在线调试。
平台说明
本接口提供相关充值、提现、查询订单等功能
快速开始
- 进入商户后台首页,获取
app_id与app_secret - 严格按 签名规则 生成
sign签名 - 对接域名:
https://payapi.ztpay188.com - 发起收款或代付请求,一定要严格按照所需字段传入
- 异步通知:在
notify_url接收支付/代付结果,完成业务更新。 - 可在文档底部「在线调试」直接生成签名并发起请求。
签名规则
所有发送的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。再在后面拼接接入app_secret得到字符串stringB。最后进行md5加密得到sign签名
请求字段中的sign、sign_type、extra不参与签名
// php代码参考,params为请求参数,调用buildRequestParam即可,其他语言可自行用ai转换
private function buildRequestParam($param=[]){
$mysign = $this->getSign($param);
$param['sign'] = $mysign;
$param['sign_type'] = 'md5';
return $param;
}
// 计算签名
private function getSign($param=[]){
ksort($param);
reset($param);
$signstr = '';
foreach($param as $k => $v){
if($k != "sign" && $k != "sign_type" && $k != "extra" && $v!=''){
$signstr .= $k.'='.$v.'&';
}
}
$signstr = substr($signstr,0,-1);
$signstr .= $this->app_secret;
$sign = md5($signstr);
return $sign;
}
//js代码参考
function signParams(params) {
const appSecret = appSecretInput.value.trim();
if (!appSecret) throw new Error("请填写 app_secret");
// 创建临时对象,排除不需要签名的字段
const tempParams = {};
for (const key in params) {
if (params.hasOwnProperty(key)) {
const value = params[key];
if (key !== "sign" && key !== "sign_type" && key !== "extra" && value !== "") {
tempParams[key] = value;
}
}
}
// 按键名排序
const sortedKeys = Object.keys(tempParams).sort();
// 构建签名字符串(类似PHP的方式)
let signStr = '';
sortedKeys.forEach((key, index) => {
signStr += `${key}=${tempParams[key]}`;
if (index < sortedKeys.length - 1) {
signStr += '&';
}
});
signStr += appSecret;
return md5(signStr);
}
验签失败常见原因:参数缺失、未去除空值、排序错误、app_secret不匹配。
异步通知
当订单状态变化时,平台以 POST form 方式回调 notify_url。建议收到后:
- 按签名规则再次验签。
- 根据
status更新业务订单并返回success(避免重复通知,请返回success字符串,不要返回其他字符串)。
//充值订单提现订单的通知都只会有如下参数,会对下面的进行签名
{
"app_id": 61,
"trade_no": "W1004_202512152324344311",
"out_trade_no": "out_trade_no",
"pay_type": "bankpay",
"status": 1, //订单状态 充值订单2表示成功3表示失败,提现订单4表示成功5表示失败
"amount": "100.00",
"name": "11",
"timestamp": 1765812274,
}
充值下单 POST /shop_api/order/charge_submit
创建充值下单,返回支付链接。跳转到支付链接进行页面支付
//返回结果示例
{
"code": 0,
"message": "操作成功",
"data": {
"trade_no": "1004_202512152224528050",
"out_trade_no": "123456",
"pay_url": "http://payweb.***.com/en.html?trade_no=1004_202512152224528050"
}
}
| 字段 | 参数名称 | 说明 | 类型 |
|---|---|---|---|
| 等待加载字段... | |||
提现下单 POST /shop_api/order/withdraw_submit
创建提现订单,返回提现单号等。
//返回结果示例
{
"code": 0,
"message": "操作成功",
"data": {
"id": 61,
"trade_no": "W1004_202512152324344311",
"out_trade_no": "out_trade_no",
"name": "hahah",
"username": null,
"out_user_id": "11",
"extra": "",
"timestamp": 1765812274,
"status": "1", //订单状态 1,2,3-进行中,4-成功,5-失败
"paytime": null,
"pay_image": null,
"ip": null,
"pay_type": "bankpay",
"amount": "100.00",
"addtime": "2025-12-15 23:24:34",
"endtime": null,
"notify_url": "http://www.baidu.com",
"code_account": "",
"code_name": "",
"code_image": "",
"bank_name": "2213213",
"bank_card": "qweqweqw",
"bank_code": "CiH"
}
}
| 字段 | 参数名称 | 说明 | 类型 |
|---|---|---|---|
| 等待加载字段... | |||
银行列表 GET /shop_api/system/bank/drop_list_all?app_id=1007
获取支持的银行编码。
| 字段 | 必填 | 说明 |
|---|---|---|
| app_id | 是 | 商户app_id |
{
"code": 0,
"message": "操作成功",
"data": {
"total": 4,
"per_page": 1,
"current_page": 4,
"list": [
{
"id": 2,
"name": "银行卡2",
"code": "CODE2",
"image": "https://picsum.photos/200/200?random=2"
},
{
"id": 3,
"name": "Al barid bank .",
"code": "Al",
"image": "https://pay.dhnpay.cc/uploads/20251202/898928a898171eb95705aed9f3ae0e76.jpg"
},
{
"id": 4,
"name": "CiH Bank.",
"code": "CiH",
"image": "https://pay.dhnpay.cc/uploads/20251202/089956e00bb88308a7d1e9e0e6dbad20.jpg"
},
{
"id": 5,
"name": "请问请问",
"code": "2313",
"image": "21321321"
}
]
}
}
充值订单查询 GET /shop_api/order/charge_order?trade_no=11112222
| 字段 | 必填 | 说明 |
|---|---|---|
| trade_no | 是 | 平台代付单号 |
//返回结果示例
{
"code": 0,
"message": "操作成功",
"data": {
"id": 1555,
"trade_no": "1004_202512142344248576",
"name": "hahah",
"username": "小王",
"out_user_id": "11",
"extra": "",
"timestamp": 1765727064,
"status": "1", //订单状态 0-未付款,1-已付款,2-付款成功,3-付款失败
"paytime": "2025-12-15 21:43:36",
"pay_image": "https://payapi.ztpay188.com/upload/expand/20251215214122_69401002664ed.png",
"ip": "112.32.81.114",
"out_trade_no": "123456",
"pay_type": "bankpay",
"amount": "100.00",
"addtime": "2025-12-14 23:44:24",
"endtime": null,
"notify_url": "http://www.baidu.com",
"return_url": "http://www.baidu.com"
}
}
提现订单查询 POST /shop_api/order/withdraw_order?trade_no=11112222
| 字段 | 必填 | 说明 |
|---|---|---|
| trade_no | 是 | 平台代付单号 |
//返回结果示例
{
"code": 0,
"message": "操作成功",
"data": {
"id": 41,
"trade_no": "1111_202512040918539843",
"out_trade_no": "1996492059275563008",
"name": "代付2706.00元",
"username": null,
"out_user_id": "",
"extra": "",
"timestamp": 1764836333,
"status": "1", //订单状态 1,2,3-进行中,4-成功,5-失败
"paytime": null,
"pay_image": null,
"ip": null,
"pay_type": "bankpay",
"amount": "2706.00",
"addtime": "2025-12-04 09:18:53",
"endtime": null,
"notify_url": "https://smglg.com/api/pay/channel/notify/ztPay/agent/notify",
"code_account": "",
"code_name": "",
"code_image": "",
"bank_name": "Mohamedd",
"bank_card": "007010000679330040292585",
"bank_code": "ATT"
}
}