💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 请求地址: ### http://域名/Pay.html ## 请求类型: POST ## 请求参数: | 变量名称 | 参数名称 | 是否必填 | 是否参与签名 | 参数说明 | | --- | --- | ---|--- | --- | | version | 版本号 | 是 | 是 | 固定值:1.0.0 | | memberid | 商户号 | 是 | 是 | 系统分配的商户编号,例如:10001 | | orderid | 商户订单号 | 是 | 是 | 商户订单号,长度32个字符以内,只许包含大小写英文字母、数字和下划线(_) | | amount | 订单金额 | 是 | 是 | 交易订单金额,单位:分 | | orderdatetime | 订单提交时间 | 是 | 是 | 格式:YYYY-mm-dd HH:ii:ss 例如:2020-02-02 20:20:20 | | paytype | 通道编码 | 是 | 是 | 详细请见 :[通道/银行编码表](通道编码.md) | | notifyurl | 异步回调地址 | 是 | 是 | 支付成功后系统异步回调商户的地址 | | callbackurl | 同步跳转地址 | 否 | 否 | 支付成功后系统同步跳转商户的地址 | | extend | 扩展字段 | 否 | 否 | 异步回调/同步跳转时会原值返回 | | signmethod | 签名类型 | 是 | 是 | 固定值: md5 | | sign | md5签名 | 是 | 否 | 请看[签名算法](签名算法.md) | ***** **交易请求Demo(php代码示例,其它编程语言仅供参考)** ***** ```php <?php $ArrayField = [ 'version' => '1.0.0', 'memberid' => '10001', 'orderid' => "1000120200202202020", 'amount' => '100', 'orderdatetime' => "", 'notifyurl' => 'http://xxx.xxx.com/notifyurl.php', 'paytype' => 'WXGZH', 'signmethod' => 'md5', ]; ksort($ArrayField); //按照参数名ASCII码从小到大排序 $md5key = '2JXQBG13TAUNKRYVME'; //md5密钥 $stringA = ""; foreach($ArrayField as $key => $value){ $stringA .= $key."=".$value."&"; } $stringA = substr($stringA,0,-1); //去掉最后一个 & 字符 $ArrayField["sign"] = strtoupper(md5($stringA.$md5key)); //拼接密钥后,md5加密后转为大写 $tjurl = 'http://main.lanmaopay.cn/Pay.html'; $str = '<form id="Form1" name="Form1" method="post" action="' . $tjurl . '">'; foreach ($ArrayField as $key => $val) { $str = $str . $key . ':' . $val . '<br /><input type="hidden" name="' . $key . '" value="' . $val . '">'; } $str = $str . '<input type="submit" value="submit">'; $str = $str . '</form>'; $str = $str . '<script>'; $str = $str . 'document.Form1.submit();'; $str = $str . '</script>'; echo($str); ?> ``` ## 回调参数 异步回调和同步跳转都是POST,参数都是一样的。 如果接收到系统异步回调时,在页面输出“OK”(没有双引号,OK 两个字母大写),否则会不定时重复发起回调请求。 | 变量名称 | 参数名称 | 是否参与签名 | 参数说明 | | --- | --- | --- | --- | | version | 版本号 | 是 | 固定值:1.0.0 | | memberid| 商户号 | 是 | 系统分配的商户编号,例如:10001 | | amount| 订单金额 | 是 | 订单提交的金额,单位:分 | | true_amount | 实际支付金额 | 是 | 实际支付金额,单位:分。注:有时系统可能会对提交的整数金额随机加上一个几分钱的零头,所以可能会出现订单金额与实际支付金额不一样的情况,绝大部分情况下这两个金额是一致的 | | amount_trade| 交易手续费 | 是 | 当前订单扣除的手续费,单位:分 | | orderid| 商户订单号 | 是 | 商户提交给系统的订单号 | | sysorderid| 系统订单号 | 是 | 系统生成的内部订单号 | | submitime| 提交时间 | 是 | 订单提交建立的时间。格式:YYYY-mm-dd HH:ii:ss 例如:2020-02-02 20:20:20 | | successtime| 交易成功时间 | 是 | 订单交易成功的时间。格式:YYYY-mm-dd HH:ii:ss 例如:2020-02-02 20:20:20 | | tongdao | 交易通道编码 | 是 | 详细请见 :[通道/银行编码表](通道-银行编码.md) | | status| 订单关状态 | 是 | success 成功,error 失败 | | signmethod| 签名类型 | 是 | 固定值:md5 | | extend | 扩展字段 | 如果存在此参数就参与签名 | 原值返回提交时的extend 字段的值 | | sign | md5签名 | 否 | 请看[签名算法](签名算法.md) | ***** **回调Demo(php代码示例,其它编程语言仅供参考)** ***** > 建议在收到回调,验签通过且状态为成功时,再调取[查询接口](查询文档.md)查询一下订单的状态是否真的为成功后,再来处理自己的业务逻辑 ```php <?php $ArrayField = $_POST; $sign = $ArrayField["sign"]; unset($ArrayField["sign"]); $md5key = '2JXQBG13TAUNKRYVME'; //密钥 ksort($ArrayField); //按照参数名ASCII码从小到大排序 $stringA = ""; foreach($ArrayField as $key => $value){ $stringA .= $key."=".$value."&"; } $stringA = substr($stringA,0,-1); //去掉最后一个 & 字符 $signValue = strtoupper(md5($stringA.$md5key)); //拼接密钥后,md5加密后转为大写 if($signValue == $sign and $ArrayField["status"] == "success"){ //建议在收到回调,验签通过且状态为成功时,再调查询接口查询一下订单的状态是否正的为成功后,再来处理自己的业务逻辑 // 交易成功后的业务逻辑处理 exit('OK'); } ?> ```