最近在做uniapp APP得項(xiàng)目声畏,遇到了很多問題這個問題是目前卡的最久得一個問題卡了3天激率。
首先铁追,支付寶支付分為 前端發(fā)起支付季蚂,和后臺發(fā)起支付兩種。
- 前端發(fā)起支付我之前做微信小程序得時候做過琅束,首先向后臺發(fā)送訂單數(shù)據(jù)扭屁,生成訂單。然后由前端調(diào)起手機(jī)微信支付進(jìn)行付款涩禀。
- 而這次我們采用得是后臺發(fā)起支付得方式料滥,得到的返回值是一個
<form></form>
的表單html
結(jié)構(gòu) 自帶<script> 里面寫的是監(jiān)聽提交按鈕事件</script>
標(biāo)簽。 - 簡單來說 由后臺發(fā)起的支付會返回給我們一個
html
結(jié)構(gòu)艾船,這個夠在uniapp中使用web-view
展示葵腹。但是安卓端不兼容高每。 - 最終解決辦法是由后臺把之前
POST
請求改成了GET
請求。 - 直接把鏈接復(fù)制到了
<web-view :src></web-view >
標(biāo)簽的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": "項(xiàng)目域名https://&*^*&%&^%"
})
- 總結(jié):在
uniapp
中調(diào)用本地靜態(tài)html
URL
傳參 不適合傳入復(fù)雜結(jié)構(gòu) 簡單結(jié)構(gòu)可以践宴,否則 安卓端不兼容鲸匿。H5
端兼容。 - 在本地
html
頁面加載ajax
請求時存在跨域問題導(dǎo)致請求發(fā)不出去返回
{"readyState":0,"status":0,"statusText":"error"}
- 在本地
html
中調(diào)用uniapp
自帶的uni.webview.1.5.2.js
中只包含跳轉(zhuǎn)鏈接 - 例如
uni.navigateTo
等跳轉(zhuǎn)鏈接 - 在支付流程上也會有變動阻肩,后臺調(diào)用前端無法拿到支付后的回調(diào)带欢。目前只能一直調(diào)取后臺查詢支付狀態(tài)的一個接口.....很惡心的