发起订单查询接口(可选)


SDK Demo下载

PHP SDK:sdk-php-v1.0.0.zip(utf-8)


跳转支付页接口URL:
https://api.xunhupay.com/payment/query.html
传参方式:POST|GET

说明:用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) 必填。
HASH生成的步骤如下:

第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。

特别注意以下重要规则:

  1. ◆ 参数名ASCII码从小到大排序(字典序);
  2. ◆ 如果参数的值为空不参与签名;
  3. ◆ 参数名区分大小写;
  4. ◆ 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。
  5. ◆ 微信接口可能增加字段,验证签名时必须支持增加的扩展字段

第二步,在stringA最后拼接上APPSECRET得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,得到hash值。

HASH生成示例(PHP):
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);
                }
Json请求成功时返回示例:

data.status :OD(支付成功),WP(待支付),CD(已取消)

{
    		"errcode":0,
            "data":{
            	"status":"OD",
                "open_order_id":"xxxx"
                ...
            },
    		"errmsg":"success!",
    		"hash":"3a91e22ee359c914b0788c6007377638"
    		}
Json请求失败时返回示例:
{
    		"errcode":500,
    		"errmsg":"invalid sign!",
    		"hash":"3a91e22ee359c914b0788c6007377638"
    		}