wxml文件:
js文件:
wxss文件:
特别注意的时,微信小程序没有像vue那样可以双向数据绑定,它是通过 this.setData() 来把变量渲染到视图层,所以这里要特别注意它的使用
内嵌网页中可使用JSSDK 1.3.0提供的接口,可坑就来了,居然不支持支付接口的调用,经过一番研究,总算打通了两边的交互。
大概流程
1、先说明涉及到的文件,下面会用到
1.1 app.js:小程序的app.js文件,在globalData里定义一个全局变量paySuccessUrl: '',用来保存支付成功跳转url
1.2 wxminiwebview.js:小程序中放web-view的界面 1.3 wxminipay.js:小程序原生支付界面
1.4 web_pay.vue:内嵌网页会调起支付的路由组件界面,由于我是用vue+vue-router写的,所以你最好了解下vue和vue-router,记得引入微信jssdk1.3.0,最新版本才包含小程序相对应方法。很遗憾,微信并没提供npm包,github有人提供的commonjs引入方式的微信jssdk版本也只有1.2.0,所以就只能这样引入了。
<script src="./static/jweixin-1.3.0.js">script>
2、首先我们像官网那样正常嵌入一个内嵌网页,url是wxmini_webview.js中data中定义的变量,webview加载的就是网页就是这个url。
<web-view src="{{url}}">web-view>
3、在内嵌网页web_pay.vue里判断当前是否是微信环境。
window.wx.ready(function () {
isWxMini = window.__wxjs_environment === 'miniprogram'
})
4、在内嵌网页web_pay.vue调用支付时把支付金额,支付说明,支付成功跳转url...(任何你想要的参数,记得encodeURIComponent),传给小程序原生页面。
if (isWxMini) {
let jumpUrl = encodeURIComponent(window.location)
let path = `/page/pay/pay?amount=${amount}&title=${desc}&jumpUrl=${jumpUrl}`
window.wx.miniProgram.navigateTo({
url: path
})
}
5、在小程序支付界面wxmini_pay.js里获取到内嵌网页传过来的值,这里演示方便,实际上是在page的data里存储这些会显示在界面的值好些。
onLoad: function (options) {
console.log(options)
// 获取网页传过来的值
// TODO 用es6解构来获取值TODO
jumpUrl = options.jumpUrl
amount = options.amount
title = options.title
...
},
6、支付成功后,把跳转url附带支付结果及当前时间保存到全局变量。
paySuccess () {
let currentTime = new Date().getTime()
//这是为了防止wxmini_webview.js文件里调用setData由于前后两个url一致导致路由不触发刷新的bug
jumpUrl = options.jumpUrl+encodeURIComponent(`?payResult=1&time=${currentTime}`)
//payResult=1表示支付成功,这里我偷懒了直接在url后面补?,实际情况比较复杂
//为了实现支付成功返回后的无刷新加载,这里的参数应该是属于路由web_pay.vue的,而不是属于window.location.search的
//所以要判断路由锚点#的位置和是否已经有路由参数(如果是vue-router的history模式我没用过,应该和window.location一样吧)
getApp().globalData.paySuccessUrl=jumpUrl //保存跳转url到小程序全局变量里
wx.navigateBack() //返回会上个页面,也就是承载网页的容器页面wxmini_pay.js
}
7、回到小程序wxmini_webview.js,会触发onshow,在里面进行界面无刷新加载。
onShow: function () {
console.log('on show')
let paySuccessUrl = getApp().globalData.paySuccessUrl
getApp().globalData.paySuccessUrl="" //清空支付成功url,防止一些 *** 作触发onShow事件
if (paySuccessUrl) {
let url = decodeURIComponent(paySuccessUrl)
this.setData({
//这里在次说明下步骤6中的&time=${currentTime},就是因为不加这个当你第一次支付成功回来这里
//这个url跟你第二次支付成功回来这里是一样的,会导致第二次支付开始,这里的setData方法失效
url
})
}
},
8、步骤7中的setData会触发webview中的网页加载,由于我采用的是vue-router,而且前后两个url只有路由的参数query不一样,所以并不会触发界面刷新,也不会触发路由的重新加载,而是只会触发beforeRouteUpdate 这个方法,举个例子,现在支付前界面是https://host/#/pay,然后支付成功后跳转https://host/?payResult=1&time=123456#/pay,此时界面不会刷新,pay路由也不会重新加载,而是触发beforeRouteUpdate (to, from, next),你要做的只是在这里界面解析to.query里的数据,然后该干嘛干嘛
beforeRouteUpdate (to, from, next) {
console.log('路由发生改变,很有可能是小程序的支付成功回调')
let payResult = to.query.payResult
if (payResult) { // 小程序支付成功
if (payResult === '1') {
console.log('支付成功,下班打卡走人')
}
}
next()
},
1:仿豆瓣电影微信小程序https://github.com/zce/weapp-demo
2:微信小程序移动端商城
https://github.com/liuxuanqiang/wechat-weapp-mall
3:Gank微信小程序
https://github.com/lypeer/wechat-weapp-gank
4:微信小程序高仿QQ应用
https://github.com/xiehui999/SmallAppForQQ
5:微信中的知乎
https://github.com/RebeccaHanjw/weapp-wechat-zhihu
6:实现一个移动端小商城
https://github.com/skyvow/m-mall
7:微信小程序demo
https://github.com/web-Marker/wechat-Development
8: 跑步微信小程序Demo
https://github.com/alanwangmodify/weChatApp-Run
9:简单的v2ex微信小程序
https://github.com/jectychen/wechat-v2ex
10:腾讯云微信小程序
https://github.com/tencentyun/weapp-client-demo
11:微信小程序-微票
https://github.com/wangmingjob/weapp-weipiao
12:微信小程序demo 仿手机淘宝
https://github.com/ChangQing666/wechat-weapp-taobao
13:一个为微信小程序开发准备的基础骨架
https://github.com/zce/weapp-boilerplate
14:巴爷微信商城的简单版本
https://github.com/bayetech/wechat_mall_applet
15:微信小程序 - 电影推荐
https://github.com/yesifeng/wechat-weapp-movie
16:微信小程序-知乎日报
https://github.com/myronliu347/wechat-app-zhihudaily
17:微信小程序: 音乐播放器
https://github.com/eyasliu/wechat-app-music
18:使用微信小程序实现分答这款APP的基础功能
https://github.com/davedavehong/fenda-mock
19:微信小程序开发demo-地图定位
https://github.com/giscafer/wechat-weapp-mapdemo
:20:微信小程序 - 豆瓣电影
https://github.com/hingsir/weapp-douban-film
21:wepy仿微信聊天界面
https://github.com/wepyjs/wepy-wechat-demo
22:仿 「ONE · 一个」 的微信小程序
https://github.com/ahonn/weapp-one
23:微信小程序集成Redux实现的Todo list
https://github.com/charleyw/wechat-weapp-redux-todos
24: 基于Zhihu Live数据的微信小程序
https://github.com/dongweiming/weapp-zhihulive
25:微信小程序之小熊の日记
https://github.com/harveyqing/BearDiary
26:仿网易云音乐APP的微信小程序
https://github.com/sqaiyan/netmusic-app
27:微信小程序的Flex布局demo
https://github.com/icindy/wxflex
28:番茄时钟微信小程序版
https://github.com/kraaas/timer
29:Wafer 服务端 Demo
https://github.com/tencentyun/weapp-node-server-demo
30:微信小程序版聊天室
https://github.com/ericzyh/wechat-chat
31:微信小程序版简易计算器,适合入门练手
https://github.com/dunizb/wxapp-sCalc
32:微信小程序示例一笔到底
https://github.com/CFETeam/weapp-demo-session
33:基于面包旅行 API 制作的微信小程序示例
https://github.com/romoo/weapp-demo-breadtrip
34:新闻阅读器
https://github.com/vace/wechatapp-news-reader
35:一个简单的微信小程序购物车DEMO
https://github.com/SeptemberMaples/wechat-weapp-demo
36:微信小程序-公众号热门文章信息流
https://github.com/hijiangtao/weapp-newsapp
37:通过Node.js实现的妹子照片爬虫微信小程序
https://github.com/litt1e-p/weapp-girls
38:从FlexLayout布局开始学习微信小程序
https://github.com/hardog/wechat-app-flexlayout
39:HiApp 微信小程序版
https://github.com/BelinChung/wxapp-hiapp
40:微信小程序的简单尝试
https://github.com/zhengxiaowai/weapp-github
41:集美大学图书馆的便捷工具
https://github.com/ToadWoo/bookbox-wxapp
42:微信小程序版妹纸图
https://github.com/brucevanfdm/WeChatMeiZhi
43:V2ex 微信小程序版
https://github.com/bestony/weapp-V2ex
44:微信小程序仿百思不得姐
https://github.com/SureZhangHW/WXBaiSi
45:微信小程序音乐播放器应用
https://github.com/xingbofeng/wx-audio
46:医药网原生APP的微信小程序DEMO
https://github.com/jiabinxu/yiyaowang-wx
47:微信小程序跟读
https://github.com/gxmzjxk/wxreading
48:微信小程序瀑布流布局模式
https://github.com/icindy/WxMasonry
49:微信小程序HotApp云笔记
https://github.com/hotapp888/hotapp-notepad
50:小程序模仿——网易云音乐
https://github.com/MengZhaoFly/wechatApp-netease_cloudmusic
51:微信小程序商城demo
https://github.com/lin-xin/wxapp-mall
52:微信小程序版的扫雷
https://github.com/jsongo/wx-mime
53:专注管理时间的微信小程序
https://github.com/SeaHub/PigRaising
54:微信小程序版干货集中营
https://github.com/iwgang/GankCamp-WechatAPP
55:英雄联盟(LOL)战绩查询
https://github.com/xiaowenxia/weapp-lolgame
56:微信小程序首字母排序选择表
https://github.com/icindy/wxSortPickerView
57:微信小程序版豆瓣电影
https://github.com/David-Guo/weapp-douban-movie
58:简单的实现了1024的游戏规则
https://github.com/RedLove/WexinApp_1024
59:微信小程序试玩
https://github.com/uniquexiaobai/wechat-app-githubfeed
60:微信小程序逗乐
https://github.com/mkxiansheng/doule
61:一步步开发微信小程序
https://github.com/Gavin-YYC/wxApp
62:一个 meteor 的 React todo list 例子
https://github.com/leijing7/wx-mina-meteor
63:微信小程序健康菜谱
https://github.com/bestTao/caipu_weixin
64: jspapa微信小程序版本
https://github.com/biggerV/jspapa-wx
65:微信小程序版的CNodeJs中文社区
https://github.com/Shaman05/CNodeJs-WXAPP
66:LeanCloud 的微信小程序用户登陆Demo
https://github.com/bestony/weapp-LeanCloud
67: 微笑话微信小程序
https://github.com/zszdevelop/wejoke
68:微信小程序开发的App
https://github.com/chongbenben/liwushuoapp
69:体育新闻微信小程序
https://github.com/havenxie/weapp-sportsnews
70:基于Labrador和mobx构建的小程序开发demo
https://github.com/spacedragon/labrador_mobx_example
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)