报错最近在做商城的时候,需要接入微信H5支付,其中有一个环节就是在请求服务端拿到“支付链接MWEB_URL”之后,进行跳转的时候,会出现如下图所示的问题
官方有给出了解决方案,自己尝试了摸索了好长时间,总结一下处理方式。
一、下单之后,给出一个弹窗,在弹窗里面使用一个按钮绑定点击事件,点了此按钮之后进入跳转方法。
//代码示例
//之所以弄一个按钮点击之后再跳,是为了规避自动跳转会丢失referer的问题。
<template>
<u-mask :show="isShowModal" :mask-click-able="false">
<view class="pay-wrap">
<u-icon name="close-circle" class="close-icon" @click="close"></u-icon>
<view class="image-bg-wrap">
<view class="message-title">您确定要支付该订单吗?</view>
<view class="footer-wrap">
<view class="op-btn" @click="goToPayPage">去支付</view>
</view>
</view>
</view>
</u-mask>
</template>
二、跳转处理(非iOS平台使用window.open进行跳转,iOS平台使用window.location.href)
//跳转到支付页面
goToPayPage() {
//设置回跳地址,支付完成之后回跳到哪?
let redirectUrl =
'&redirect_url=' +
encodeURIComponent(
'http://xxx.com'
)
//拼接上回跳地址
let linkUrl = this.linkUrl + redirectUrl
const system = uni.getSystemInfoSync()
if (system.platform == 'ios') {
//如果是iOS平台,使用location.href,iOS里面限制了window.open的使用。
window.location.href = linkUrl
} else {
window.open(linkUrl)
}
}
三、如果是在APP里面打开的H5页面,APP端需要做处理。
需要在webview中手动设置referer,
如(Map extraHeaders = new HashMap();
extraHeaders.put("Referer", "商户申请H5时提交的授权域名"))
网友评论