调起微信支付

在微信内置浏览器中调起微信支付

整体结构:

第一个页面(首页)为活动简介,点击开通按钮跳转到第二个页面(业务逻辑 + 支付按钮),调起微信支付功能,用户支付,判断当前用户是否支付成功||失败||取消支付,做相关业务逻辑
<!-- href跳转的链接微信授权的结算页面 --> 
<!-- redirect_uri:微信授权的结算页面(需要对网址进行url转码) -->
<!-- 转码网址(网上搜)http://tool.chinaz.com/tools/urlencode.aspx -->
<a href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx1262bc429ae8b41d&redirect_uri=redirect_url&response_type=code&scope=snsapi_base#wechat_redirect" id="dredge">开通会员</a>
业务逻辑页、
1.通过首页跳转到当前页面,在当前页面可以从地址栏中获取到code值(必不可少的参数)
2.后端提供一个支付接口:前端传参 {code:'地址栏上获取的code值‘,total_fee:‘活动支付的金额’}(根据后台需求返回参数),在当前接口中后端返回前端返回如下一组数据,调起微信支付的,
{
"appId":"appId",     //公众号名称,由商户传入     
"timeStamp":"timeStamp",         //时间戳,自1970年以来的秒数     
"nonceStr":"nonceStr", //随机串     
"package":"package",     
"signType":"signType",         //微信签名方式:     
"paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名 
},
3.点击支付按钮
  $('button').on('click', function () {
      callpay() //调起支付方法
  })
//调用微信JS api 支付
function jsApiCall() {
    WeixinJSBridge.invoke(
        'getBrandWCPayRequest',
        data,  //data为后台返回的data,Object
        function (res) {
            WeixinJSBridge.log(res.err_msg);
            // alert(res.err_code + res.err_desc + res.err_msg);
            if (res.err_msg == "get_brand_wcpay_request:ok") {
                alert('支付成功');
                // do something
            } else if (res.err_msg == "get_brand_wcpay_request:cancel") {
                alert('已取消支付');
                // do something
            } else if (res.err_msg == "get_brand_wcpay_request:fail") {
                alert('支付失败');
                // do something
            }
        }
    );
}


function callpay() {
    if (typeof WeixinJSBridge == "undefined") {
        if (document.addEventListener) {
            document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
        }
        else if (document.attachEvent) {
            document.attachEvent('WeixinJSBridgeReady', jsApiCall);
            document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
        }
    }
    else {
        jsApiCall();
    }
}

在微信内置浏览器调起微信支付大致逻辑是这样的,因为安全方面,前端使用的时间戳、字符串、签名等逻辑都是由后端实现

在微信外部浏览器中调起微信支付

同样的逻辑需要后台处理,后端会返回调起微信预支付页面的网址,前端只需用window.location.href 跳转至后端返回的网址即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值