Vue實(shí)現(xiàn)微信支付功能遇到的坑
微信支付功能相比較支付寶支付,有點(diǎn)點(diǎn)繁瑣,整理記錄下來,以便日后所需
項(xiàng)目用VUE+EL搭建而成,支付用EL的radio來做的
<el-radio v-model="radio" label="weixin" > <i class="iconfont icon-weixin"></i> <div class="list"> <h5>微信支付</h5> <span>推薦安裝最新版微信使用</span> </div> </el-radio> <el-radio v-model="radio" label="zhifubao"> <i class="iconfont icon-zhifubao"></i> <div class="list"> <h5>支付寶</h5> <span>推薦有支付寶賬戶的用戶使用</span> </div> </el-radio>
坑來了。。。。
之前一直是前端請求后臺(tái)接口,后臺(tái)調(diào)取微信支付接口,但點(diǎn)擊微信支付后一直提示跨域、重定向問題

就是這個(gè)坑,問了好多人,都在說是不是沒有配置安全域名或接口白名單什么的,但后端真真的已經(jīng)配置了,后來我們換了一種方法,由前端來提供code 授權(quán)成功之后,返回給后端
在mounted()獲取code:
this.code = ''
var local = window.location.href // 獲取頁面url
var appid = ''
this.code = getUrlCode().code // 截取code
if (this.code == null || this.code === ''){
window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${encodeURIComponent(local)}&response_type=code&scope=snsapi_base&state=123#wechat_redirect`
};
function getUrlCode(){
var url = location.search
// this.winUrl = url
// alert(this.winUrl)
var theRequest = new Object()
if (url.indexOf("?") != -1){
var str = url.substr(1)
var strs = str.split("&")
for(var i = 0; i < strs.length; i ++){
theRequest[strs[i].split("=")[0]]=(strs[i].split("=")[1])
}
}
return theRequest
};
然后再點(diǎn)擊按鈕中寫判斷了
methods:{
Compay(){
let radio_data = this.radio
if(radio_data == 'weixin'){
if (this.code) { // 如果沒有code,則去請求
this.$axios({
method: "post",
url: "后臺(tái)接口",
params: {code: this.code} //將code傳給后臺(tái),如果有其他參數(shù)需要傳遞,請一并傳遞
}).then((res)=>{
//調(diào)取微信支付
var that = this;
function onBridgeReady(){
WeixinJSBridge.invoke("getBrandWCPayRequest",{
appId: res.data.appId, //公眾號(hào)名稱,由商戶傳入
timeStamp: res.data.timeStamp, //時(shí)間戳,自1970年以來的秒數(shù)
nonceStr: res.data.nonceStr, //隨機(jī)串
package: res.data.package,
signType: res.data.signType, //微信簽名方式:
paySign: res.data.paySign //微信簽名sign
},
function(res){
if (res.err_msg == "get_brand_wcpay_request:ok"){
alert('恭喜您,支付成功!')
}else if(res.err_msg == "get_brand_wcpay_request:cancel"){
alert('支付失敗!');
}else if (res.err_msg == "get_brand_wcpay_request:fail"){
alert('調(diào)起微信支付失敗');
}
}
);
}
onBridgeReady();
//微信支付
})
}
}else if(radio_data == 'zhifubao'){
this.$axios.post('后臺(tái)接口',data).then((res)=> {
this.html = res.data
var form= res.data;
const div = document.createElement('div') //創(chuàng)建div
div.innerHTML = form//此處form就是后臺(tái)返回接收到的數(shù)據(jù)
document.body.appendChild(div)
var queryParam = ''; Array.prototype.slice.call(document.querySelectorAll("input[type=hidden]")).forEach(function (ele) {
queryParam += '&' + ele.name + "=" + encodeURIComponent(ele.value);
});
var gotoUrl = document.querySelector("#alipaysubmit").getAttribute('action') + queryParam;
_AP.pay(gotoUrl); //在微信中用瀏覽器跳轉(zhuǎn)到支付寶支付
})
}
}
}
總結(jié)
以上所述是小編給大家介紹的Vue實(shí)現(xiàn)微信支付功能遇到的坑,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
vue使用lodop打印控件實(shí)現(xiàn)瀏覽器兼容打印的方法
這篇文章主要介紹了vue使用lodop打印控件實(shí)現(xiàn)瀏覽器兼容打印的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
基于vue-element組件實(shí)現(xiàn)音樂播放器功能
這篇文章主要介紹了基于vue-element組件實(shí)現(xiàn)音樂播放器功能,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-05-05
解決vue項(xiàng)目運(yùn)行npm run serve報(bào)錯(cuò)的問題
這篇文章主要介紹了解決vue項(xiàng)目運(yùn)行npm run serve報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
使用Vue3進(jìn)行數(shù)據(jù)綁定及顯示列表數(shù)據(jù)
這篇文章主要介紹了使用Vue3進(jìn)行數(shù)據(jù)綁定及顯示列表數(shù)據(jù),整篇文章圍繞Vue3進(jìn)行數(shù)據(jù)綁定及顯示列表數(shù)據(jù)的想換自來哦展開內(nèi)容,需要的小伙伴可以參考一下2021-10-10
Vue 2.0 中依賴注入 provide/inject組合實(shí)戰(zhàn)
這篇文章主要介紹了Vue 2.0 依賴注入 provide/inject組合,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-06-06
VUE腳手架框架編寫簡潔的登錄界面的實(shí)現(xiàn)
本文主要介紹了VUE腳手架框架編寫簡潔的登錄界面的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
使用vue-json-viewer實(shí)現(xiàn)JSON數(shù)據(jù)可視化詳解
vue-json-viewer?是一個(gè)用于在?vue.js?應(yīng)用中展示?JSON?數(shù)據(jù)的插件,它提供了一種直觀和美觀的方式來可視化?JSON?數(shù)據(jù),下面我們來看看如何使用它進(jìn)行JSON數(shù)據(jù)可視化吧2025-01-01
詳解如何實(shí)現(xiàn)在Vue中導(dǎo)入Excel文件
這篇文章主要介紹了如何在Vue中導(dǎo)入Excel文件,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以跟隨小編一起了解一下2022-01-01

