亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 小程序 > 正文

詳解微信小程序與內嵌網頁交互實現支付功能

2020-03-21 16:09:06
字體:
來源:轉載
供稿:網友

上個月,小程序開放了新功能,支持內嵌網頁,所以我就開始了小程序內嵌網頁之路,之前我只是個小安卓。

微信小程序,網頁交互,支付

內嵌網頁中可使用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  ... },

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()  },

這么晚了,先睡了,如果有空我再整理個demo,以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品亚洲综合天堂夜夜| 日韩动漫免费观看电视剧高清| 日韩在线观看免费av| 91精品久久久久久综合乱菊| 亚洲成人黄色在线| 亚洲永久在线观看| 91在线免费观看网站| 亚洲国产另类 国产精品国产免费| 亚洲欧美中文日韩v在线观看| 神马国产精品影院av| 亚洲日本aⅴ片在线观看香蕉| 国产美女精品视频| 日韩欧美在线视频免费观看| 国产成人精品一区二区| 日韩av免费看网站| 亚洲激情小视频| 亚洲男人天堂九九视频| 成人久久一区二区| 4p变态网欧美系列| 国产精品免费福利| 中文字幕视频一区二区在线有码| 国产亚洲欧美日韩美女| 欧美午夜www高清视频| 国产精品最新在线观看| 91精品国产综合久久香蕉的用户体验| 欧美日韩亚洲激情| 欧美又大又粗又长| 日韩美女视频免费在线观看| 国产视频精品在线| 日韩视频免费在线观看| 色妞在线综合亚洲欧美| 国产精品成人av性教育| 亚洲欧洲国产精品| 精品视频久久久久久| 国产免费一区二区三区香蕉精| 69国产精品成人在线播放| 亚洲最大福利视频网| 国产日韩欧美一二三区| 亚洲国产天堂久久综合网| 欧美极品少妇全裸体| 欧美一级高清免费| 欧美影院成年免费版| www.美女亚洲精品| 亚洲已满18点击进入在线看片| 性欧美暴力猛交69hd| 久热国产精品视频| 久久av资源网站| 青草青草久热精品视频在线网站| 成人精品福利视频| 欧美怡春院一区二区三区| 中文字幕日韩有码| 欧美成人午夜视频| 91夜夜揉人人捏人人添红杏| 国产日韩精品在线播放| 欧美日韩一区二区在线播放| 亚洲欧美日韩一区二区在线| 亚洲免费电影一区| 久久视频在线看| 亚洲天堂av在线免费| 亚洲精品999| 久久男人的天堂| 日韩福利视频在线观看| 欧美日韩国产999| 久久久久久久电影一区| 欧美中文在线视频| 国产精品扒开腿做爽爽爽男男| 福利微拍一区二区| 欧美黑人性生活视频| 久久伊人精品一区二区三区| 成人激情黄色网| 亚洲精品国产福利| 亚洲国产高潮在线观看| 欧美日韩成人黄色| 欧美丰满少妇xxxx| 亚洲国产精彩中文乱码av| 国产精品一区二区久久国产| 精品伊人久久97| 国产91精品黑色丝袜高跟鞋| 亚洲r级在线观看| 欧美日韩亚洲精品一区二区三区| 91精品在线观看视频| 91九色单男在线观看| 日本精品视频在线观看| 精品国产户外野外| 欧美大片免费观看在线观看网站推荐| 国产亚洲成精品久久| 在线精品视频视频中文字幕| 777精品视频| 亚洲国产婷婷香蕉久久久久久| 日韩一区av在线| 欧美成人免费全部观看天天性色| 国产91精品久久久久久| 欧美xxxx14xxxxx性爽| 国产亚洲欧美另类中文| 国产精品久久国产精品99gif| 欧美午夜女人视频在线| 亚洲成人久久久久| 国产成人精品在线播放| 国产丝袜一区二区| 欧美精品做受xxx性少妇| 亚洲欧美中文日韩v在线观看| 久久久久国产精品免费网站| 91久久精品国产91久久性色| 日韩成人黄色av| 国产精品久久久久久久久影视| 日韩欧美在线视频日韩欧美在线视频| 国产精品视频在线播放| 亚洲尤物视频网| 欧美亚洲伦理www| 久久艳片www.17c.com| 在线亚洲国产精品网| 国产久一一精品| 亚洲黄页网在线观看| 久久久成人精品| 91高清视频免费观看| 国产精品视频最多的网站| 超碰日本道色综合久久综合| 国产精品久久久精品| 亚洲国产天堂久久综合| 国产精品影院在线观看| 国产亚洲日本欧美韩国| 国产精品吊钟奶在线| 久久九九亚洲综合| 亚洲国产精品va在线看黑人| 亚洲亚裔videos黑人hd| 91中文精品字幕在线视频| 欧美国产日韩一区二区| 91tv亚洲精品香蕉国产一区7ujn| 91在线直播亚洲| 久久久久五月天| 久久伊人免费视频| 国产精品嫩草视频| 中文字幕久久久av一区| 亚洲电影免费观看高清完整版在线观看| 亚洲国产精品小视频| 亚洲综合第一页| 欧美成人精品在线| 国产欧美日韩精品在线观看| 亚洲一区二区在线| 久久手机精品视频| 欧美精品精品精品精品免费| 久久久av电影| 欧美巨猛xxxx猛交黑人97人| 最近2019年好看中文字幕视频| 亚洲福利影片在线| 自拍偷拍亚洲一区| 北条麻妃99精品青青久久| 成人网在线视频| 欧美日韩亚洲精品一区二区三区| 欧美成人午夜影院| 伊人久久久久久久久久久久久| 情事1991在线| www欧美日韩| 日本高清视频一区| 在线日韩精品视频| 久久久999国产| 精品人伦一区二区三区蜜桃网站| 最近2019年中文视频免费在线观看| 主播福利视频一区| 国产精品女人久久久久久| 欧美激情在线观看视频| 色综合91久久精品中文字幕| 国产一区二中文字幕在线看| 色伦专区97中文字幕|