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


SDK Demo下载

PHP SDK(utf-8) JAVA SDK(utf-8) ASP.NET SDK(utf-8) ASP SDK 更多demo


支付网关接口URL:
https://api.xunhupay.com/payment/do.html  (设置为可配置的变量,以便接口变更时方便修改)

传参方式:Post

使用curl的post方式传参数,并直接获取json返回值,引导客户跳转到支付链接。


请求参数:
# 参数名 含义 类型 说明
1 version API 版本号 string(24) 必填。目前为1.1
2 appid APP ID string(32) 必填。填写虎皮椒的APPID,不是小程序APPID
3 trade_order_id 商户订单号 string(32) 必填。请确保在当前网站内是唯一订单号,只支持数字,大小写英文以及部分特殊字符:!#$'()*+,/:;=?@-._~%
4 total_fee 订单金额(元) decimal(18,2) 必填。单位为人民币 元,没小数位不用强制保留2位小数
5 title 订单标题 string(128) 必填。商户订单标题(不能超过127个字符或者63个汉字,请注意控制下长度)
6 time 当前时间戳 int(11) 必填。PHP示例:time()
7 notify_url 通知回调网址 string(128) 必填。用户支付成功后,我们服务器会主动发送一个post消息到这个网址(注意:当前接口内,SESSION内容无效,手机端不支持中文域名)
8 return_url 跳转网址 string(128) 可选。用户支付成功后,我们会让用户浏览器自动跳转到这个网址
9 callback_url 商品网址 string(128) 可选。用户取消支付后,我们可能引导用户跳转到这个网址上重新进行支付
10 plugins 名称 string(128) 可选。 用于识别对接程序或作者
11 attach 备注 text 可选。备注字段,可以传入一些备注数据,回调时原样返回
12 nonce_str 随机值 string(32) 必填。作用:1.避免服务器页面缓存,2.防止安全密钥被猜测出来
13 hash 签名 string(32) 必填
14 type 支付通道类型 string(32) 微信H5支付请填"WAP",微信小程序支付请填"JSAPI" ,请参考小程序demo对接小程序支付,微信内支付请勿填写"JSAPI",支付网关为:https://api.xunhupay.com 跳转小程序APPID:wx2574b5c5ee8da56b,其他支付网关跳转小程序APPID:wx402faa5bd5eda155,(支付宝不需要此参数)
15 wap_url 网站域名 string(128) 网站域名,H5支付通道请填你网站域名,小程序支付请填支付网关(例如:https://api.dpweixin.com)。(支付宝不需要此参数)
16 wap_name 网站名称 string(128) 店铺名称或网站域名,长度32或以内,H5支付通道请求必填。(支付宝不需要此参数)
请求返回:
# 参数名 含义 类型 说明
1 oderid 订单id int 订单id(此处有个历史遗留错误,返回名称是openid,值是orderid,一般对接不需要这个参数)
2 url_qrcode 二维码地址(PC端使用) string(156) PC端可将该参数展示出来进行扫码支付,不用再转二维码,需自己处理跳转
3 url 请求url(手机端专用,PC端已停用) string(155) 只需跳转此参数即可,系统会自动判断是微信端还是手机端,自动返回return_url,不能先显示“url_qrcode”二维码,再跳转“url”链接
4 errcode 错误码 int
5 errmsg 错误信息 string(8) 错误信息具体值
6 hash 签名 string(32) 数据签名,参考下面签名算法
HASH生成的步骤如下:

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

特别注意以下重要规则:

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

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

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"
}
Json请求失败时返回示例:
{
    		"errcode":500,
    		"errmsg":"invalid sign!",
    		"hash":"3a91e22ee359c914b0788c6007377638"
}

付款成功回调通知


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

传参方式:Post
参数内容:form表单类型
# 参数名 含义 类型 说明
1 trade_order_id 商户订单号 string(32) 支付时请求的商户订单号
2 total_fee 订单支付金额 decimal(18,2) 订单支付金额
3 transaction_id 交易号 string(32) 支付平台内部订单号
4 open_order_id 虎皮椒内部订单号 string(32) 虎皮椒内部订单号
5 order_title 订单标题 string(32) 订单标题
6 status 订单状态 string(2) 目前固定值为:OD
7 plugins 插件ID string(128) 当传入此参数时才会有返回
7 attach 备注 text 当传入此参数时才会有返回
8 appid 支付渠道ID string(32)
9 time 时间戳 string(16)
10 nonce_str 随即字符串 string(16)
11 hash 签名 string(32) 请参考支付时签名算法

付款成功自动跳转


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

在线客服系统