前言

  继前几天总结了vue开发小结(上)后,发现还有很多的点没有能列举出来,于是还是打算新建一个下篇,再补充一些vue开发中需要注意的细节,确实还是都是细节的问题,我只是在这里强调下,希望对大家有帮助(ps:另关于管理端的貌似我还没写,说不定还有一篇,哈哈)。

正文

  这次主要大概总结下vue history模式下微信分享和微信支付的细节。

  一、微信分享

  首先vue history模式下,vue是通过history.pushState API 来完成 URL 跳转实现路由的加载的,因此和多页面的实现是不一致的。而在安卓和IOS URL的切换上却有这不同的实现。

  对于Android,它的每次路由的变换,URL都跟着改变,也就是说它的Landing Page和Current Page同时在变,这就和多页应用实现一样需要在对应做分享的页面做签名。但是对IOS而言,每次路由的变换,URL却不变,也就是说虽然它的Currernt Page在变,但是它的Landing Page不变,所以在做分享的时候就可不需要做处理,只需在Loading Page做分享即可。

  另,还要一个需要注意的重点,即时做微信分享时候,对应的title,desc,img_url等参数需要用绝对路径
  附上封装的wxShare文件,则只需要在mounted时候调用分享即可
import wx from 'weixin-js-sdk'
import { getSign} from '../api/index'
const jsApiList = ['onMenuShareAppMessage', 'onMenuShareTimeline', 'onMenuShareQQ','onMenuShareWeibo'] export function wxConfig() {
const data={
requestUrl:window.location.href
}
getSign(data)
.then(res=>{
wx.config({
debug: false,
appId: res.appId,
timestamp: res.timestamp,
nonceStr: res.nonceStr,
signature: res.signature,
jsApiList: jsApiList
})
})
} export function wxShare(title,desc,curUrl,img_url,inviteCode) {
const u=navigator.userAgent
const link=curUrl //强调:参数需绝对路径
if(u.indexOf('Android')>-1){
requireConfig()
}
wx.ready(()=> {
wx.onMenuShareTimeline({
title: title,
desc:desc,
imgUrl:img_url,
link:link
})
wx.onMenuShareAppMessage({
title: title,
desc:desc,
imgUrl:img_url,
link:link,
success: function success(result) { },
});
wx.onMenuShareTimeline({
title: title,
desc:desc,
imgUrl:img_url,
link:link
});
wx.onMenuShareQQ({
title: title,
desc:desc,
imgUrl:img_url,
link:link
});
wx.onMenuShareWeibo({
title: title,
desc:desc,
imgUrl:img_url,
link:link
});
wx.onMenuShareQZone({
title: title,
desc:desc,
imgUrl:img_url,
link:link
});
})
}

  二、微信支付

  微信支付需要强调的点就是参数不要写错,包括大小写(ps:前端要是唤起支付失败,我总结出来的点就是参数写错了,如果还有其他问题的话,我觉得你可以直接甩锅为后台)

  前端唤起支付大致流程即,前端调用后台支付接口换取appId公众号id,timeStrap时间戳,nonceStr随机数,package预支付id,签名paySign和前端设置加密为MD5(ps:一般为md5加密),然后调用WeixinJSBridge即可

//传必要参数后获取公众号id等信息回调后判断是否有WeixinJSBridge事件

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();
} //后通过WeixinJSBridge唤起支付
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
debug:true,
"appId": appId,
"timeStamp": response.timestamp,
"nonceStr": response.noncestr,
"package": response.package,
"signType": "MD5",
"paySign": response.sign,
},
function(res){
const errMsg=res.errMsg ? res.errMsg :res.err_msg
if(errMsg.indexOf("ok") != -1 ) { }else if(errMsg.indexOf("cancel") != -1 ){ }else if(errMsg.indexOf("fail") != -1){ }
else{ }
}
);

最后

  其实在微信分享和微信支付上面,最重要的还是注意细节~~~

