vue 微信支付的坑_Vue实现微信支付功能遇到的坑

本文记录了在Vue项目中实现微信支付功能时遇到的跨域和重定向问题,以及解决方案。通过前端获取code并传递给后台,解决微信支付接口调用的问题。同时介绍了支付宝支付的简单实现。
摘要由CSDN通过智能技术生成

微信支付功能相比较支付宝支付,有点点繁琐,整理记录下来,以便日后所需

项目用VUE+EL搭建而成,支付用EL的radio来做的

微信支付

推荐安装最新版微信使用

支付宝

推荐有支付宝账户的用户使用

坑来了。。。。

之前一直是前端请求后台接口,后台调取微信支付接口,但点击微信支付后一直提示跨域、重定向问题

就是这个坑,问了好多人,都在说是不是没有配置安全域名或接口白名单什么的,但后端真真的已经配置了,后来我们换了一种方法,由前端来提供code 授权成功之后,返回给后端

在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

};

然后再点击按钮中写判断了

methods:{

Compay(){

let radio_data = this.radio

if(radio_data == 'weixin'){

if (this.code) { // 如果没有code,则去请求

this.$axios({

method: "post",

url: "后台接口",

params: {code: this.code} //将code传给后台,如果有其他参数需要传递,请一并传递

}).then((res)=>{

//调取微信支付

var that = this;

function onBridgeReady(){

WeixinJSBridge.invoke("getBrandWCPayRequest",{

appId: res.data.appId, //公众号名称,由商户传入

timeStamp: res.data.timeStamp, //时间戳,自1970年以来的秒数

nonceStr: res.data.nonceStr, //随机串

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('调起微信支付失败');

}

}

);

}

onBridgeReady();

//微信支付

})

}

}else if(radio_data == 'zhifubao'){

this.$axios.post('后台接口',data).then((res)=> {

this.html = res.data

var form= res.data;

const div = document.createElement('div') //创建div

div.innerHTML = form//此处form就是后台返回接收到的数据

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); //在微信中用浏览器跳转到支付宝支付

})

}

}

}

总结

以上所述是小编给大家介绍的Vue实现微信支付功能遇到的坑,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值