成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Vue3問題:如何實現微信掃碼支付?全面!

開發 前端
點擊微信掃碼支付按鈕,會彈出掃碼支付彈框,在彈框中部顯示一個微信支付的二維碼。用戶打開微信掃碼并支付成功后,就會關閉彈框,彈出成功消息提示,并刷新表格數據,更新對應訂單的支付狀態,置灰微信掃碼支付按鈕。

本文主要內容分三部分,第一部分是需求分析,第二部分是實現步驟,第三部分是問題詳解。

如果您只需要解決問題,請閱讀第一、二部分即可。

如果您有更多時間,進一步學習問題相關知識點,請閱讀至第三部分。

1、需求分析

點擊微信掃碼支付按鈕,會彈出掃碼支付彈框,在彈框中部顯示一個微信支付的二維碼。

用戶打開微信掃碼并支付成功后,就會關閉彈框,彈出成功消息提示,并刷新表格數據,更新對應訂單的支付狀態,置灰微信掃碼支付按鈕。

用戶點擊彈框內的取消按鈕,就會隱藏彈框。

2、實現步驟

(1)準備工作(了解即可)

登錄微信公眾平臺,獲取微信公眾號開發者ID(AppID)。

登錄微信支付商戶平臺,申請Api證書、設置APIv3秘鑰。當然,這里有一個前提,必須要有商家的營業證書,否則無法認證和申請。

獲取微信支付商戶號、獲取商戶證書序列號。

(2)編寫后端接口(了解即可)

在pom.xml文件中,引入微信支付相關依賴。

在application.xml文件中,配置上面在準備工作中獲取的微信支付相關配置信息。

新建一個微信支付配置類WechatConfig,映射配置文件中配置的參數。

編寫一個微信支付下單請求參數WxOrderDTO類。具體參數詳情見官方文檔:https://pay.weixin.qq.com/docs/merchant/apis/native-payment/direct-jsons/native-prepay.html.

編寫一個微信返回通知結果集WxResultDTO類。具體參數詳情見官方文檔:https://pay.weixin.qq.com/docs/merchant/apis/native-payment/payment-notice.html。

編寫一個微信支付工具類WxPayUtils,在其中定義一個獲取HttpClient實例的公共方法getClient,通過商戶號和序列號,以及加載秘鑰文件和證書文件,生成對應的HttpClient實例。

編寫調用微信支付接口的WxPayService業務類,在其中編寫一個Native支付的統一下單方法CreateNativeOrder。

編寫一個微信支付的WxPayController類,在其中編寫一個微信支付下單的方法nativeWxPay。值得注意的是,請求參數WxOrderDTO中的notify_url參數對應的地址,就是微信支付返回通知的回調地址。

編寫一個帶條件分頁查詢訂單列表的接口,用來查詢對應訂單的支付狀態。

這個比較簡單,按個人業務需求編寫,此處不再贅述。

編寫一個微信支付返回通知回調方法wxCallBack,在這里對微信返回的通知信息進行了簽名驗證、參數解密,判斷通知數據中交易狀態為成功后,修改訂單狀態。

擴展:申請微信退款功能實現詳細,基本類同微信支付下單流程,此處不再贅述。退款參數詳情見官方文檔:https://pay.weixin.qq.com/docs/merchant/apis/native-payment/create.html。

(3)編寫前端

在真實項目中,前端對于微信掃碼支付所做的操作并不多。

無非就是調用后端微信掃碼支付下單的接口,請求成功后在頁面渲染微信支付二維碼。

當用戶完成支付操作后,利用定時器輪循查詢訂單支付狀態,從而判斷當用戶支付成功時,刷新數據并重新渲染頁面。

詳細實現步驟如下:

編寫掃碼支付二維碼彈框。

<template>
<!-- 掃碼支付二維碼彈框 -->
<div>
<div style="text-align: center;">
<!-- 使用了Qrcode庫來生成二維碼,此處不再贅述 -->
<qrcode
:text="form.urlCode"
:width="300"
:logo="require('@/assets/img/logo.png')"
/>
</div>
<div>
<el-button @click="close">取消</el-button>
</div>
</div>
</template>

在API文件中定義2個接口。

// 查詢訂單支付狀態
export const getDetApi = ({ params }: PropsData): any => {
return fetch({ url: `/pay/${params.id}`, method: 'get', params })
}

