springboot--支付寶條碼支付的實現
這幾天一直在調支付寶的條碼支付的介面,遇到不少問題,想跟大家分享一下。我還是建議大家在官網下載的介面先調通了,再放入自己的專案中。我的小夥伴做的是微信條碼支付,不得不說,支付寶的介面文件比微信的詳細多了,此外支付寶還附帶一個樣例demo,非常便於新手開發與學習
所謂的條碼支付,就是商家掃使用者的付款二維碼進行結賬,使用者只需展示付款二維碼即可。而掃碼支付是使用者掃商家的二維碼,然後輸入金額支付,在我的生活周圍目前掃碼支付比較多,條碼支付在一些大型超市,飲料販賣機會出現。
具體的開發步驟,一些需要修改的引數我就不敘述了,這些在支付寶的介面文件中都有提到,而且很詳細。不過在這之前,你需要有商戶私鑰(private_key),商戶公鑰(public_key),以及pid,appid等。下面主要是敘述我遇到的問題,以及解決方法:
(1) 支付寶的介面mian裡把函式test_trade_pay註釋掉了,沒有注意到這點,所以控制檯一直輸出一些列印資訊,很鬱悶;
解決方法是:在main函式裡把需要用到的函式去註釋;
(2) 輸入我的付款碼之後,執行程式出現連線超時:
解決方法:我一直以為是我的付款碼(authCode)輸入的速度不夠快,失效了,因為它的有效期是1分鐘,然後就多次測試,還是不行,最後懷疑可能我的網設限了,檢視是否設限,在控制檯用 ping openapi.alipaydns.com,結果是請求超時,果然是網路受限(好吧,那天教研室網不行)。解決網路問題,該問題就解決了。
(3) 接下來的是簽名加密的問題了,具體錯誤如下:
解決方法是:要弄清楚你申請時簽名演算法用的是RSA2還是RSA,我下載的支付寶接口裡預設是RSA2,但是我的應該對應的是RSA,在支付寶提供的配置檔案中修改即可。
我解決完以上問題之後,樣例demo就可以正常執行,並付款成功了,接下來就把demo放入自己的專案中。(ps:完成這一步的時候,我心裡竊喜,結果後面簡直是一盤冷水下來,透心涼啊)
根據介面文件的描述,我把按步驟把demo放入到自己的專案中,結果出現一下問題:
天真的我一直以為是alipay和maven裡面的包衝突了,但是在maven中找不到所描述的包啊,真的是一臉懵逼啊。根本一點都沒有懷疑是alipay介面內部包衝突了,在小夥伴的幫助下,發現真的是內部包衝突了,把core-2.1.jar包去掉了(ps:這個問題花費我不少時間,我還沒想明白這個問題,如果是內部衝突,為什麼在單獨除錯的時候沒有出現這個問題,知道的朋友請分享下答案哦
好吧,解決了這個問題又出現了新問題:
解決方法:
在pom.xml中加入紅框的程式碼:
到此為止,可以在專案中正常付款了。