最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue 解決在微信內(nèi)置瀏覽器中調(diào)用支付寶支付的情況

 更新時(shí)間:2020年11月09日 10:40:44   作者:一只前端小菜鳥(niǎo)  
這篇文章主要介紹了vue 解決在微信內(nèi)置瀏覽器中調(diào)用支付寶支付的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

我的思路大概是這樣的

1. 驗(yàn)證是否是在微信內(nèi)置瀏覽器中調(diào)用支付寶

2.給支付頁(yè)面的url加上調(diào)用接口所需的參數(shù)(因?yàn)樵谖⑿爬锸遣荒苤苯诱{(diào)用支付寶的需要調(diào)用外部瀏覽器)

3.在外部瀏覽器中完成支付跳轉(zhuǎn)頁(yè)面

第一步:

payment: 是選擇支付頁(yè)面,pay-mask是用于在微信內(nèi)置瀏覽器中調(diào)用支付寶的中間頁(yè)

payment主要代碼:

let ua = window.navigator.userAgent.toLowerCase()

ua.match(/MicroMessenger/i) == "micromessenger"

這兩句代碼就是判斷用戶(hù)是否是用微信內(nèi)置瀏覽器打開(kāi)的頁(yè)面

如果是的話(huà)我們就需要把調(diào)用支付接口所需要的接口參數(shù)傳給另一個(gè)頁(yè)面(你也可以就在當(dāng)前頁(yè)做處理,我這樣做是因?yàn)槲蚁爰右粋€(gè)提示頁(yè))

pay-mask代碼如下:

<template> 
<div class="mask"> 
<!-- 提示在瀏覽器打開(kāi)彈框 --> 
<div class="pay-mask" v-show="isWeiXi"> 
</div>
 
<div class="payform"></div> 
</div>
</template>
<script type="text/ecmascript-6">
 
/*
解決在微信瀏覽器中無(wú)法調(diào)用支付寶支付:
1.拿到從支付頁(yè)傳遞過(guò)來(lái)的參數(shù)重組成自己需要的數(shù)據(jù)
2.清除舊的緩存數(shù)據(jù)(防止出現(xiàn)意外bug)
3.驗(yàn)證是否是微信瀏覽器(不是就把拿到的key和token存進(jìn)本地緩存中,用于其他接口調(diào)用)
4.請(qǐng)求數(shù)據(jù)接口拿到支付寶的支付表單裝進(jìn)頁(yè)面中完成支付
*/
 
export default { 
name: 'payMask', 
data () { 
return { 
isWeiXi: true, 
theRequest: {} 
} 
},
 
methods: {
 
// 獲取當(dāng)前微信瀏覽器url地址參數(shù)
 
getUrlParams() {
 
// 清除舊的緩存數(shù)據(jù)
 
// window.localStorage.clear() 
let theRequest = new Object(); 
let url = location.href; //獲取url中"?"符后的字串 
let strs = []; 
if (url.indexOf("?") != -1) {
var str = url.substr(parseInt(url.indexOf("?")+1)); 
strs = str.split("&"); 
for (var i = 0; i < strs.length; i++) { 
theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]); 
} 
}
 
this.theRequest = theRequest; 
},
 
// 監(jiān)控微信瀏覽器
 
isWeiXin() { 
let ua = window.navigator.userAgent.toLowerCase(); 
if (ua.match(/MicroMessenger/i) != "micromessenger") { 
this.isWeiXi = false
 
// 重新存儲(chǔ)新的token(在外部瀏覽器打開(kāi)支付完成后是沒(méi)有token這些數(shù)據(jù)的所以需要在瀏覽器一打開(kāi)的時(shí)候就去存一次數(shù)據(jù))
 
window.localStorage.setItem("channelId", this.theRequest.channelId); 
window.localStorage.setItem("userKey",JSON.stringify(this.theRequest.userKey)); 
window.localStorage.setItem("userToken",JSON.stringify(this.theRequest.userToken)); 
if(this.theRequest.memberTypeName){
 
// 調(diào)用支付寶支付
 
this.zfbPayBuy(this.theRequest) 
} else { 
this.zfbPayBuySocial(this.theRequest) 
}
 
} else { 
this.isWeiXi = true
 
} 
},
 
// 支付寶支付(會(huì)員)
 
zfbPayBuy(data){
 
// 請(qǐng)求接口拿到接口返回的支付表單(接口直接返回的,我們直接裝進(jìn)頁(yè)面就可以了)
 
this.axios.payBuy(data).then(res => { 
if (res.status == 0) { 
let payHtml = document.querySelector(".payform"); 
payHtml.innerHTML = res.result;
let paySub = payHtml.getElementsByTagName("input")[1]; 
paySub.click()
 
} 
}) 
},
 
//支付寶支付(社保)
 
zfbPayBuySocial(data) { 
this.axios.buySocial(data).then(res => { 
if (res.status == 0) { 
let payHtml = document.querySelector(".payform") 
payHtml.innerHTML = res.result 
let paySub = payHtml.getElementsByTagName("input")[1] 
paySub.click() 
} 
}) 
}, 
}, 
created() {
 
// 拿去當(dāng)前地址參數(shù) 

this.getUrlParams() 
if(JSON.stringify(this.theRequest) != '{}'){ 
this.isWeiXin() 
} 
},
 
mounted(){
 
// 更新一下當(dāng)前瀏覽器地址(防止在微信里調(diào)用外部瀏覽器的時(shí)候出現(xiàn)意外bug) 

window.location.href = window.location.href 
} 
} 
</script>
<style scoped lang="less"> 

