小程序?qū)崿F(xiàn)微信支付的實(shí)現(xiàn)方法介紹及問(wèn)題解答

2023-03-02    分類: 網(wǎng)站建設(shè)

隨著小程序快速發(fā)現(xiàn),小程序的支付接口也已經(jīng)很普遍的運(yùn)用了,下面直接講小程序支付的實(shí)現(xiàn)功能(接口使用的是thinkphp代碼):

微信支付小程序代碼
小程序js代碼如下圖所示
需要注意的是,這里需要要用到md5.js文件
小程序JS代碼
然后是接口代碼如下圖所示:
Openid 是通過(guò)會(huì)員表的字段獲取到小程序的唯一標(biāo)識(shí)openid,$notifi_url是異步回調(diào)的地址,這個(gè)回調(diào)地址可以自己定義,不需要在商戶賬號(hào)那里設(shè)置。$data就是返回到小程序的JSON數(shù)據(jù).
JS代碼
接下來(lái)小程序代碼如下圖:
如果設(shè)置正確,沒會(huì)彈出微信支付的窗口,提示支付完成,并跳轉(zhuǎn)到訂單列表頁(yè)面。
提前條件是必須把小程序APPID,小程序的APPSECRET,商戶號(hào)MCHID和商戶支付密鑰KEY設(shè)置正確,缺一不可,如果商戶號(hào)已經(jīng)接入過(guò)微信支付接口了,就需要問(wèn)客戶提供商戶支付密鑰,否則可以自己重置商戶支付密鑰,注意公眾號(hào)和小程序是可以使用同一個(gè)商戶的,因?yàn)樾〕绦虻幕卣{(diào)地址可以在代碼里填寫,不需要在商戶賬號(hào)那里授權(quán)地址才能使用。
問(wèn)題解答部分:
1.調(diào)用支付JSAPI缺少參數(shù):total_fee。
代碼參數(shù)
t小程序的Console里出現(xiàn)這個(gè)提示,很多人以為是金額有問(wèn)題,其實(shí)是pkg出錯(cuò)了,其中pkg='prepay_id=' + res_pay.data.pay_arr.prepay_id; 如果用 console.log(pkg),會(huì)出現(xiàn)prepay_id=undefined,即res_pay.data.pay_arr.prepay_id為空,那么哪些參數(shù)會(huì)導(dǎo)致這種情況呢?最典型的是openid獲取不正確,因?yàn)樾〕绦蛑Ц稌r(shí)需要獲得用戶的openid。如下圖所示:
還有一種可能是訂單號(hào)的問(wèn)題,如果訂單在該商戶已經(jīng)支付過(guò)了,就不能再使用,這個(gè)問(wèn)題出現(xiàn)的概率比較低。
支付驗(yàn)證簽名失敗這個(gè)基本是由商戶支付密鑰key出錯(cuò)引起的,不要以為接口的配置文件填寫正確的key就可以用了,還要知道小程序里也要把商戶的key傳遞到接口里,如下圖所示:
var paySign = md5.hexMD5('appId=' + appId + '&nonceStr=' + nonceStr + '&package=' + pkg + '&signType=MD5&timeStamp=' + timeStamp + "&key=" + app.configData.wxpay_secret).toUpperCase();
其中的app.configData.wxpay_secret就是與接口里的商戶支付密鑰KEY是相同的,要填寫正確,否則出現(xiàn)簽名失敗的問(wèn)題。

本文標(biāo)題:小程序?qū)崿F(xiàn)微信支付的實(shí)現(xiàn)方法介紹及問(wèn)題解答
本文網(wǎng)址:http://www.muchs.cn/news46/240846.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google網(wǎng)站內(nèi)鏈、云服務(wù)器、建站公司、定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)