欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

微信内h5调起支付方式

程序员文章站 2022-03-07 08:30:05
...

如何调取支付页面,如下图: 

微信内h5调起支付方式

 在微信浏览器里面打开H5网页中执行JS调用支付。

getBrandWCPayRequest参数及返回值的定义:

1)请求参数值说明:

微信调用请求参数(json格式)
名称 变量名 必填 类型 示例值 描述
公众号 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支付开发者文档