最近在做uniapp APP得项目,遇到了很多问题这个问题是目前卡的最久得一个问题卡了3天。
首先,支付宝支付分为 前端发起支付,和后台发起支付两种。
- 前端发起支付我之前做微信小程序得时候做过,首先向后台发送订单数据,生成订单。然后由前端调起手机微信支付进行付款。
- 而这次我们采用得是后台发起支付得方式,得到的返回值是一个
<form></form>
的表单html
结构 自带<script> 里面写的是监听提交按钮事件</script>
标签。 - 简单来说 由后台发起的支付会返回给我们一个
html
结构,这个够在uniapp中使用web-view
展示。但是安卓端不兼容。 - 最终解决办法是由后台把之前
POST
请求改成了GET
请求。 - 直接把链接复制到了
<web-view :src></web-view >
标签的src上面 - 前端代码
// 支付页面
uni.setStorageSync('payUrl', "http://*.*.*.*:****/pay/server/phone/goPay2?orderCode=" + orderrequest.orderCode +
"&paymentCount=" + orderrequest.paymentCount + "&orderTotalAmount=" + orderrequest.orderTotalAmount +
"&parentOrderId=" + orderrequest.parentOrderId + "&buyerId=" + orderrequest.buyerId + "&shipperId=" +
orderrequest.shipperId + "")
// 在写webview 的页面 获取这个链接赋值到src上面
// web-view页面
<template>
<view>
<web-view :src="url"></web-view>
</view>
</template>
let payUrl = uni.getStorageSync('payUrl');
this.url = uni.getStorageSync('payUrl');
- 第二种解决
const webview = plus.webview.create("", "custom-webview")
webview.loadURL(链接, {
"Referer": "项目域名https://&*^*&%&^%"
})
- 总结:在
uniapp
中调用本地静态html
URL
传参 不适合传入复杂结构 简单结构可以,否则 安卓端不兼容。H5
端兼容。 - 在本地
html
页面加载ajax
请求时存在跨域问题导致请求发不出去返回
{"readyState":0,"status":0,"statusText":"error"}
- 在本地
html
中调用uniapp
自带的uni.webview.1.5.2.js
中只包含跳转链接 - 例如
uni.navigateTo
等跳转链接 - 在支付流程上也会有变动,后台调用前端无法拿到支付后的回调。目前只能一直调取后台查询支付状态的一个接口.....很恶心的
网友评论