目录
Api列表
下单
接口链接
POST https://bjun.tech/?_x=AutoPay.Api.maker_order
请求参数
字段名 |
变量名 |
必填 |
说明 |
类型 |
示例 |
应用编号 |
appid |
y |
在管理后台设置中 |
int |
6 |
随机字符串 |
nonce_str |
y |
随机字符串 |
String(32) |
dvgs1wnb |
签名 |
sign |
y |
通过签名算法计算得出的签名值 |
String(32) |
2E62FE9F0A9E271D2A9E21FA0C9C5119 |
用户订单号 |
out_trade_no |
y |
用户订单号 |
String(32) |
ATP202109281808333616 |
支付金额 |
paid_fee |
y |
支付金额 单位分 |
int |
10 |
附加数据 |
attach |
x |
附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用 |
String(127) |
{“need_paid_fee”:10} |
回调地址 |
callback_url |
x |
回调地址 |
String(256) |
http://baidu.com/callback |
跳转地址 |
redirect_url |
x |
成功支付跳转地址 |
String(256) |
http://baidu.com/redirect_url |
POST 数据格式
- application/json
示例:
{
appid: "6",
attach: "{\"paid_fee\":10}",
callback_url: "http://127.0.0.4/?_x=AutoPay.Demo.callback",
nonce_str: "dvgs1wnb",
out_trade_no: "ATP202109281808333616",
paid_fee: 10,
redirect_url: "?_x=AutoPay.Demo.make_order",
sign: "2E62FE9F0A9E271D2A9E21FA0C9C5119"
}
- application/x-www-form-urlencoded
示例:
appid=6&nonce_str=33neoj3f&paid_fee=10&out_trade_no=ATP202109281811345128&attach=%7B%22paid_fee%22%3A10%7D&callback_url=http%3A%2F%2F127.0.0.4%2F%3F_x%3DAutoPay.Demo.callback&redirect_url=%3F_x%3DAutoPay.Demo.make_order&sign=9D688D1491B5E3ABD8478A34BD1B2121
返回结果
格式:JSON
字段名 |
变量名 |
必填 |
说明 |
类型 |
示例 |
状态 |
state |
y |
返回状态 0 正常 1错误 |
Int |
0 |
返回数据 |
data |
x |
成功时 返回的数据 |
string |
{…} |
返回信息 |
msg |
x |
成功时 返回的信息 |
string |
成功 |
错误码 |
errno |
x |
失败时 返回的错误码 |
int |
1001 |
错误码描述 |
errstr |
x |
失败时 返回的错误码描述 |
string |
ERROR_REQUIRE_PARAMS |
错误信息 |
errmsg |
x |
失败时 返回的信息,可直接展示给用户 |
string |
参数错误 |
data 格式说明
字段名 |
变量名 |
必填 |
说明 |
类型 |
示例 |
订单号 |
ouid |
y |
平台订单号 |
Int |
256 |
付款金额 |
paid_fee |
y |
用户需付款金额 |
Int |
11 |
过期时间 |
expire_time |
y |
订单过期时间 |
Int |
1632823840 |
二维码地址 |
qrcode |
y |
二维码地址 |
string |
?_x=file.out&idm=37ac79 |
二维码内容 |
qrcode_str |
y |
二维码内容 |
string |
https://qr.alipay.com/xxx |
支付链接 |
pay_url |
y |
平台支付链接,可使用自己的支付链接 |
string |
… |
常见错误和错误提示
errno、errstr会重复使用,具体以errmsg为准
errno |
errstr |
errmsg |
1005 |
ERROR_SERVICE_NOT_AVAILABLE |
系统繁忙,等会再试\无可用设备,等会再试\无在线设备… |
1008 |
ERROR_OBJ_ALREADY_EXISTS |
out_trade_no 已存在 |
1001 |
ERROR_REQUIRE_PARAMS |
xxx 参数不合法 |
成功示例:
{
"state": 0,
"data":{
"ouid": "256",
"paid_fee": 11,
"expire_time": 1632823840,
"qrcode": "/?_x=file.out&idm=37ac79",
"qrcode_str": "https://qr.alipay.com/xxx",
"pay_url": "http://127.0.0.4/?_x=AutoPay.Order.toPay&ouid=256&nonce_str=rjl1x87t&sign=86E395235D6C08A0B5740876566A4435"
},
"msg": ""
}
失败示例:
{
"state": 1,
"errno": "1008",
"errstr": "ERROR_OBJ_ALREADY_EXISTS",
"errmsg": "out_trade_no 已存在"
}
查询订单
接口链接
POST https://bjun.tech/?_x=AutoPay.Api.query_order
请求参数
字段名 |
变量名 |
必填 |
说明 |
类型 |
示例 |
应用编号 |
appid |
y |
在管理后台设置中 |
int |
6 |
随机字符串 |
nonce_str |
y |
随机字符串 |
String(32) |
m4cyb12x |
签名 |
sign |
y |
通过签名算法计算得出的签名值 |
String(32) |
A36C766C1ADBE46682A9C7EE46FCE5DA |
订单号 |
ouid |
y |
平台订单号 |
int |
222 |
POST 数据格式
- application/json
示例:
{
"appid": "6",
"nonce_str": "m4cyb12x",
"ouid": "222",
"sign": "A36C766C1ADBE46682A9C7EE46FCE5DA"
}
- application/x-www-form-urlencoded
示例:
appid=6&nonce_str=m4cyb12x&ouid=222&sign=A36C766C1ADBE46682A9C7EE46FCE5DA
返回结果
格式:JSON
字段名 |
变量名 |
必填 |
说明 |
类型 |
示例 |
状态 |
state |
y |
返回状态 0 正常 1错误 |
Int |
0 |
返回数据 |
data |
x |
成功时 返回的数据 |
string |
{…} |
返回信息 |
msg |
x |
成功时 返回的信息 |
string |
成功 |
错误码 |
errno |
x |
失败时 返回的错误码 |
int |
1001 |
错误码描述 |
errstr |
x |
失败时 返回的错误码描述 |
string |
ERROR_REQUIRE_PARAMS |
错误信息 |
errmsg |
x |
失败时 返回的信息,可直接展示给用户 |
string |
参数错误 |
data 格式说明
字段名 |
变量名 |
必填 |
说明 |
类型 |
示例 |
状态 |
status |
y |
订单状态 |
int |
2 已付款 3已回调 5回调超时 |
订单号 |
ouid |
y |
平台订单号 |
Int |
256 |
支付金额 |
paid_fee |
y |
支付金额 单位分 |
int |
11 |
支付时间 |
paid_time |
y |
支付时间 时间戳 |
int |
11 |
用户订单号 |
out_trade_no |
y |
用户订单号 |
String(32) |
ATP202109281808333616 |
附加数据 |
attach |
x |
附加数据,下单时提交,原样返回 |
String(127) |
{“need_paid_fee”:10} |
跳转地址 |
redirect_url |
y |
下单时提交跳转地址 |
String(256) |
http://baidu.com/redirect_url |
常见错误和错误提示
errno、errstr会重复使用,具体以errmsg为准
errno |
errstr |
errmsg |
1003 |
ERROR_OUT_OF_LIMIT |
超时未付款 |
1009 |
ERROR_BAD_STATUS |
未付款 |
1001 |
ERROR_REQUIRE_PARAMS |
xxx 参数不合法\订单错误 |
成功示例:
{
"state": 0,
"data": {
"status": "5",
"ouid": "124",
"paid_fee": "10",
"paid_time": "1630001166",
"out_trade_no": "ATP202108261806037384",
"attach": "{\"paid_fee\":10}",
"redirect_url": ""
},
"msg": ""
}
失败示例:
{
"state": 1,
"errno": "1003",
"errstr": "ERROR_OUT_OF_LIMIT",
"errmsg": "超时未付款"
}
回调信息
由平台向用户服务器发送请求。
回调地址
下单参数中的callback_url,如果为空,则不回调。需主动查询。
回调频率
回调信息会在第 0,3,5,10,20,30,60,120,240,480,600,1200 发送,直到接口返回文本 ok
回调方式 POST
POST 格式: application/x-www-form-urlencoded
示例:
out_trade_no=ATP202108302220266024&attach=%7B%22paid_fee%22%3A10%7D&paid_time=1630333229&paid_fee=10&create_time=1630333226&status=2&ouid=142&appid=6&device_id=2&nonce_str=xqsuglqi&sign=96CEA7B56DF78F277E318BDD91EC14A7
回调请求参数
字段名 |
变量名 |
必填 |
说明 |
类型 |
示例 |
用户订单号 |
out_trade_no |
y |
用户订单号 |
String(32) |
ATP202109281808333616 |
附加数据 |
attach |
x |
附加数据,下单时提交,原样返回 |
String(127) |
{“need_paid_fee”:10} |
支付时间 |
paid_time |
y |
支付时间 时间戳 |
int |
11 |
支付金额 |
paid_fee |
y |
支付金额 单位分 |
int |
11 |
创建时间 |
create_time |
y |
平台订单创建时间 |
Int |
1632823840 |
状态 |
status |
y |
订单状态 |
int |
2 已付款 3已回调 5回调超时 |
订单号 |
ouid |
y |
平台订单号 |
Int |
256 |
应用编号 |
appid |
y |
在管理后台设置中 |
int |
6 |
设备号 |
device_id |
y |
监听设备号 |
Int |
1 |
随机字符串 |
nonce_str |
y |
随机字符串 |
String(32) |
m4cyb12x |
签名 |
sign |
y |
通过签名算法计算得出的签名值 |
String(32) |
2E62FE9F0A9E271D2A9E21FA0C9C5119 |
返回数据
纯文本
ok
签名算法
同微信支付签名算法
第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
特别注意以下重要规则:
◆ 参数名ASCII码从小到大排序(字典序);
◆ 如果参数的值为空不参与签名;
◆ 参数名区分大小写;
◆ 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。
◆ 微信接口可能增加字段,验证签名时必须支持增加的扩展字段
第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。 注意:密钥的长度为32个字节。
算法代码
php版本
class Pay
{
public static function makeSign($data, $key)
{
ksort($data);
$string = self::ToUrlParams($data);
$string = $string."&key=".$key;
$string = md5($string);
$result = strtoupper($string);
return $result;
}
public static function ToUrlParams($data)
{
$buff = "";
foreach ($data as $k => $v) {
if ($k != "sign" && $v != "" && !is_array($v)) {
$buff .= $k."=".$v."&";
}
}
$buff = trim($buff, "&");
return $buff;
}
}
$data = [
'appid'=>6,
'nonce_str'=>'m4cyb12x',
'ouid'=>222
];
$key = 'auto_pay_e522g';
$sign = Pay::makeSign($data,$key);
$data['sign'] = $sign;
体验页面
支付体验页面
QQ讨论群
点击链接加入群聊【智付讨论群】