uni-app中使用微信js-sdk(个人笔记)

开发前必读:
JS-SDK说明文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html

通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。
例子为在vue中使用微信JS-SDK,步骤如下:

一、绑定域名

先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
备注:登录后可在“开发者中心”查看对应的接口权限。

二、安装/引入文件

插件方式:

npm i jweixin-module -S

引入js文件方式:

在需要调用JS接口的页面引入如下JS文件,(支持https):https://unpkg.com/jweixin-module@1.6.0/lib/index.js

三、全局引入

挂载到Vue原型

// main.js
import wx from 'jweixin-module'
Vue.prototype.$wx= wx
// 开放标签属于自定义标签,Vue会给予未知标签的警告,可通过配置Vue.config.ignoredElements来忽略 Vue 对开放标签的检查
Vue.config.ignoredElements = ['wx-open-launch-weapp']

四、配置(包括js-sdk和开放标签)

与使用 JS-SDK 配置方式相同,所有需要使用开放标签的页面必须先注入配置信息,并通过openTagList字段申请所需要的开放标签,否则将无法使用(同一个 url 仅需调用一次)。开放标签的申请和 JS 接口的申请相互独立,因此是可以同时申请的。

mounted() {
    this.createJsapiSignature()
}
      createJsapiSignature() {
            // 根据接口返回config信息
            this.$axios
                .createJsapiSignature({
                    url: window.location.href.split('#')[0] // 注意:url必须为在安全域名下的页面全路径,
                                                            //hash之前的部分,否则会出现获取不到api权限的问题
                }).then(res => {
                    let result = res.data.data
                    this.$wx.config({
                        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,
                                      //可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                        appId: result.appId, // 必填,公众号的唯一标识
                        timestamp: result.timestamp, // 必填,生成签名的时间戳
                        nonceStr: result.nonceStr, // 必填,生成签名的随机串
                        signature: result.signature, // 必填,签名
                        jsApiList: ['chooseWXPay','chooseImage', 'previewImage'], // 必填,需要使用的JS接口列表
                        openTagList: ['wx-open-launch-weapp'] // h5跳小程序
                    })

                    this.$wx.ready(() => {
                        // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,
                        // config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,
                        // 则须把相关接口放在ready函数中调用来确保正确执行。
                        // 对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
                    })
                    this.$wx.error(function (res1) {
                        // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,
                        //也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
                    });
                }).catch(err => {
                    console.log("err", err)
                })
        },

五、使用

配置成功之后,就可以使用相关的api了。例子为微信支付。

        handlePayNow() {
            let that = this
            this.$axios.recharge({ // 调接口获取参数
                payChannel: 2
            }).then(res => {
                if(res.data.code==404) {
                    this.$toast(res.data.message)
                }
                else if(res.status==200) {
                    let result = res.data.data
                    let beanOrderId = result.beanOrderId
                    // 是否生成订单
                    this.beanOrderId = result.beanOrderId
                    if (result.result_code === "SUCCESS") {
                        this.$wx.chooseWXPay({ // 调起微信支付
                            timestamp: result.timestamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
                            nonceStr: result.nonce_str, // 支付签名随机串,不长于 32 位
                            package: result.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
                            signType: 'HMAC-SHA256', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
                            paySign: result.sign, // 支付签名
                            success: function (res) {
                            // 支付成功后的回调函数
                                that.$toast('支付成功');
                            },
                            cancel: function(res) {
                                // 取消付款
                                if(res.errMsg && res.errMsg === 'chooseWXPay:cancel') {
                                    that.$axios.cancel({ id: beanOrderId }).then((res) => {
                                        if(res.data.status===200) {
                                            that.$toast('您已取消支付');
                                        }
                                    })
                                }
                                this.beanOrderId = ''
                            },
                            fail: function() {
                                that.$toast('支付失败');
                            }
                        });
                    }
                }
            }
        },
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容