項目中集成支付寶(掃碼付)中的[掃碼支付]業務
簡介:這里使用支付寶提供的demo,但是測試demo沒有公網的ip,所以借助於支付寶提供的沙箱環境。
1. 打開掃碼付的文檔介紹
地址:https://docs.open.alipay.com/194/105072/
可以在文檔中發現掃碼付有兩種場景,一種是本地系統借助紅外線產品機器掃描用戶的支付條碼,另一種是本地系統借助支付寶api生成收款二維碼,用戶掃碼支付后,回調本地系統的指定請求修改訂單狀態和響應處理。
2. 下載掃碼付的相關sdk-demo
地址:https://docs.open.alipay.com/194/105201/
根據不同的編程語言選擇不同的demo下載,下載后解壓后有兩個目錄,其中是支付寶服務的相關代碼,另一個項目中的代碼類似各種場景的測試類。
3. 新建一個maven工程,將提供的demo整合進去
新建一個工程,將demo中的兩個工程都整合進去,步驟如下:
3.1 添加依賴
<!--支付寶接口依賴-->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>3.0.0</version>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
<version>1.10</version>
<!--<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>-->
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
3.2 添加支付寶實體和服務資源文件
- 將下載的demo中的 TradePaySDK項目中的資源放到新項目中
- 新建資源目錄resources,將下載的demo中的TradePayDemo中的properties文件放入其中
- 將TradePayDemo工程的測試啟動類放入到新項目中
最終的新項目結構如下:
4. 使用沙箱環境
文檔地址:https://docs.open.alipay.com/200/105311/
什么是沙箱環境,可以想象成在支付寶的研發環境中調用接口,沙箱環境會提供一個商家appid(正式環境中是需要通過資格認證申請的),以及測試的沙箱支付寶登陸賬號密碼,支付密碼,等,隨后通過支付寶提供的工具生成商家的RSA公鑰和私鑰,在通過生成的公鑰生成支付寶的SHA公鑰,然后替換提供的配置文件(zfbinfo.properties)中的各種資源信息(網關地址以及key等),下面將會一步步的使用該環境。
4.1 進入到沙箱環境
在地址:https://docs.open.alipay.com/200/105311/ 中有沙箱環境的超鏈接,點擊鏈接條件到支付寶登陸頁面
掃碼登陸后,如何沒有加入到支付寶的開放平台的需要先加入到支付寶開放平台,然后在重新進入到沙箱環境。
沙箱環境應該如下圖:
4.2 替換商家的appid(唯一),open_api_domain,以及pid信息
將項目中的配置文件中的三個屬性按照下圖來替換
4.3 借助工具生成商家的公鑰和私鑰
工具地址:https://docs.open.alipay.com/291/105971
4.3.1 根據不同的操作系統選擇對應的版本下載
4.3.2 運行軟件
4.3.3 替換配置文件中的商家的公鑰和私鑰
4.4 根據生成的商家的公鑰生成對應的支付寶公鑰
4.4.1 借助商家公鑰生成支付寶公鑰
處理地址:https://openhome.alipay.com/platform/appDaily.htm?tab=info
回到沙箱環境,點擊 RSA2(SHA256)密鑰(推薦) 屬性的設置按鈕,根據剛才生成的商家公鑰來生成支付寶公鑰信息,操作如下圖:
4.4.2 替換配置文件中的支付寶公鑰信息
5. 沙箱環境下的支付寶軟件
軟件地址:https://openhome.alipay.com/platform/appDaily.htm?tab=tool
5.1 下載沙箱環境下的支付寶軟件,目前只支持安卓系統
5.2 根據支付寶提供的買家信息登陸支付寶
6. 測試場景
6.1 測試生成支付二維碼場景
6.1.1 修改二維碼圖片生成路徑
打開工程中的Main這個類,進入 [test_trade_precreate()]方法中,修改二維碼生成路徑,修改自己指定的地址即可,
未修改前:
// 需要修改為運行機器上的路徑
String filePath = String.format("/Users/sudo/Desktop/qr-%s.png",
response.getOutTradeNo());
修改后:
// 需要修改為運行機器上的路徑
String filePath = String.format("D:/qrCode/qr-%s.png",response.getOutTradeNo());
6.1.2 開啟生成二維碼功能
修改完生成二維碼圖片路徑后,發現生成二維碼圖片的功能被注釋了,現在取消注釋,開啟功能。
未修改前:
//ZxingUtils.getQRCodeImge(response.getQrCode(), 256, filePath);
修改后:
ZxingUtils.getQRCodeImge(response.getQrCode(), 256, filePath);
6.1.3 測試程序
啟動main方法,運行后發現成功的在指定目錄下生成了支付二維碼圖片
然后支付即可。