发起付款接口(必用接口)


SDK Demo下载

PHP SDK(utf-8) JAVA SDK(utf-8) ASP.NET SDK(utf-8)


跳转支付页接口URL:
https://api.xunhupay.com/payment/do.html
传参方式:Post

说明:用curl的post方式传参数,并直接获取json返回值,引导客户跳转到支付链接。新版本支持GET301跳转请求(需额外参数:redirect=Y),无需使用CURL工具提前请求数据。示例:浏览器访问https://api.xunhupay.com/payment/do.html?appid=xxx&price=xxx&....&redirect=Y&hash=xxxx


请求参数:
# 参数名 含义 类型 说明
1 version API 版本号 string(24) 必填。目前为1.1
2 appid APP ID string(32) 必填。支付渠道ID
3 trade_order_id 商户订单号 string(32) 必填。请确保在当前网站内是唯一订单号
4 total_fee 订单金额(元) decimal(18,2) 必填。单位为人民币,精确到分
5 title 订单标题 string(128) 必填。商户订单标题
6 time 当前时间戳 int(11) 必填。PHP示例:time()
7 notify_url 通知回调网址 string(128) 必填。用户支付成功后,我们服务器会主动发送一个post消息到这个网址(注意:当前接口内,SESSION内容无效)
8 return_url 跳转网址 string(128) 可选。用户支付成功后,我们会让用户浏览器自动跳转到这个网址(此接口建议不要自带参数(或避免与回调参数冲突),我们会把异步回调参数,以GET方式回传到此接口。若你携带了自定义参数,验证签名时,注意排除自定义参数
9 callback_url 商品网址 string(128) 可选。用户取消支付后,我们可能引导用户跳转到这个网址上重新进行支付
10 plugins 备注 string(128) 可选。备注字段,可以传入一些备注数据,回调时原样返回
11 nonce_str 随机值 string(32) 必填。作用:1.避免服务器页面缓存,2.防止安全密钥被猜测出来
12 hash 签名 string(32) 必填

小程序支付时,额外需要以下参数:NEW

应用需要绑定小程序APPID,具体操作请联系管理员

1 trade_type 支付模式 string(24) 小程序支付必填。固定值:JSAPI
2 openid 用户在小程序内的openid 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);
                    $arg  = '';
                    foreach ($datas as $key=>$val){
                    	if($key=='hash'||is_null($val)||$val===''){continue;}
                   	    if($arg){$arg.='&';}
                        $arg.="$key=$val";
                    }

                    return md5($arg.$hashkey);
}
Json请求成功时返回示例:
{
            "openid":"2019081202",
    		"url":"https:\/\/api.xunhupay.com\/alipay\/pay\/index.html?id=20351731&nonce_str=3642452019&time=1522390464&appid=20146122002&hash=ef07fb856239c6066a8c84c21835e047",
    		"errcode":0,
    		"errmsg":"success!",
    		"hash":"3a91e22ee359c914b0788c6007377638"
}
小程序支付成功时返回示例:NEW
{
            "openid":"2019081202",
            "appid":"1237839372",
            "prepay_id":"nxhhjkaoasixuwjewnekwpoapxajjasasas",
            "jsapi":"{"a":1,"b":2}",
    		"errcode":0,
    		"errmsg":"success!",
    		"hash":"3a91e22ee359c914b0788c6007377638"
}
Json请求失败时返回示例:
{
    		"errcode":500,
    		"errmsg":"invalid sign!",
    		"hash":"3a91e22ee359c914b0788c6007377638"
}

付款成功回调通知


用户付款成功后,我们会向您在发起付款接口传入的notify_url网址发送通知。您的服务器只要返回内容:success,就表示回调已收到。如果返回内容不是success,我们会再尝试回调1次。

传参方式:Post
参数内容:
# 参数名 含义 类型 说明
1 trade_order_id 商户订单号 string(32) 支付时请求的商户订单号
2 total_fee 订单支付金额 decimal(18,2) 订单支付金额
3 transaction_id 交易号 string(32) 支付平台内部订单号
4 status 订单状态 string(2) 目前固定值为:OD
5 appid 支付渠道ID string(32)
6 time 时间戳 string(16)
7 nonce_str 随即字符串 string(16)
8 hash 签名 string(32) 请参考支付时签名算法

付款成功自动跳转


用户付款成功后,我们会在先通过notify_url接口,通知您服务器付款成功,然后引导用户跳转到return_url网址。