Vue實(shí)現(xiàn)微信支付功能遇到的坑
微信支付功能相比較支付寶支付,有點(diǎn)點(diǎn)繁瑣,整理記錄下來(lái),以便日后所需
項(xiàng)目用VUE+EL搭建而成,支付用EL的radio來(lái)做的
<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>
坑來(lái)了。。。。
之前一直是前端請(qǐng)求后臺(tái)接口,后臺(tái)調(diào)取微信支付接口,但點(diǎn)擊微信支付后一直提示跨域、重定向問(wèn)題
就是這個(gè)坑,問(wèn)了好多人,都在說(shuō)是不是沒(méi)有配置安全域名或接口白名單什么的,但后端真真的已經(jīng)配置了,后來(lái)我們換了一種方法,由前端來(lái)提供code 授權(quán)成功之后,返回給后端
在mounted()獲取code:
this.code = '' var local = window.location.href // 獲取頁(yè)面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) { // 如果沒(méi)有code,則去請(qǐng)求 this.$axios({ method: "post", url: "后臺(tái)接口", params: {code: this.code} //將code傳給后臺(tái),如果有其他參數(shù)需要傳遞,請(qǐng)一并傳遞 }).then((res)=>{ //調(diào)取微信支付 var that = this; function onBridgeReady(){ WeixinJSBridge.invoke("getBrandWCPayRequest",{ appId: res.data.appId, //公眾號(hào)名稱,由商戶傳入 timeStamp: res.data.timeStamp, //時(shí)間戳,自1970年以來(lái)的秒數(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)微信支付功能遇到的坑,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
Vue.js每天必學(xué)之過(guò)濾器與自定義過(guò)濾器
Vue.js每天必學(xué)之過(guò)濾器與自定義過(guò)濾器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09Vue中使用require.context自動(dòng)引入組件的操作方法
require.context?是?webpack?提供的一個(gè)API,用于創(chuàng)建context,即一組具有相同上下文的模塊,使用?require.context?可以方便地加載多個(gè)模塊,并且可以靈活地控制模塊的加載順序和依賴關(guān)系,本文給大家講解Vue中使用require.context自動(dòng)引入組件的方法,感興趣的朋友一起看看吧2024-01-01vue3?中使用?jsx?開發(fā)的詳細(xì)過(guò)程
這篇文章主要介紹了vue3?中使用?jsx?開發(fā),本文著重說(shuō)一下在使用 .vue 文件和 .jsx 文件在使用語(yǔ)法上的差異,需要的朋友可以參考下2022-09-09前端vue如何通過(guò)URL訪問(wèn)存儲(chǔ)在服務(wù)器或磁盤的圖片
在Vue中,通常需要將圖片存儲(chǔ)在服務(wù)器端,并通過(guò)url地址來(lái)訪問(wèn),下面這篇文章主要給大家介紹了前端vue如何通過(guò)URL訪問(wèn)存儲(chǔ)在服務(wù)器或磁盤的圖片的相關(guān)資料,需要的朋友可以參考下2024-02-02vue預(yù)覽 pdf、word、xls、ppt、txt文件的實(shí)現(xiàn)方法
這篇文章主要介紹了vue預(yù)覽 pdf、word、xls、ppt、txt文件的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04vue-cli項(xiàng)目中使用公用的提示彈層tips或加載loading組件實(shí)例詳解
這篇文章主要介紹了vue-cli項(xiàng)目中使用公用的提示彈層tips或加載loading組件,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2018-05-05在vue中實(shí)現(xiàn)低代碼組件參數(shù)配置的流程步驟
這篇文章主要介紹了在vue中實(shí)現(xiàn)低代碼組件參數(shù)配置的流程步驟,文中的代碼示例講解的非常詳細(xì),對(duì)我們的學(xué)習(xí)或工作有一定的參考價(jià)值,需要的朋友可以參考下2023-07-07