正式平台:https://api.xunhupay.com/payment/query.html
备用平台:https://api.dpweixin.com/payment/query.html
其他平台:https://api.diypc.com.cn/payment/query.html(建议5-10秒请求一次,最长不超过10分钟)
说明:用curl的post方式传参数,并直接获取json返回值,引导客户跳转到支付链接。
| # | 参数名 | 含义 | 类型 | 说明 |
|---|---|---|---|---|
| 1 | appid | APP ID | string(32) | 必填。应用ID |
| 5 | out_trade_order | 商户网站订单号 | string(32) | out_trade_order,open_order_id 二选一。请确保在您的网站内是唯一订单号 |
| 6 | open_order_id | 虎皮椒内部订单号 | string(32) | out_trade_order,open_order_id 二选一。在支付时,或支付成功时会返回此数据给商户网站y |
| 9 | time | 当前时间戳 | int(11) | 必填。PHP示例:time() |
| 13 | nonce_str | 随机值 | string(32) | 必填。作用:1.避免服务器页面缓存,2.防止安全密钥被猜测出来 |
| 14 | hash | 签名 | string(32) | 必填。 |
第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
特别注意以下重要规则:
第二步,在stringA最后拼接上APPSECRET得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,得到hash值。
function generate_xh_hash(array $datas,$hashkey){
ksort($datas);
reset($datas);
$pre =array();
foreach ($datas as $key => $data){
if(is_null($data)||$data===''){continue;}
if($key=='hash'){
continue;
}
//stripslashes 去除php POST请求自带的多余斜杠(其他语言可以不处理)
$pre[$key]=stripslashes($data);
}
$arg = '';
$qty = count($pre);
$index=0;
foreach ($pre as $key=>$val){
$arg.="$key=$val";
if($index++<($qty-1)){
$arg.="&";
}
}
return md5($arg.$hashkey);
}
data.status :OD(支付成功),WP(待支付),CD(已取消)
{
"errcode":0,
"data":{
"status":"OD",
"open_order_id":"xxxx"
...
},
"errmsg":"success!",
"hash":"3a91e22ee359c914b0788c6007377638"
}
{
"errcode":500,
"errmsg":"invalid sign!",
"hash":"3a91e22ee359c914b0788c6007377638"
}