当前位置: 首页 > Web前端 > vue.js

vue微信分享微信支付jssdk全局配置

时间:2023-03-31 18:27:22 vue.js

很可怜。根据业务场景在vue中使用jssdk《根据业务场景》)根据业务场景,先获取代码并将代码发送到后端,解析出openId和accessToken,然后发送当前页面发送后台URL,申请jsSDK配置签名并获取,然后在前端配置wx.config,然后调用jssdk相关方法安装jssdk:npminstallweixin-js-sdk--save-dev只显示一些重要的代码在permission.js文件router.beforeEach1中跳转路由的hook事件中。首先获取codeconstopenCode=getQueryString('code')?getQueryString('code'):''2.将code发送到后端,解析出openId和accessTokenconsttokenPromisr=newPromise((resolve,reject)=>{checkOpenId({openCode}).then(res=>{resolve()}).catch(error=>{拒绝(错误)})})3。然后把当前的页面URL发送到后台申请jsSDK的配置签名**使用Promise因为要等到拿到accessToken后才能继续**tokenPromisr.then(()=>{jsSDK({url}).then(res=>{wechatConfig(res.data)})})4.拿到后,在前端配置wx.config**暂时只使用分享和支付的权限**exportfunctionwechatConfig(config){wx.config({debug:false,//开启调试模式,所有调用的API的返回值都会显示在客户端alert上,如果想查看传入的参数,可以在PC端打开,参数信息会通过日志打印出来,只会打印在客户端电脑端。appId:config.appId,//必填,公众号的唯一标识timestamp:config.timeStamp,//必填,生成签名的时间戳nonceStr:config.nonceStr,//必填,生成签名的随机串signature:config.signature,//必填,签名,见附件1jsApiList:['onMenuShareAppMessage','onMenuShareTimeline','chooseWXPay']//必填,需要使用的JS接口列表,全部列表见附件2JS接口})}5。然后在需要的页面中使用它。我在首页使用分享,支付页面使用支付分享。exportfunctiongroupWechatShare(data,cb,errorCb){constimg=data.pictureKeys?data.pictureKeys[0]:''constwechatState=store.getters.wechatStateconstSHARE_URL=process.env.SHARE_URLconstIMG_URL=process.env.IMG_URLwx.ready(function(){//分享到朋友圈wx.onMenuShareTimeline({title:data.goodsName,//分享标题link:SHARE_URL,//分享链接,链接域名或路径必须与当前页面对应的公众号JS安全域名一致imgUrl:IMG_URL+img,//分享图标success:function(res){//用户确认分享后执行的回调函数//cb(res)},cancel:function(res){//用户取消分享后执行的回调函数//errorCb(res)}})//分享给好友wx.onMenuShareAppMessage({title:data.goodsName,//分享标题desc:'邀请你加入我们',//分享描述链接:SHARE_URL,//分享链接,链接的域名或路径必须与当前页面对应的公众号JS安全域名一致imgUrl:IMG_URL+img,//分享图标类型:'',//分享类型,音乐,视频或link,如果不填,默认为链接dataUrl:'',//如果类型为音乐或视频,则必须提供数据链接,默认为空success:function(res){//执行后的回调函数用户确认分享//cb(res)},cancel:function(res){//用户取消分享后执行的回调函数//errorCb(res)}})})}paymentexportfunctionwexinPay(data,cb,errorCb){wx.ready(function(){wx.chooseWXPay({timestamp:parseInt(data.timeStamp),//支付签名时间戳,注意微信jssdk中时间戳字段全部小写但是最新版支付后台生成签名使用的timeStamp字段名需要大写。S字符nonceStr:data.nonce_str,//支付签名随机字符串,不超过32位package:'prepay_id='+data.prepay_id,//统一支付接口返回的prepay_id参数值,提交格式为如下:prepay_id=***)signType:'MD5',//签名方式,默认为'SHA1',使用新版支付需要传入'MD5'paySign:data.paySign,//支付签名success:function(res){//支付成功后的回调函数cb(res)},fail:function(res){errorCb(res)}})})wx.error(function(res){//Theconfig信息校验失败会执行error函数,如果签名过期校验失败,具体错误信息可以在config的debug模式下查看,也可以在返回的res参数中查看,对于SPA,可以更新签名here./*alert("config信息验证失败");*/})}坑==========================================================注意大小写参数timestamp是这样写的timeStamp卡了几个小时没查出来。获取jssdk配置的url要写成consturl=window.location.href.split('#')[0]该配置需要配置支付目录,js安全目录等,时间戳必须是int类型。如果后端是string类型,前端会报错调用paymentJSAPImissingparameter:sign