關於微信公眾號網頁的支付問題
阿新 • • 發佈:2020-07-16
微信公眾號網頁支付功能是基於微信JS-SDK的網頁開發工具包,要完成支付的開發就需要
進行一定的微信配置,拉起微信的支付功能。以下主要完成公眾號網頁支付的前端部分。
1.需要進行網頁授權。通過網頁授權獲取code值,再把code值傳給後端。而後端需要通過code值獲取access_token。具體文件為https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
2.需要在微信公眾平臺的公眾號設定中的“功能設定”裡填寫“JS介面安全域名”,即為支付網頁所在的域名。
3.要引入微信提供的js檔案。列入http://res.wx.qq.com/open/js/jweixin-1.6.0.js或者http://res2.wx.qq.com/open/js/jweixin-1.6.0.js 。具體看開發文件
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html
4.需要進行微信的config介面注入許可權驗證配置具體為如下幾點。
wx.config({ debug: true, // 開啟除錯模式,呼叫的所有api的返回值會在客戶端alert出來,若要檢視傳入的引數,可以在pc端開啟,引數資訊會通過log打出,僅在pc端時才會列印。appId: '', // 必填,公眾號的唯一標識 timestamp: , // 必填,生成簽名的時間戳 nonceStr: '', // 必填,生成簽名的隨機串 signature: '',// 必填,簽名 jsApiList: [] // 必填,需要使用的JS介面列表 });
以上的appId,timestamp,nonceStr,signature,jsApiList除了jsApiList需要自己來配置之外,其他的需要需要後端提供一個介面獲取。
5.進行微信支付功能拉起的配置,如下
wx.chooseWXPay({ timestamp: 0, // 支付簽名時間戳,注意微信jssdk中的所有使用timestamp欄位均為小寫。但最新版的支付後臺生成簽名使用的timeStamp欄位名需大寫其中的S字元nonceStr: '', // 支付簽名隨機串,不長於 32 位 package: '', // 統一支付介面返回的prepay_id引數值,提交格式如:prepay_id=\*\*\*) signType: '', // 簽名方式,預設為'SHA1',使用新版支付需傳入'MD5' paySign: '', // 支付簽名 success: function (res) { // 支付成功後的回撥函式 },
});
注意進行支付功能的配置的時候不要用微信小程式開發工具來進行測試。很大的可能性會出現簽名無效。所以最好是用你的手機來進行微信的支付測試操作。