最近接私活的時候,而後要接入支付寶支付和微信支付,注意這個是獨立 h5 支付,非公衆號那種,總結一下遇到的問題。前端
接下來的工做就是去查閱文檔了,稍微整理了一下以下圖ios
支付寶這邊比較簡單axios
// 支付寶支付
async aliPay (id) {
const params = {
id,
orderNo: _uuid().replace(/-/g, ''),
paymentType: '1'
}
try {
let res = await axios({
method: 'post',
data: params,
headers: {
common: {
Authorization: window.localStorage.getItem('token')
}
}
})
if(res.data) {
const d = res.data
const div = document.createElement('div')
div.innerHTML = d //此處form就是後臺返回接收到的數據
document.body.appendChild(div)
document.forms[0].submit()
window.localStorage.setItem('orderNo', params.orderNo)
}
} catch (error) {
console.log(error)
}
},
// 查詢支付結果
queryPayResult () {
const orderNo = window.localStorage.getItem('orderNo')
if (orderNo) this.show = true
let count = 0
const socket = async (orderNo) => {
const res = await getPayResult({ orderNo })
if(res.data || res.data === 0){
if (res.data === 1) {
this.result = '支付成功'
}
if (res.data === 0) {
this.result ='未支付'
}
setTimeout(() => {
this.show = false
}, 1000)
window.localStorage.removeItem('orderNo')
} else {
count += 1
count < 5 && socket(orderNo)
}
}
//若是有就說明是從支付寶那邊過來的,沒有就表明第一次進來;由於查詢成功後我會或者未支付我會把這個清掉
orderNo && socket(orderNo)
},
mounted () {
this.queryPayResult()
}
複製代碼
核心代碼api
if(res.data) {
const d = res.data
var reg = /<script[^>]*?>[\s\S]*?<\/script>/i;
var len1 = d.indexOf(">")
var len2 = d.lastIndexOf("<")
var str3 = d.substring(len1+1,len2)
eval(str3)
window.localStorage.setItem('orderNo', params.orderNo)
}
複製代碼
只有你弄清楚整個流程,前端這塊仍是挺簡單的😸安全