微信小程序-JAVA實現微信支付功能(微信支付2.0)
一.前言
本博客主要介紹JAVA后台與微信小程序(UNI-APP或者原生微信小程序)的微信支付的實現,如果是APP或者H5的開發暫時不支持,具體應用場景如下圖:
不同場景調用的微信支付接口不一致,請務必了解,如果您是開發的APP或者H5,請出門右拐(哈哈),此次介紹的微信支付是基於支付類型
為JSAPI實現的,該支付方式支持微信如上圖所說的線下場所、公眾號、小程序、PC網站、移動端網站,具體以微信支付官網為主:
https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/api.shtml,本此開發使用的是微信支付的V2版,V3版暫未嘗試(有興趣的可以自己嘗試)
二.開發前准備與要求
1.JAVA后台環境准備
①.前往https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1,下載JAVA版的SDK,該SDK,幫我們實現了許多參數的封裝,
避免我們自己拼接微信接口的參數,當然如果你有時間也可以自己拼裝,請求參數,具體拼接還是看第一幅圖上面的微信支付官網。
②.下載好之后解壓,然后打開里里面的readme.md文件,具體如下
該SDK寫了很多的工具類,我們在開發的時候直接調用官方提供的SDK就行了,然后打開POM.xml文件,
將這些SDK所需的JAR包引入到項目中,不然會報錯,如果不想使用SLFJ日志,可以將相關的代碼注釋,不影響主體功能的使用。
然后將解壓好的文件里面的java文件導入到項目中去,這里筆者就不演示了,你可以單獨創建一個package將這些java文件放進去,
然后還需要一個IpUtil工具類,為后面的開發做准備,代碼入下:
③.主業務邏輯代碼-配置類(******)
先介紹一下,下面的代碼本地JAVA后台代碼的核心代碼,很重要,請認真閱讀:
准備一個配置類,該類需要繼承SDK中的WXPayConfig類,如下,這個配置類比較重要,里面的參數會決定你微信支付接口調用的
成功與否。
下面開始介紹一下各個參數的作用,首先注釋掉的構造函數是用來加載微信支付證書,至於微信支付證書在哪里下載筆者后面會介紹,如果你只是要實現微信支付的功能是不需要證書的,
筆者這里把這里注釋掉也是一開始以為微信支付需要這個證書的,然后去微信社區里面找了很久發現微信支付並不需要;這里就隨便簡單介紹一下了,后面再提一下(不是微信支付的重點)。
參數1:AppID也就是你小程序的AppID,這里不介紹,如果這個不知道登錄微信公共平台可以查詢(不演示了,不懂百度),參數2:MchID:商戶號,如下圖所示
商戶號的注冊網址https://pay.weixin.qq.com/index.php/apply/applyment_home/guide_normal,也可以直接百度微信商戶平台,進入就可以了,進入之后走微信的注冊流程
然后注冊好了之后就可以查詢到自己的商戶號了,然后你需要去微信公眾平台如上圖的頁面將你的小程序和你的微信商戶號進行關聯,具體流程未知(不是我申請的)但是
這是微信支付的前提條件之一.將你注冊好的商戶號放到配置文件中.
參數3:微信APIKEY,在微信商戶平台中的商戶中心獲取,具體如下,之前說的證書也是在這里獲取,注意處理API秘鑰還有一個叫APIV4的秘鑰,我們開發所需要的是叫API秘鑰,
至於APIV4是干嘛的我也不知道,然后將這里的API秘鑰放到配置類中,
其他參數:照着上面的敲一遍就行了.
④.主業務邏輯代碼-參數組建
然后就是我們主要的邏輯代碼的編寫了,在寫之前還需要准備的環境有,微信商戶平台確認你的商戶號中授權了你的小程序,
接口目錄的配置,也是在微信商戶平台上配置,該目錄的配置的路徑就是我們前台小程序點擊支付發起的微信支付請求的地址(實質也就是我們發起微信支付訂單的地址),
最好精確到你的請求路徑,不要寫你的服務器路徑.
商戶平台的中心我的產品里面有一個JSAPI的產品,請將其開通,不然支付接口發出錯誤請求,也可以在產品中心
中查看我們的商戶號.
好了基本要配置的東西就這么多了,上面要配置的東西比較容易導致我們出錯的東西就是要開通JSAPI產品以及APIKEY的
配置,特別是APIKEY是最容易導致出錯的配置,筆者在這里被坑了一天.
主邏輯代碼開始:
這是邏輯代碼,上面的RequestMapping配置的地址也就是我們剛才在微信商戶平台配置的目錄地址,請確保其一致
參數拼接
具體的參數規則請參考https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1中的API列表中的統一下單,
下單成功業務邏輯處理,
使用我們上面下單成功之后的下單id再次進行微信簽名,操作如下
然后一切處理好之后我們將結果返回到前台,現在來看前台的代碼
然后就會調用我們下單接口中的回調地址,筆者這里建議大家將回調地址也配置到那個微信商戶平台那個目錄的地址
中去,回調地址,主要是用來給我們處理業務邏輯的具體代碼入下:
我們在這個map中可以拿到我們想要的東西,具體什么參數看官網:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7&index=8
這里示例一下
如果不返回就會造成下面的結果
微信支付完畢.
三.總結(*****)
我們編寫的代碼必須放到服務器中才能正確的運行,在本地是不行的(當然如果你使用的內網穿透除外,)然后筆者在弄微信支付最讓人頭疼的坑就是那個APIKEY
然后下單接口一直報簽名失敗,簽名錯誤什么的,如果你在別的參數確認無誤的情況下,還是簽名失敗,請重置你的APIKEY,好的微信支付就介紹到這里了, 如果大家有
什么不懂的,歡迎在我的博客下方留言。。。