微信内h5调起支付方式
程序员文章站
2022-03-07 08:30:05
...
如何调取支付页面,如下图:
在微信浏览器里面打开H5网页中执行JS调用支付。
getBrandWCPayRequest参数及返回值的定义:
1)请求参数值说明:
名称 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
公众号 | appId | 是 | String(16) | wx66666666666666 | 商户注册具有支付权限的公众号成功后即可获得 |
时间戳 | timeStamp | 是 | String(32) | 1414561699 | 当前的时间戳 |
随机字符串 | nonceStr | 是 | String(32) |
5K8264ILTKCH16C Q2502SI8ZNMTM67VS |
随机字符串 |
订单详情扩展字符串 | pageage | 是 | String(128) | prepay_id=123456789 | 统一下单接口返回的prepay_id参数值,提交格式如:prepay_id=*** |
签名方式 | signType | 是 | String(32) | MD5 | 签名类型,默认为MD5,支持HMAC-SHA256和MD5。注意此处需与统一下单的签名类型一致 |
签名 | paySign | 是 | String(64) |
C380BEC2BFD727A 4B6845133519F3AD6 |
Q签名,详见签名生成算法 |
2)返回结果值说明:
返回值 | 描述 |
---|---|
get_brand_wcpay_request:ok | 支付成功 |
get_band_wcpay_request:cancel | 支付过程中用户取消支付 |
get_band_wcpay_request:fail | 支付失败 |
调用支付JSAPI缺少参数:total_fee |
1、请求检查预支付会话标识prepay_id是否已失效 2、请求的appId与下单接口的appId是否一致 |
注:get_band_wcpay_request:ok仅在用户成功完成支付时返回。由于前端交互复杂,get_band_wcpay_request:fail和get_band_wcpay_request:cancel可以统一处理为用户遇到错误或主动放弃,不细化分区。
var getWCPage = function(){
var url = get("api/invokeWXPage");
var data={orderId}
$.ax(url,data,null,null,getWXPage,function(e){
layer.closeAll('loading');
ordermsg('系统错误',function(){
//系统错误处理方式
})
});
function getWXPage(result){
if(result==0){
var json_obj = result.data;
//将字符串转换为JSON格式
var str = JSON.parse(json_obj);
//公众号名称,由商户传入
var appId = str.appId;
//时间戳,自1970年以来的秒数
var timeStamp = str.timeStamp;
//随机串
var nonceStr = str.nonceStr;
var package = str.package;
//微信签名方式
var signType = str.signType;
//微信签名
var paySign = str.paySign;
//封装请求数据
request_data = {appId:appId,timeStamp:timeStamp,
nonceStr:nonceStr,package:package,signType:signType,paySign:paySign};
if(typeof WeixinJSBbridge == 'undifine'){
if(document.addEventListener){
document.addEventListener('WeixinJSBridgeReady',onBridgeReady,false);
}else if(document.attachEvent){
document.attachEvent('WeixinJSBridgeReady',onBridgeReady);
document.attachEvent('OnWeixinJSBridgeReady',onBridgeReady);
}
}
}
layer.closeAll('loading');
}
}
function onBridgeReady(){
WeixinJSBridge.invoke('getBandWCPayRequest',request_data,function(res){
// 使用以上方式判断前端返回,微信团队郑重提示:
//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
if(res.msg == 'get_band_wcpay_request:ok'){
resultmsg('支付成功');
}else{
resultmsg('支付失败');
}
})
}
注:WeixinJSBridge内置对象在其他浏览器中无效。
该文档参考于【微信支付】JSAPI支付开发者文档
上一篇: 微信原生支付方式二(实现二)
下一篇: 各种支付方式的比较与评价