1、准备工作
接口地址:http://www.epusdt.com/plugin.php?id=epusdt_server
APPID:在 收银台 中申请;
APPKey:在 收银台 中申请;
2、请求接口获取支付地址
2.1请求方式GET:- http://www.epusdt.com/plugin.php?id=epusdt_server&ac=init&appid='.$appid.'&client_orderid='.$orderid.'&amount='.$needMoney.'&url_n='.$notify_url.'&url_r='.$return_url.'&hash='.$hash;
复制代码 其中:
$notify_url为异步通知地址(见3.1异步通知);
$return_url为支付后返回地址;
$hash=md5($orderid.$appKey);
2.2接口返回信息
格式:json
status_code为响应码,200正常,其他为错误,错误信息:message
常见错误代码:
-101,appid不存在!
-102,签名错误!
-103,金额不正确!
-104,异步通知网址错误!
-105,返回网址错误!
400,系统错误
10002,支付交易已存在,请勿重复创建
10003,无可用钱包地址,无法发起支付
10004,支付金额有误, 无法满足最小支付单位
10005,无可用金额通道
10006,汇率计算错误
10007,订单区块已处理
10008,订单不存在
10009,无法解析参数
正常返回数据:
- {
- "status_code": 200,
- "message": "success",
- "data": {
- "trade_id": "202203271648380592218340",
- "order_id": "9",
- "amount": 53,
- "actual_amount": 7.9104,
- "token": "TNEns8t9jbWENbStkQdVQtHMGpbsYsQjZK",
- "expiration_time": 1648381192,
- "payment_url": "http://example.com/pay/checkout-counter/202203271648380592218340"
- },
- "request_id": "b1344d70-ff19-4543-b601-37abfb3b3686"
- }
复制代码 参数说明
3、回调
3.1异步回调
支付成功后,Epusdt会向目标服务器POST异步通知,告知该笔交易已经支付完成。
失败Epusdt最高最多重试5次,请注意验证消息签名。
目标服务器处理完成后请返回字符串ok即可,否则Epusdt会一直重试发送消息,最高5次
通知内容:
- {
- "trade_id": "202203251648208648961728",
- "order_id": "2022123321312321321",
- "amount": 100,
- "actual_amount": 15.625,
- "token": "TNEns8t9jbWENbStkQdVQtHMGpbsYsQjZK",
- "block_transaction_id": "123333333321232132131",
- "signature": "xsadaxsaxsa",
- "status": 2
- }
复制代码 参数说明
4、signature验证方式
签名生成的通用步骤如下: 第一步,将所有非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成待加密参数。 重要规则:
◆ 参数名ASCII码从小到大排序(字典序);
◆ 如果参数的值为空不参与签名;
◆ 参数名区分大小写; 第二步,待加密参数最后拼接上api接口认证token得到待签名字符串,并对待签名字符串进行MD5运算,再将得到的MD5字符串所有字符转换为小写,得到签名signature。 注意:signature的长度为32个字节。 举例: 假设传送的参数如下: - order_id : 20220201030210321
- amount : 42
- notify_url : http://example.com/notify
- redirect_url : http://example.com/redirect
复制代码假设api接口认证token为:epusdt_password_xasddawqe(api接口认证token可以在.env文件设置) 第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下: - amount=42¬ify_url=http://example.com/notify&order_id=20220201030210321&redirect_url=http://example.com/redirect
复制代码第二步:拼接API密钥并加密: - MD5(amount=42¬ify_url=http://example.com/notify&order_id=20220201030210321&redirect_url=http://example.com/redirectepusdt_password_xasddawqe)
复制代码最终得到最终发送的数据: - order_id : 20220201030210321
- amount : 42
- notify_url : http://example.com/notify
- redirect_url : http://example.com/redirect
- signature : 1cd4b52df5587cfb1968b0c0c6e156cd
复制代码
PHP加密示例
- function epusdtSign(array $parameter, string $signKey)
- {
- ksort($parameter);
- reset($parameter);
- $sign = '';
- $urls = '';
- foreach ($parameter as $key => $val) {
- if ($val == '') continue;
- if ($key != 'signature') {
- if ($sign != '') {
- $sign .= "&";
- $urls .= "&";
- }
- $sign .= "$key=$val";
- $urls .= "$key=" . urlencode($val);
- }
- }
- $sign = md5($sign . $signKey);//密码追加进入开始MD5签名
- return $sign;
- }
复制代码
|