如今正在写一个微信民众号的小项目,纪录一下碰到的题目和处置惩罚方法(主假如前端)。内容延续更新中~
重要完成
前后端星散
前端为 SPA 单页面
运用微信的JSSDK
微信付出
手艺计划
后端运用 php 搭建接口
vux ui框架
vu2.0e百口桶(vue、vue-router、vue-resource、vuex)
题目列表
跨域题目
由于临盆环境下是同域名,不存在跨域题目。临盆环境设置反向代办处置惩罚了跨域。这里碰到的题目主假如开辟环境下,后端和前端离别在两个 http 服务器上。由于前端项目直接用 vue-cli 天生,所以用到了 webpack,恰好 webpack 的 dev-server 能够设置反向代办。在config/index.js
里找到 dev
下的 proxyTable
设置项,并到场设置即可
proxyTable: {
'/api': {
target: 'http://127.0.0.1:8888',
changeOrigin:true,
pathRewrite:{
//'^/api':''
}
}
}
受权回调处置惩罚
主假如猎取用户的 openid。由于每一个用户的 openid 牢固稳定,所以在初次加载时会检测 store 中是不是有openid,假如没有就跳转到受权页面猎取openid再跳转返来,并写入 localstorage,并更新 store。
//检测url中是不是有openid
if(this.$route.query.openid){
this.$store.commit('updateOpenid',this.$route.query.openid);
}
//跳转受权
if(!this.$store.state.openid){
//受权完成后须要照顾openid参数再跳返来
window.location.href="/access";
}
然则现实运用中如许并不平安,由于直接将 openid 传回页面,轻易被客户端改动。所以越发平安的做法是受权以后天生一个 token 和对应的 openid 存入数据库,并设置 token 失效时候,不把 openid 直接暴露给前端。前端提交时运用 token,在后端再掏出对应的 openid
微信付出
看了下文档,之前是须要用 jssdk 唤起付出,而如今则是把微信 jssdk 内置到了微信的浏览器中。能够直接运用 WeixinJSBridge 来唤起付出。固然署名天生和定单须要在后端做。而且付出流程好像也做了变动,之前是把定单信息和加密字符串同时通报到微信服务器,而如今是先在后端把定单信息通报给微信服务器,返回 prepay_id。前端只须要吸收 prepay_id 并通报就能够了,如许的话更平安一些。
在前端组件中的代码越发简单化
pay(){
let _this=this;
let jsApiParameters={};
let onBridgeReady=function(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest',
jsApiParameters,
(res)=>{
if (res.err_msg == "get_brand_wcpay_request:ok") {
_this.alert('付出胜利');
window.location.reload();
}
if (res.err_msg == "get_brand_wcpay_request:cancel") {
_this.alert('作废付出');
window.location.reload();
}
}
);
}
let callpay=function(){
if (typeof WeixinJSBridge == "undefined") {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
} else {
onBridgeReady();
}
}
//要求付出数据
this.$http.get('wechat/wxpay?openid='+this.$store.state.openid+'&id='+this.$route.params.id)
.then((response)=>{
if(response.body.status==1){
jsApiParameters=response.body.data;
callpay();
}else{
_this.alert(response.body.msg);
}
});
}
付出受权目次题目
由于微信的付出受权目次要准确到子目次级别,而 spa 的 url的情势也许为 /wechat/#/show/1、/wechat/#/list/type 如许,就会发作发作付出的页面报付出目次未定义的题目。针对这个题目能够在根目次后加加上 ? 标记链接,背面的地点就会被当做参数剖析,而不会当做目次。/wechat/?#/show/1、/wechat?#/list/type,如许剖析出来的目次都是在 /wechat/ 根目次下面
安卓下没法运用 html5 input 没法唤起摄像头
上传图片部份运用的是html5直接挑选图片上传
<input id="uploaderInput" @change="change" class="weui-uploader__input" type="file" accept="image/*" multiple />
在 ios 装备下没有题目,会弹出挑选照相、图库等选项。然则朋侪说在安卓下只能挑选图库,而且没法多选。上网查了一下,确着实部份安卓平台下有这个题目。加上 capture=camera” 能够直接运用照相,然则挑选图库又没了。。。
处置惩罚计划有两个
1.运用微信的 jssdk 来挑选图片,然则如许上传部份要修正。
2.在安卓下运用 vux 供应的 Actionsheet 组件来替代体系默许的挑选,离别加上挑选图库、直接翻开照相。
好气啊,手头又没有安卓装备,干脆先放下不管了。
博客链接:https://lscho.com/tech/vue-we…,后续在博客更新