微信公众号商城,调支付宝支付
1、在点击调取支付宝支付接口时
页面先引入中间页的ap.js
import _AP from 'components/pay/ap'
let ua = window.navigator.userAgent.toLowerCase(); // 判断是否是微信浏览器
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
let order_sn = {
token: sessionStorage.getItem('userId'),
pay_sn: this.pay_sn,
payment_code: this.payment_code
}
alipayOrder(order_sn).then(res => {
// console.log(res.result)
console.log(res)
this.html = res
var form = res
const div = document.createElement('div')
div.innerHTML = form//此处form就是后台返回接收到的数据
// document.body.appendChild(div)
// document.forms[0].submit() // 在微信浏览器中不要直接进行跳转
//中间引导页
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); // 调取是中间页中的pay方法
}).catch((err) => {
console.log(err);
});
}
2、在页面新建一个文件夹,用来存放ap.js、pay.vue页面 (ap.js、pay.vue 支付宝官方会提供,)
这是需要根据自己项目需求进行修改ap.js
b.pay = function (d) {
var c = encodeURIComponent(a.encode(d));
// ###################千万注意这个地方#################
//location.replace (window.location.origin+"#/alipay?goto="+c)
//####我的'#/alipay'是pay.htm页面改装过来的路由地址,需要自行替换
//###################千万注意这个地方#################
//由于微信浏览器 会在你带链接打开其他页面时截取掉 #后面的参数 所以需要一波处理
// location.replace(window.location.origin + "/pay?goto=" + c)
// location.replace(window.location.origin + "/#/pay?goto=" + c)
var url = window.location.protocol + "//" + window.location.host + "/?time=" + new Date() + "#/pay?goto=" + c // 由于微信会在部分ios手机上面截断#之后内容,页面就不能进行跳转了,所以加上随机数(红色字体的内容)来解决
window.location.href = url
};