天天看點

Core3.1 微信v3 JSAPI支付

  “小魏呀,這個微信支付還要多久?”,“快了快了老闆,就等着最後一步了。。。”,“搞快點哈,就等着上線呢”,“.........” 

因公司業務需要微信支付,以前沒弄過花了幾天時間寫了一個微信v3的JSAPI支付,我滴個乖乖,差點今年小孩的奶粉就沒了,還好弄出來了。在這裡面各種踩坑,在這裡記錄一下,我開發的是微信公衆号上面拉起微信支付。背景是Core3.1的接口,前端用的是Vue。後面是部署在CentOS上面的

 你必須要有一個非個人性質的公衆号(服務号),還有一個微信商戶号。服務号申請位址,微信商戶号申請位址,具體的根據網站申請中按人家要求來就行了。個人建議把申請下來的公衆号裡面的appid 、appsecret,微信商戶平台,商戶号等資料儲存在資料庫中。

登入公衆号在左手邊菜單:公衆号設定---->功能設定------>JS安全域名----->設定。在裡面可以連寫5個域名下載下傳檔案上傳到伺服器上面 域名要經過ICP備案。可以通路到上面說的那個檔案就可以了。

core3.1Api 釋出後你放根目錄是通路不到的,在configure裡面加上通路靜态檔案 app.UseStaticFiles();然後在根目錄建一個檔案夾wwwroot 吧域名驗證需要的txt檔案丢進去  我是這麼搞點。暫時沒有想到其他騷操作

這裡有人要問了 這個設定了是幹嘛的,以前我也不知道是幹嘛的哈哈,總有一顆好奇的心想知道。現在想想個人了解這個JS安全域名就是一個驗證的機制吧。這裡設定了加上微信服務号也有一個類似的,後面就可以調用JSAPI支付了。

Core3.1 微信v3 JSAPI支付

這個緊接着在JS安全域名後面  跟着設定一下就可以了 我部署在CentOS上面 看一下檔案夾目錄,還有一個檔案夾裡面是是p12檔案 後面會提到

Core3.1 微信v3 JSAPI支付

這個網頁授權意思就是後面要擷取到使用者的OpenId的時候 要通過這個域名授權。我們就能擷取到使用者的資訊,授權登入這些配置。後面圖上還有一個HHhhjZj的檔案這個是商戶号上面設定的。

在微信商戶平台上面選擇産品中心---->開發配置,這裡面設定支付目錄。我這裡是設定的一個 ,我也不是申請商戶号的人 也沒有這個權限 。上面的界面跟上面兩步驟差不多就不啰嗦了。

Core3.1 微信v3 JSAPI支付

這裡不再重複 參考微信開發文檔  微信JSAPI開發接入前準備 https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_1.shtml 慢慢來哦,設定秘鑰 我倒是自己想着(阿貓阿狗888666)AMAG66688這種來拼夠32位就可以了哈哈。

前面這些弄好了隻算搭好了環境 下面開始撸碼。微信支付的邏輯就是,擷取使用者的OpenId------->統一下單擷取payId-------------->拉起微信支付------------>支付回調接口寫邏輯 

下面官網的

Core3.1 微信v3 JSAPI支付

參考文檔  JSAPI支付

這裡我單獨封裝了一個微信支付的請求類。因為調用v3支付必須要符合APIV3接口規則 ,具體的在微信官方文檔看

Sign簽名官方給的隻能在IIS上面運作 那是通過直接用私鑰簽名,我在CentOS上面不行

Core3.1 微信v3 JSAPI支付

 以前在IIS上面也是 但是這個隻要配置IIS應用程式池,把加載使用者配置檔案改成true就可以了。CentOS上面就不行了。後來我還是把p12檔案放在了跟驗證域名的那個位置,通過讀取檔案擷取私鑰。這個問題搞了我2天。。。不能跨平台。或者是我配置不對,後面有時間在研究。

在使用者統一下單的時候需要使用者的OpenId就是這個使用者在這個公衆号下面的一個身份号碼,關沒關注擷取了就不會變,是以我就是沒調用統一下單之前就擷取了儲存在資料庫中。統一下單的時候直接調用就可以了 參考連接配接  公衆号網頁授權

上面GetOpenId就是下面Api這裡調用的

下面的接口位址就是/api/WeChatPay/SaveHospPatirntOpenId

我這裡的邏輯就是擷取過了直接資料庫擷取沒有擷取過的微信授權擷取。這裡 如果使用者沒有授權實際上這個接口要通路2次的 第一次code沒有值,第二次微信授權後通過redirect_uri帶着code回來就擷取到了使用者的OpenId資訊。

 上面統一下單擷取到prepay_id在構造JSAPI拉取微信支付的參數傳回到前端。簽名上面有代碼就不貼了。

 解密類

支付傳回的我儲存了日志分享出來看看

Core3.1 微信v3 JSAPI支付

之前一直沒有調通,花了一天時間 找到了原因 統一下單的時候 裡面不是謠傳一個參數  支付金錢 total  我攜程decmial類型了指派 ,注意這裡一定要int  機關是分數。支付提示 (系統繁忙、請稍後再試),一般這個錯誤就是參數不對,類型一定要跟官網對應起來

紙上得來終覺淺,看着微信官網的,v3支付隻有 爪哇 跟 派森 的sdk 。NET的還是自己來。裡面的各種術語花裡花哨的感覺 哈哈。可能是現在的我心裡太多的浮躁了,還是要慢慢靜下心來看。本文出處魏楊楊部落格園

原文連結我自己貼上https://www.cnblogs.com/w5942066/p/14313946.html

做個内心陽光的人。不憂傷,不心急。堅強、向上,靠近陽光,成為更好的自己,你不需要别人過多的稱贊,因為你自己知道自己有多好。内心的強大,永遠勝過外表的浮華。

版權聲明:本文為<b> 魏楊楊 </b>原創文章并釋出到部落格園, 除了【萬仟網】外, 其他平台歡迎轉載,但必須在文章頁面明顯位置寫明作者和出處,非常感謝。技術交流QQ群 99210270

Core3.1 微信v3 JSAPI支付

微信掃一掃關注我公衆号

一起學習,一起進步

Core3.1 微信v3 JSAPI支付

繼續閱讀