vue开发小结(下)的更多相关文章

  1. vue开发小结(上)

    前言: 18年年底,就一个字,忙,貌似一到年底哪个公司都在冲业绩,包括我们自己开发自己公司的项目也一样得加把劲.自从18年年初立了个flag17年年终总结——走过2017,迎来2018Flag到现在又 ...

  2. 详解Vue 开发模式下跨域问题

    vue项目中,前端与后台进行数据请求或者提交的时候,如果后台没有设置跨域,前端本地调试代码的时候就会报“No 'Access-Control-Allow-Origin' header is prese ...

  3. 【原创】windows下搭建vue开发环境+IIS部署

    [原创]win10下搭建vue开发环境  如果要转发,请注明原作者和原产地,谢谢! 特别说明:下面任何命令都是在windows的命令行工具下进行输入,打开命令行工具的快捷方式如下图:     详细的安 ...

  4. windows下搭建vue开发环境+IIS部署

    原创]win10下搭建vue开发环境  https://www.cnblogs.com/ixxonline/p/6007885.html 特别说明:下面任何命令都是在windows的命令行工具下进行输 ...

  5. Vetur:VSCode下强大的Vue开发工具

    Vue自从发布以来就一直受到前端开发人员的热爱,而除了一些本身优秀的特征之外,还有就是丰富的插件和工具的支持和更新.虽然现在的编辑器需要安装相应的plugins才能进行Vue组件化开发,但是越来越多优 ...

  6. 使用vue开发微信公众号下SPA站点的填坑之旅

    原文发表于本人博客,点击进入使用vue开发微信公众号下SPA站点的填坑之旅 本文为我创业过程中,开发项目的填坑之旅.作为一个技术宅男,我的项目是做一个微信公众号,前后端全部自己搞定,不浪费国家一分钱^ ...

  7. vue开发后台管理系统小结

    最近工作需要用vue开发了后台管理系统,由于是第一次开发后台管理系统,中间也遇到了一些坑,想在这里做个总结,也算是对于自己工作的一个肯定.我们金融性质的网站所以就不将代码贴出来哈 一.项目概述 首先工 ...

  8. VUE在开发环境下实现跨域

    1. 跨域设置 VUE项目的 config文件夹下index.js文件中修改 dev: proxyTable中的内容(默认是没有内容的): 添加内容: '/list': { target: 'http ...

  9. 1.WIN10下搭建vue开发环境

    WIN10下搭建vue开发环境 详细的安装步骤如下: 一.安装node.js 说明:安装node.js的windows版本后,会自动安装好node以及包管理工具npm,我们后续的安装将依赖npm工具. ...

随机推荐

  1. 百度纯CSS生成菜单

    首页我们打看dreamweaver或其它编辑器,创建一个名为nav的导航菜单 <div class="nav"> <ul> <li><a ...

  2. Python 列表(List)包含的函数与方法

    Python列表函数&方法 Python包含以下函数: 序号 函数 1 cmp(list1, list2)比较两个列表的元素 2 len(list)列表元素个数 3 max(list)返回列表 ...

  3. 阿里八八β阶段Scrum(2/5)

    今日进度 黄梅玲:尝试修复日程界面的不可点击问题 李嘉群:修改数据库,增加写入识别功能临时文本存入的项 张岳:信息抽取算法的编写 叶文滔:尝试侧边栏的信息调用,但因为侧边栏不是单独的活动,调用碰到了困 ...

  4. Vue表单修饰符(lazy,number,trim)

    lazy:使用了这个修饰符将会从“input事件”变成change事件进行同步 <div id="example"> <input type="text ...

  5. localStorage 知识点

    先补充下localStorage 知识点:JS对象读取形式:localStorage.name添加/修改localStorage.name = "xuanyuan"其中" ...

  6. Java 堆内存 新生代 (转)

    Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象.在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( Old ).新生代 ( You ...

  7. 【转】escape,encodeURI,encodeURIComponent有什么区别?

    在这个页面里面试着搜了一下 「UTF-8」 ,居然没有搜到. escape 和 encodeURI 都属于 Percent-encoding,基本功能都是把 URI 非法字符转化成合法字符,转化后形式 ...

  8. 在阿里云Centos下LNMP环境搭建

    首先,需要安装C语言的编译环境,因为Nginx是C语言编写的.通常大多数Linux都会默认安装GCC,如果没有的话,可以如下安装. 安装make: yum -y install gcc automak ...

  9. Drool实战系列(一)之入门程序

    Drools官网地址为:https://www.drools.org/ maven环境 入门程序例子如下: 项目结构截图: 一.导入pom文件 <project xmlns="http ...

  10. matlab slice

    前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...