支付系统
- 所有请求参数去除空值后按照ASCII 码的升序进行排序,按照key1=value1&key2=value2进行组合,最后加上商户秘钥(&paySecret=商户秘钥),进行md5运算,结果转为大写
- function($data, $signkey){
- $data = array_filter($data); //去空
- ksort($data); //排序
- $tmp_string = http_build_query($data); //进行键值对排列 a=1&b=2&c=3
- $tmp_string = urldecode($tmp_string); //参数无需进行urlencode ,上一步进行了urlencode,这里还原一下
- return strtoupper(md5( $tmp_string .'&paySecret='. $signkey )); //签名大写生成
- }
- --------------------------------------------------------------------------------------------------------------
- <h3>必填参数</h3>
- payKey 商户key:商户后台查看
- orderNo 商户订单号:订单长度10-50位;可传字母或数字;应确保订单号唯一性
- orderPrice 订单金额:单位元,可为整数,
- payWayCode 通道编号:商户后台查看
- notifyUrl 异步通知地址:订单成功后会通知此地址
- orderPeriod 产品过时时间默认为 1
- osType 支付设备系统类型不能为空, 默认值:1
- productName 产品名称
- returnUrl 回调地址
- --------------------------------------------------------------------------------------------------------------
- sign 签名:见公共签名规则
- <h3>下单响应</h3>
- statusCode 01:下单失败; 00:下单成功
- msg 中文描述 如:下单成功!
- data json Object => {payUrl:'http://www.baidu.com'}
- 示例:{factPrice=200.00, orderNo=P212115017828237735042, orderPrice=200.00, orderTime=2024061121:21:56, payKey=kkkkcpjafDFEWf2fcv92i070, sign=0CFD2BSWDFSFEEEE3A24961F3F7D1E150, statusCode=00, tradeStatus=success, trxNo=6666cpk4uit9f4etvuj99pa0}
- <h3>必填参数</h3>
- merchantKey 商户号:商户后台查看
- merchantOrderId 商户订单号:订单长度10-50位;可传字母或数字;应确保订单号唯一性
- sign 签名:见公共签名规则
- ------------------------------------------------------------------------------------------------------------
- <h3>查询接口响应示例</h3>
- {
"Data": {
"merchantId": "查询成功",
"merchantOrderId": "E20240808153448212065",
"msg": "已支付",
"orderId": "E20240808153448212065",
"settStatus": "02",
"sign": "0B0F3242B5A2A139CEB7DAA7412A672F",
"status": "paid",
"wail": "查询成功"
},
"statusCode": "00",
"msg": "请求成功"
}
- code 500 查询异常; 200:查询成功 此处的只代表查询操作成功,不代表订单成功
- msg 中文描述 如:查询成功
- data { merchantOrderId:商户号 orderId:商户订单号 status:订单状态码paid支付成功 wail支付失败 msg:订单状态描述 sign:签名 }
- <b>注意:请一定知晓,data字段内的状态码才是订单的支付状态!</b>
- data->status 字段值为 paid时 才表示订单已支付 未支付状态值是 wail
- 订单完成支付后,下单接口里面的异步通知地址会收到服务器点对点通知。
- 请求方式 post application/x-www-urlencoded
- <b>通知参数</b>
- trxNo 商户号
- orderNo 商户订单号
- orderPrice 订单金额
- tradeStatus 订单状态 订单已支付才会回调,此参数值固定为 success
- sign 回调签名
- 注意:收到我方回调通知后,请返回小写或大写符串 SUCCESS或success 否则我方将按一定频率重复通知若干次
- 回调案例:{"factPrice":"100.00","orderNo":"E20240729141234321294","orderPrice":"100.00","orderTime":"2024072914:13:14","payKey":"kkkkcqj1ss2aq","sign":"0408C6E5F7B1F7CAC306","statusCode":"00","tradeStatus":"success","trxNo":"6666cqjj5kpociaomfn8ii90"}
- --------------------------------------------------------------------------------------------------------------
- <h3>必填参数</h3>
- merchantKey 商户key:商户后台查看
- merchantOrderId 商户订单号:订单长度10-50位;可传字母或数字;应确保订单号唯一性
- amount 订单金额:单位元,可为整数,
- bankName 银行名称:中国银行
- notifyUrl 异步通知地址:订单成功后会通知此地址
- realname 开户姓名1
- cardNo 开户卡号,填写支付宝账户/卡户
- accType 对公默认0
- --------------------------------------------------------------------------------------------------------------
- sign 签名:见公共签名规则
- <h3>下单响应</h3>
- statusCode 01:下单失败; 00:下单成功
- msg 中文描述 如:下单成功!
- 示例:{ "resultCode": "00", "resultMsg": "银行处理中", "settAmount": "10" }