vue微信授权登陆和分享以及JSAPI支付填坑总结

vue中使用 jweixin-module.js
1、vue路由模式要使用history模式
2、IOS和Android手机传入的当前页面网址是不同的,IOS需要传入第一次进来的页面,如果手动刷新则变成当前页面,而安卓则一直是当前的url
参考代码如下:
main.js

localStorage.setItem('iosUrl',window.location.href);

wechat.js

import * as $apis from './apis.js'
let jweixin = require('./jweixin-module.js');

export default {
    isWechat: function() {
        var ua = window.navigator.userAgent.toLowerCase();
        if (ua.match(/micromessenger/i) == 'micromessenger') {
            // console.log('是微信客户端')
            return true;
        } else {
            // console.log('不是微信客户端')
            return false;
        }
    },
    initJssdk(callback){
        let url = url ? url : window.location.href;
        if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
            url = localStorage.getItem('iosUrl');            
        }
        $apis.initJssdk({
            url: url
        }).then(res => {
            jweixin.config(res.config);
            //配置完成后,再执行分享等功能  
            if (callback) {
                callback(res.share);
            }
        })
    },
    //在需要自定义分享的页面中调用  
    share: function(data,cb) {
        //url = url ? url : window.location.href;
        if (!this.isWechat()) {
            return;
        }
        //每次都需要重新初始化配置,才可以进行分享  
        this.initJssdk(function(signData) {
            jweixin.ready(function() {
                //console.log(signData)
                var shareData = {
                    title: data && data.title ? data.title : signData.site_name,
                    desc: data && data.desc ? data.desc : signData.site_description,
                    link: data && data.url ? data.url : signData.url,
                    imgUrl: data && data.img ? data.img : signData.site_logo,
                    success: function(res) {
                        console.log(res);
                        cb&&cb();
                    },
                    cancel: function(res) {}
                };
                //console.log(shareData)
                //分享给朋友接口  
                jweixin.updateAppMessageShareData(shareData);
                //分享到朋友圈接口  
                jweixin.updateTimelineShareData(shareData);
            });
        });
    },
    //在需要定位页面调用
    location: function(callback) {
        if (!this.isWechat()) {
            console.log('不是微信客户端')
            return;
        }
        console.info('定位')
        this.initJssdk(function(res) {
            jweixin.ready(function() {
                console.info('定位ready')
                jweixin.getLocation({
                    type: 'gcj02', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
                    success: function(res) {
                        // console.log(res);
                        callback(res)
                    },
                    fail: function(res) {
                        console.log(res)
                    },
                    // complete:function(res){
                    //     console.log(res)
                    // }
                });
            });
        });
    }
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue语法中,实现UniApp中的微信JSAPI支付可以按照以下步骤进行操作: 1. 在需要实现支付Vue组件中,引入微信公众号支付的SDK文件。可以通过在`index.html`文件中添加以下代码来引入: ```html <script src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js"></script> ``` 2. 编写Vue组件的模板和样式,以及相关的数据和方法。 ```html <template> <div> <!-- 支付按钮 --> <button @click="wxPay">微信支付</button> </div> </template> <script> export default { methods: { // 调用微信JSAPI支付 wxPay() { if (typeof WeixinJSBridge == "undefined") { if (document.addEventListener) { document.addEventListener('WeixinJSBridgeReady', this.onBridgeReady, false); } else if (document.attachEvent) { document.attachEvent('WeixinJSBridgeReady', this.onBridgeReady); document.attachEvent('onWeixinJSBridgeReady', this.onBridgeReady); } } else { this.onBridgeReady(); } }, // 支付回调方法 onBridgeReady() { const payParams = { appId: '...', timestamp: '...', nonceStr: '...', package: '...', signType: 'MD5', paySign: '...' }; WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "appId": payParams.appId, "timeStamp": payParams.timestamp, "nonceStr": payParams.nonceStr, "package": payParams.package, "signType": payParams.signType, "paySign": payParams.paySign }, function(res) { if (res.err_msg == "get_brand_wcpay_request:ok") { // 支付成功回调 } else { // 支付失败回调 } } ); } } } </script> <style> /* 样式 */ </style> ``` 在上面的代码中,我们通过`@click`事件绑定了支付按钮的点击事件,当点击按钮时会执行`wxPay`方法。在`wxPay`方法中,我们判断`WeixinJSBridge`是否已定义,如果未定义则通过事件监听等待其准备就绪,如果已定义则直接调用`onBridgeReady`方法。在`onBridgeReady`方法中,我们获取支付参数并调用微信JSAPI支付。 请注意替换代码中的支付参数(`payParams`)为实际的支付参数,并根据实际需求处理支付成功和失败的回调。 这样,你就可以在Vue语法中实现UniApp中的微信JSAPI支付了。记得在页面加载时引入微信JSAPI的SDK文件,并确保支付接口的安全性和正确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值