// 微信掃碼支付下單接口
export const nativeWxPayApi = ({ params }: PropsData): any => {
return fetch({ url: `/pay/nativeWxPay/${params.id}`, method: 'get' })
}
編寫微信掃碼支付方法,在點擊微信掃碼支付按鈕時調用。
// 微信掃碼支付
async function getNativeWxPayOrder() {
if (props.info) {
// 當前訂單的id
const id = (props.info as any).id

try {
// 調用微信掃碼支付下單接口
const res = await nativeWxPayApi({
params: {
id: id
}
})

if (res) {
// 渲染后端返回的微信支付二維碼
form['urlCode'] = res.result.code_url
// 刷新訂單狀態
await getOrderStatus()
}
} catch (e) {
console.log(e)
}
}

編寫查詢訂單支付狀態方法,在調用微信掃碼支付接口完成后調用。

// 獲取訂單支付狀態
const getOrderStatus = async() => {
const id = (props.info as any).id
const params = {
params: {
id: id
}
}

// 使用定時器循環請求查詢訂單支付狀態接口,直到返回支付成功為止
const myStateInterval = setInterval(async () => {
// 調用查詢訂單支付狀態接口
const res = await getDetApi(params)

if (res.status === 200) {
// 如果訂單支付狀態顯示為已支付
if (res.result['status'] === 1) {
// 清除定時器
clearInterval(myStateInterval)
// 消息通知
emit('success', '成功')
// 關閉彈框,刷新數據
close()
}
}
}, 3000)
}

3、問題詳解

(1)后端接口代碼編寫細節

后端微信支付下單和申請退款接口詳細,請參考視頻教程:https://www.bilibili.com/video/BV1eb4y187Qy?p=18&spm_id_from=pageDriver&vd_source=2571ea6a1d02797fe7590325786e2e84。

一切版權歸原作者所有,如有侵權請聯系刪除。

(2)用到文檔地址整理

  • 微信支付API文檔:https://pay.weixin.qq.com/docs/merchant/apis/native-payment/direct-jsons/native-prepay.html。
  • 微信商戶平臺:https://pay.weixin.qq.com/。
  • 微信公眾平臺:https://mp.weixin.qq.com。
責任編輯:姜華 來源: 今日頭條
相關推薦

2023-11-20 08:29:33

Vue微信掃碼授權登錄

2021-11-30 07:31:42

微信支付寶付款

2024-02-01 09:10:04

頁面引導工具Vue3

2020-03-08 15:39:41

微信掃碼登陸二維碼

2020-01-03 16:19:24

微信微信支付移動應用

2021-01-08 14:19:32

移動支付數字人民幣微信支付

2024-01-03 08:20:40

2024-01-23 09:15:33

Vue3組件拖拽組件內容編輯

2020-04-29 09:22:10

微信更新內測

2021-12-02 05:50:35

Vue3 插件Vue應用

2024-01-08 08:50:19

Vue3級聯菜單數據懶加載

2017-01-04 18:09:23

Android微信支付快速實現

2023-11-28 09:03:59

Vue.jsJavaScript

2024-02-27 08:27:18

元素拖拽Vue3拼圖驗證

2021-01-19 19:20:58

微信支付寶移動應用

2022-06-10 06:55:21

JustAuthSpring

2021-10-12 15:35:36

微信支付寶銀聯云閃付

2022-03-10 11:04:04

Vue3Canvas前端

2018-11-23 14:00:43

AI支付寶刷手

2024-03-19 08:35:30

Vue3添加水印維護版權標識
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成人免费 | 草久视频 | 91精品国产91久久久久久吃药 | 国产视频一区二区 | 久久久久久国产精品 | 久久国产精品一区二区 | 先锋av资源在线 | 日韩精品av一区二区三区 | 三级国产三级在线 | 久久精品99久久 | 成人国产精品一级毛片视频毛片 | 一区二区三区视频在线 | 国产视频久久久久 | 91精品国产综合久久精品 | 日韩色图视频 | 亚洲免费成人 | 亚洲三区在线观看 | 亚洲成人精品影院 | 久久99精品久久久水蜜桃 | 99久久久国产精品免费消防器 | 日日夜夜天天 | 精品久久成人 | 在线观看免费国产 | 国产在线观看一区二区三区 | 在线一级片 | 天天综合网永久 | 国产成都精品91一区二区三 | 伊人操| 精品久久久久久久久久久久久久 | 日韩国产一区二区三区 | 91成人在线视频 | 日韩欧美精品在线 | 国产一区在线免费 | 中文字幕成人av | 国产1区在线 | 五月综合色啪 | 亚洲欧美国产精品久久 | 日韩三片| av小说在线| 99久久婷婷国产综合精品 | 亚洲精品国产综合区久久久久久久 |