【微信小程序】微信支付
簡介
微信的支付方式有以下幾種,不同的支付方式適用于不同的支付場景,而本文講的就是 小程序支付 方式:
說到支付功能就要涉及到金錢交易,必定是有比較嚴格的規范及流程,如要求小程序必須具備企業性質,必須擁有微信支付商戶平臺的賬號;
PS:申請微信支付商戶平臺需要一個微信小程序或公眾號等,建議按照以下流程進行操作
準備工作
· 申請成功可拿到 AppID(小程序 id)和 AppSecret(小程序密鑰);
· 申請類型為企業性質,否則無法接入微信支付;
通過認證的小程序才能接入微信支付和綁定商戶平臺;
· 需要第一步申請的 AppID;
· 申請成功可拿到 MchID(商戶 id)和 MchKey(商戶密鑰);
微信和商戶都認證成功后,在微信后臺微信支付菜單中進行關聯;
在微信后臺微信支付菜單中進行接入;
小程序支付流程
簡要支付流程如下:
PS:難點在第 2、3、5 步,一定要仔細查看相關接口文檔,否則容易出錯,接下來我們按照以上 6 個步驟詳細講解在微信小程序中的支付流程
支付前的操作
因為嚴格意義上來說這不屬于支付流程中的步驟,但支付過程中需要用到用戶唯一標識 openid,所以建議在用戶進入小程序時就進行這一步的操作:
建議把openid存入數據庫,方便隨時獲取,下面的步驟也會用到
PS:開發者需要自行維護用戶登錄狀態(用戶登錄狀態的維護本文不做展開,請自行查閱相關資料)
小程序端:用戶向商戶服務器發起支付請求
這步沒什么好說的,當用戶點擊支付按鈕時,給我們自己的后端接口發起一個請求,攜帶必要的參數(如:body, total_fee 等),接口地址需要自行編寫,如我的接口地址為 https://api/prepay
/*** 向后端發送打賞請求*/gotoPay: function (event) {// console.log(event.currentTarget.dataset.index);const totalFee = this.data.nums[event.currentTarget.dataset.index];this.setData({totalFee: totalFee,toSelectNumShow: false,paidShow: true});wx.request({url: 'https://api/prepay',method: 'post',data: {body: '打賞', // 商品描述total_fee: totalFee // 總金額,單位為元},header: {'content-type': 'application/json'},success(res) {console.log(res);if (res.data.code === 1) {try {console.log(res.data.data);// 得到接口返回的數據,向微信發起支付const result = wx.requestPayment({// 5個必傳參數timeStamp: res.data.data.timeStamp,nonceStr: res.data.data.nonceStr,package: res.data.data.packages,signType: res.data.data.signType,paySign: res.data.data.paySign});console.log('支付結果:', result);} catch (err) {console.log(err);wx.showToast({title: '支付失敗'});}} else {console.log('支付請求失敗!');console.log(res);}},fail(msg) {console.log(msg);}});},PS:可能會有小伙伴產生疑惑,為什么不直接通過 wx.requestPayment()
在小程序端發起請求而要先請求商戶自己的服務器呢?原因很簡單,安全性問題,wx.requestPayment() 需要 2 個重要參數 paySign 和 package,需要 appid, secret, openid, mch_key 等私密數據,這些私密的數據不應該在前端暴露出來,而是放在自己的服務器中更安全,所以需要向自己的服務器發起這個請求拿到這些參數,下一步才能真正發起支付。
參考文獻
微信支付之小程序支付
微信支付之H5支付
總結
以上是生活随笔為你收集整理的【微信小程序】微信支付的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三维点云语义分割基础知识
- 下一篇: 心电图心跳信号多分类预测(一)