.pay-mask { 
width: 100%; 
min-height: 100%; 
position:fixed; 
z-index: 99; 
background-color: rgba(0, 0, 0,.6); 
background-image: url('../../image/icon/confirm.png'); 
background-repeat: no-repeat; 
} 

</style>

補(bǔ)充知識(shí):vue 移動(dòng)端H5非內(nèi)置瀏覽器發(fā)起微信、支付寶支付

該貼只說(shuō)前端部分,后端人員繞路哈。

先調(diào)用統(tǒng)一下單接口后

1、微信部分,后端會(huì)返回一個(gè)url給你,

"mweb_url":https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx********************&package=162****

直接跳轉(zhuǎn)就行了。(最后提醒句:提示服務(wù)商參數(shù)缺失的話(huà)就讓服務(wù)商開(kāi)通H5支付)

window.location.href = res.data.mweb_url

2、支付寶方面就有點(diǎn)麻煩,因?yàn)樗祷氐氖且粋€(gè)form

所以嘛,需要?jiǎng)?chuàng)建個(gè)div然后innerHTML插入HTML代碼

const div = document.createElement('div') // 創(chuàng)建div
div.innerHTML = res.data.aliHtml // 將返回的form 放入div
document.body.appendChild(div) // 將上面創(chuàng)建的元素加入到BODY的尾部
document.forms[0].submit() // 表示獲取當(dāng)前頁(yè)面的第一個(gè)表單

這樣就OK了

如果想問(wèn)支付成功后的跳轉(zhuǎn)呢,你則需要給一個(gè)鏈接給到后端,后端傳給阿里或者微信,成功后自己跳的。

以上這篇vue 解決在微信內(nèi)置瀏覽器中調(diào)用支付寶支付的情況就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vite環(huán)境變量配置小結(jié)

    vite環(huán)境變量配置小結(jié)

    Vite環(huán)境變量配置是Vite開(kāi)發(fā)環(huán)境下重要的一環(huán),它能夠根據(jù)不同的環(huán)境變量對(duì)項(xiàng)目進(jìn)行不同的配置,使得項(xiàng)目更加靈活和可維護(hù),本文就來(lái)介紹一下vite環(huán)境變量配置小結(jié),感興趣的可以了解一下
    2023-11-11
  • vue 3.x 中mixin封裝公用方法應(yīng)用方式

    vue 3.x 中mixin封裝公用方法應(yīng)用方式

    這篇文章主要介紹了vue 3.x 中mixin封裝公用方法應(yīng)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue實(shí)現(xiàn)移動(dòng)端拖拽懸浮按鈕

    vue實(shí)現(xiàn)移動(dòng)端拖拽懸浮按鈕

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)移動(dòng)端拖拽懸浮按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vue3中如何使用vue-types

    vue3中如何使用vue-types

    vue-types 在 Vue 3 中的使用主要適用于希望進(jìn)行更細(xì)致的 prop 驗(yàn)證的場(chǎng)景,尤其是在 JavaScript 項(xiàng)目中,這篇文章給大家介紹vue3中如何使用vue-types,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • Vue 解決在element中使用$notify在提示信息中換行問(wèn)題

    Vue 解決在element中使用$notify在提示信息中換行問(wèn)題

    這篇文章主要介紹了Vue 解決在element中使用$notify在提示信息中換行問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • Vue3的10種組件通信方式總結(jié)

    Vue3的10種組件通信方式總結(jié)

    組件是vue.js最強(qiáng)大的功能之一,而組件實(shí)例的作用域是相互獨(dú)立的,這就意味著不同組件之間的數(shù)據(jù)無(wú)法相互引用,這篇文章主要給大家介紹了關(guān)于Vue3的10種組件通信方式的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • vue啟動(dòng)后請(qǐng)求后端接口報(bào)ERR_EMPTY_RESPONSE錯(cuò)誤的解決

    vue啟動(dòng)后請(qǐng)求后端接口報(bào)ERR_EMPTY_RESPONSE錯(cuò)誤的解決

    這篇文章主要介紹了vue啟動(dòng)后請(qǐng)求后端接口報(bào)ERR_EMPTY_RESPONSE錯(cuò)誤的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 深入理解Vue的過(guò)度與動(dòng)畫(huà)

    深入理解Vue的過(guò)度與動(dòng)畫(huà)

    這篇文章主要為大家介紹了Vue的過(guò)度與動(dòng)畫(huà),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • vue中進(jìn)入詳情頁(yè)記住滾動(dòng)位置的方法(keep-alive)

    vue中進(jìn)入詳情頁(yè)記住滾動(dòng)位置的方法(keep-alive)

    今天小編就為大家分享一篇vue中進(jìn)入詳情頁(yè)記住滾動(dòng)位置的方法(keep-alive),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vant中field組件label屬性?xún)啥藢?duì)齊問(wèn)題及解決

    vant中field組件label屬性?xún)啥藢?duì)齊問(wèn)題及解決

    這篇文章主要介紹了vant中field組件label屬性?xún)啥藢?duì)齊問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評(píng)論

泽州县| 莎车县| 凤山县| 扬州市| 中超| 天柱县| 西和县| 汶上县| 泰安市| 高青县| 梁平县| 南华县| 于田县| 尼木县| 祁连县| 马公市| 阿尔山市| 报价| 临沧市| 汝南县| 安图县| 永平县| 修武县| 绥中县| 工布江达县| 达拉特旗| 房山区| 康定县| 阿拉善右旗| 巩义市| 青冈县| 博湖县| 揭西县| 前郭尔| 蕉岭县| 交城县| 四川省| 隆德县| 金溪县| 虎林市| 尼玛县|