## 请求地址:
### http://域名/Pay.html
## 请求类型:
POST
## 请求参数:
| 变量名称 | 参数名称 | 是否必填 | 是否参与签名 | 参数说明 |
| --- | --- | ---|--- | --- |
| version | 版本号 | 是 | 是 | 固定值:1.0.0 |
| memberid | 商户号 | 是 | 是 | 系统分配的商户编号,例如:10001 |
| orderid | 商户订单号 | 是 | 是 | 要查询的商户订单号 |
| notifyurl | 异步回调地址 | 是 | 是 | 支付成功后系统异步回调商户的地址 |
| query| 查询标识 | 是 | 否 | 固定值:query |
| signmethod | 签名类型 | 是 | 是 | 固定值: md5 |
| sign | md5签名 | 是 | 否 | 请看[签名算法](签名算法.md) |
*****
**查询请求Demo(php代码示例,其它编程语言仅供参考)**
*****
```php
<?php
function https_request($url, $data = null)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
if (!empty($data)) {//如果有数据传入数据
curl_setopt($curl, CURLOPT_POST, 1);//CURLOPT_POST 模拟post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);//传入数据
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
$ArrayField = [
'version' => '1.0.0', //固定值
'memberid' => '10001', //商户编号
'orderid' => "2020022637021582687627", //要查询的订单号
'notifyurl' => 'http://xxx.xxx.com/notifyurl.php',
'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加密后转为大写
$ArrayField["query"] = 'query'; //加上查询标识字段
$tjurl = 'http://域名/Pay.html';
https_request($url,$ArrayField);
?>
```
## 响应/回调参数
查询请求提交成功后,会马上收到一个响应,同时会给异步回调地址发送一个异步回调。
响应和回调的参数都是一样的,只是响应回的是JSON的字符串,异步回调是POST的Form表单回调。
| 变量名称 | 参数名称 | 是否参与签名 | 参数说明 |
| --- | --- | --- | --- |
| version | 版本号 | 是 | 固定值:1.0.0 |
| memberid| 商户号 | 是 | 系统分配的商户编号,例如:10001 |
| amount| 订单金额 | 是 | 订单提交的金额,单位:分 |
| true_amount | 实际支付金额 | 是 | 实际支付金额,单位:分。注:有时系统可能会对提交的整数金额随机加上一个几分钱的零头,所以可能会出现订单金额与实际支付金额不一样的情况,绝大部分情况下这两个金额是一致的 |
| 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 |
| status| 订单关状态 | 是 | success 成功,error 失败 |
| signmethod| 签名类型 | 是 | 固定值:md5 |
| sign | md5签名 | 否 | 请看[签名算法](签名算法.md) |
*****
**查询响应Demo(php代码示例,其它编程语言仅供参考)**
*****
```php
<?php
function https_request($url, $data = null)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
if (!empty($data)) {//如果有数据传入数据
curl_setopt($curl, CURLOPT_POST, 1);//CURLOPT_POST 模拟post请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);//传入数据
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
$ArrayField = [
'version' => '1.0.0', //固定值
'memberid' => '10001', //商户编号
'orderid' => "2020022637021582687627", //要查询的订单号
'notifyurl' => 'http://xxx.xxx.com/notifyurl.php',
'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加密后转为大写
$ArrayField["query"] = 'query'; //加上查询标识字段
$tjurl = 'http://main.lanmaopay.cn/Pay.html';
$json = https_request($url,$ArrayField);
$ArrayField = json_decode($json,true) //查询响应时获取回调参数, json字符串转换为数组
$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($sign == $signValue && $ArrayField['status'] == 'success'){
// 查询到订单的状态是成功的
}else{
var_dump($ArrayField);
}
?>
```
*****
**查询回调Demo(php代码示例,其它编程语言仅供参考)**
*****
```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($sign == $signValue && $ArrayField['status'] == 'success'){
// 查询到订单的状态是成功的
}else{
var_dump($ArrayField);
}
?>
```