H5支付接口

使用场景:手机端非微信浏览器内,或者开发者自己的app内(需要在app内调用webview组件)


请求地址:https://open.h5zhifu.com/api/h5

调用方法:POST

请求格式:application/json

请求参数:

字段名称 字段类型 是否必填 说明
app_id int(16) Y 应用ID,在后台系统设置页面查看
out_trade_no string(32) Y 商家订单编号,即你自己系统里的订单编号,便于后续对账
description string(32) Y 销售商品描述
pay_type string(32) Y 支付类型,枚举值:alipay/wechat
amount int(16) Y 订单金额(注意单位为分,且为整数)
attach string(255) N (选填)开发者自定义数据,在支付成功后notify回调的时候会原样返回
redirect_url string(255) N (选填)1、若有此参数,无论用户是否支付成功,浏览器将会跳转到这个地址,应该填写带有订单号参数的地址,方便开发者处理数据。2、如果没有此参数,浏览器则会后退到开发者的支付发起页面,需要引导用户主动发起支付结果的查询
notify_url string(32) Y 支付成功后回调地址
sign string(32) Y 数据签名,请查看左侧签名算法

接口返回:

字段名称 字段类型 是否必填 说明
code int(16) Y 状态码。200:成功调用,1001:签名错误,1003:缺少参数,1004:请求值格式错误
msg string(32) Y code字段所对应的详细描述信息
data string(32) Y 将下面的所有参数括起来
trade_no string(32) Y 本平台唯一订单编号,可用于查询订单状态
jump_url string(32) Y 前端跳转到此地址时,会唤起app支付界面。注意若设置了redirect_url,其他浏览器可以使用location.href或location.replace()方法跳转到jump_url,谷歌chrome和三星浏览器因自身兼容性问题必须使用location.replace()方法跳转到jump_url,否则无法重定向到redirect_url
cloud_status string(32) Y 只有支付宝才有返回值,微信返回空字符串。云端监控状态,返回值为online/offline,分别为在线/掉线(处于掉线时不影响此API接口的返回结果,只是无法回调,需要让用户转向使用微信支付)
expire_time string(32) Y 订单过期具体时间,目前暂时指定为2小时

接口返回示例:

 {
     "code":200,
     "msg":"success",
     "data":{
          "trade_no": "201907098484845164151",
          "jump_url": "http://jump_url.com/jump_url",
          "expire_time": "2019-03-23 04:13:12",
     }
 }

由于设置redirect_url后,回跳指定页面的操作可能发生在:

a、微信支付中间页调起微信收银台后超过5秒

b、用户点击“取消支付”或支付完成后点击“完成”按钮。

即无论用户是否支付成功,都会跳转到redirect_url。因此无法保证页面回跳时,支付流程已结束。商户设置的redirect_url地址需要自动ajax查询是否已支付完成,或者让用户去点击按钮触发查单操作。回跳页面展示效果可参考下图

图片名称

提示:若没填写redirect_url,浏览器回退到支付页面时,浏览器的setInterval计时器会自动停止,导致无法自动执行查单操作。可以监听window的pageshow,浏览器回退时会自动触发,在这里执行查单操作,示例代码如下:

window.addEventListener('pageshow', function (event) {
    var inter = setInterval(function (args) {
        if (window.queryPayStatus) {
            clearInterval(inter);
            setInterval(window.queryPayStatus,2000);
        }
     }, 1000);
});

function queryPayStatus(){

}

常见问题解决办法:

1、出现防火墙拦截提示:请将http请求头中的user-agent设置为常见浏览器请求头,或者检查请求内容是否含有非法内容

2、是否可以不验证异步回调通知sign:不可以,因为可能会有坏人伪造异步回调通知

results matching ""

    No results matching ""