#**支付系统接口文档** 宝塔控制台 ```Post``` 网站地址/Pay_Index.html *** >###**请求参数:** | 参数名称 | 参数含义 | 是否必填 | 参与签名 | 参数说明 | | ------ |:-----|:-----|:-----|:-----| |pay_memberid |商户号 |是 |是 |平台分配商户号 |pay_orderid |订单号 |是 |是 |上送订单号唯一, 字符长度20 |pay_applydate |提交时间 |是 |是 |时间格式:2016-12-26 18:18:18 |pay_bankcode |银行编码 |是 |是 |参考后续说明 |pay_notifyurl |服务端通知 |是 |是 |服务端返回地址.(POST返回数据) |pay_callbackurl |页面跳转通知 |是 |是 |页面跳转返回地址(POST返回数据) |pay_amount |订单金额 |是 |是 |商品金额 |pay_md5sign |MD5签名 |是 |否 |请看MD5签名字段格式 |pay_attach |附加字段 |否 |否 |此字段在返回时按原样返回(中文需要url编码) |pay_productname |商品名称 |否 |否 |pay_productnum |商户品数量 |否 |否 |pay_productdesc |商品描述 |否 |否 |pay_producturl |商户链接地址 |否 |否 *** >###**签名算法:** 签名生成的通用步骤如下: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串。 第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。 ``` stringSignTemp="pay_amount=pay_amount&pay_applydate=pay_applydate&pay_bankcode=pay_bankcode&pay_callbackurl=pay_callbackurl&pay_memberid=pay_memberid&pay_notifyurl=pay_notifyurl&pay_orderid=pay_orderid&key=key" sign=MD5(stringSignTemp).toUpperCase() ``` *** >###**支付结果通知:** 如果接收到服务器点对点通讯时,在页面输出“OK”(没有双引号,OK两个字母大写),否则会重复3次发送点对点通知. | 参数名称 | 参数含义 |参数说明 | |:------:|:-----:|:-----| |memberid |商户编号| |orderid |订单号| |amount |订单金额| |datetime |交易时间| |returncode |交易状态| “00” 为成功 |attach |扩展返回| 商户附加数据返回 |sign |签名 |请看验证签名字段格式 注:签名见签名算法。 >###**附:银行编码** | 银行编码 | 银行名称 | |:----:|:----:| |901 |微信公众号 |902 |微信扫码支付 |903 |支付宝扫码支付 |904 |支付宝手机 |905 |QQ手机支付 |907 |网银支付 |908 |QQ扫码支付 |909 |百度钱包 |910 |京东支付 >###**接入示例(PHP)** ``index.php`` ``` $pay_memberid, "pay_orderid" => $pay_orderid, "pay_amount" => $pay_amount, "pay_applydate" => $pay_applydate, "pay_bankcode" => $pay_bankcode, "pay_notifyurl" => $pay_notifyurl, "pay_callbackurl" => $pay_callbackurl, ); ksort($native); $md5str = ""; foreach ($native as $key => $val) { $md5str = $md5str . $key . "=" . $val . "&"; } //echo($md5str . "key=" . $Md5key); $sign = strtoupper(md5($md5str . "key=" . $Md5key)); $native["pay_md5sign"] = $sign; $native['pay_attach'] = "1234|456"; $native['pay_productname'] ='VIP基础服务'; ?> 支付Demo
$val) { echo ''; } ?>
``` ``page.php`` ```$xslt $_REQUEST["memberid"], // 商户ID "orderid" => $_REQUEST["orderid"], // 订单号 "amount" => $_REQUEST["amount"], // 交易金额 "datetime" => $_REQUEST["datetime"], // 交易时间 "transaction_id" => $_REQUEST["transaction_id"], // 流水号 "returncode" => $_REQUEST["returncode"] ); $md5key = "t4ig5acnpx4fet4zapshjacjd9o4bhbi"; ksort($returnArray); reset($returnArray); $md5str = ""; foreach ($returnArray as $key => $val) { $md5str = $md5str . $key . "=" . $val . "&"; } $sign = strtoupper(md5($md5str . "key=" . $md5key)); if ($sign == $_REQUEST["sign"]) { if ($_REQUEST["returncode"] == "00") { $str = "交易成功!订单号:".$_REQUEST["orderid"]; exit($str); } } ?> ``` ``server.php`` ```$xslt $_REQUEST["memberid"], // 商户ID "orderid" => $_REQUEST["orderid"], // 订单号 "amount" => $_REQUEST["amount"], // 交易金额 "datetime" => $_REQUEST["datetime"], // 交易时间 "transaction_id" => $_REQUEST["transaction_id"], // 支付流水号 "returncode" => $_REQUEST["returncode"], ); $md5key = "t4ig5acnpx4fet4zapshjacjd9o4bhbi"; ksort($returnArray); reset($returnArray); $md5str = ""; foreach ($returnArray as $key => $val) { $md5str = $md5str . $key . "=" . $val . "&"; } $sign = strtoupper(md5($md5str . "key=" . $md5key)); if ($sign == $_REQUEST["sign"]) { if ($_REQUEST["returncode"] == "00") { $str = "交易成功!订单号:".$_REQUEST["orderid"]; file_put_contents("success.txt",$str."\n", FILE_APPEND); exit("ok"); } } ?> ```