文档
测试

再次支付接口

POST
/api/in/applet/v1/pay/wxPayAgain

接口描述

再次支付接口

请求参数

参数名
类型
描述
必填
uid
char(1)
用户ID
必填
orderId
int(1)
订单ID
必填
timestamp
int(11)
时间戳
必填
randomStr
char(32)
32位随机数
必填
sign1
char(32)
一次签名,详情签名方式看下方描述
必填
sign2
char(32)
二次签名,详情签名方式看下方描述
必填

响应参数

参数名
类型
描述
必填
order_num
int(11)
订单号
必填
price
varchar(30)
总价格
必填
appId
char(2)
appId
必填
nonceStr
varchar(255)
随机数
必填
package
varchar(255)
统一订单
必填
signType
char(10)
签名算法【MD5】
必填
timeStamp
int(11)
时间戳
必填
sign
varchar(255)
签名
必填
goodsTotalPrice
必填

算法

1.需要加密参数uid,orderId,timestamp,randomStr 2.将需要加密的数组按照键名正向排序 3.然后需要将排序好的{key=val}的方式进行拼接 例如:uid=1goodsId=31specsId=34 4.拼接好的字符串md5加密即可完成一次加密 5.将一次加密也放进数组 6.将需要加密的数组加上一次加密按照键名反向排序 7.然后需要将排序好的{key=val}的方式进行拼接 例如:uid=1goodsId=31specsId=34 8.拼接好的字符串md5加密即可完成二次加密 /举例 //验证签名 sign $signArr['uid'] = $data['uid']; $signArr['orderId'] = $data['orderId']; $signArr['timestamp'] =$data['timestamp']; $signArr['randomStr'] =$data['randomStr']; $sign1 = paySign($signArr); //第一次签名 if( $data['sign1'] == $sign1 ){ $signArr['sign1'] = $sign1; }else{ return show(-4, '第一次签名认证失败'); } $sign2 = paySign($signArr, 2); //第二次签名 if( $data['sign2'] != $sign2 ){ return show(-4, '第二次签名认证失败'); } //签名方法 function paySign($arr, $sort = 1) { $str = ''; //初始化str if($sort == 1){ ksort($arr); //按照键名正向排序 }else{ krsort($arr); //按照键名逆向排序 } //遍历拼接数组 foreach($arr as $k=>$v) { $str .= "{$k}={$v}"; } return strtolower(md5($str)); //加密且转化为小写 }

说明 / 示例

{ "status": 1, "message": "下单成功", "data": { "wxData": { "appId": "wx6590b5bbe6dbd857", "nonceStr": "kilE9JmqhqRq2C0jCJJK2CekmNIQuEvX", "package": "prepay_id=wx160023007109087092401bb51261076700", "signType": "MD5", "timeStamp": 1586967781, "sign": "9E57975A4690F339D783DDEAE1BEF75E" }, "goodsTotalPrice": 3500 } }