1.準備步驟
相關工具
1、內網穿透工具 natapp (用戶支付結果通知異步回調)
2、AlipayDevelopmentAssistant 阿里支付簽名工具
3、支付寶沙箱客戶端 支付寶支付測試使用
支付寶-當面付
阿里支付寶DEMO下載:https://docs.open.alipay.com/399/106844/,支付寶支持豐富的支付方式,這裏我們選擇使用當面付-支持二維碼&條形碼的支付,這是目前的主流。
1、獲取二維碼
2、掃碼支付
3、等待支付寶回調
4、修改訂單狀態
5、定期對賬
DEMO文檔結構目錄
-TradePayDemo - 支付寶當面付DEMO
-TradePaySDK - 支付寶SDK
-readme.txt - 文檔結構目錄說明
-當面付調用流程說明文檔(java).docx
相關鏈接配置
SDK-maven依賴地址說明:https://docs.open.alipay.com/54/103419/
當面付產品功能說明:https://docs.open.alipay.com/194
當面付DEMO:https://docs.open.alipay.com/54/104506/
沙箱環境說明:https://docs.open.alipay.com/200/105311/
支付加密簽名工具:https://docs.open.alipay.com/291/
https://opendocs.alipay.com/open/291/105971#LDsXr
簽名參數說明:https://docs.open.alipay.com/204/105465
支付寶主動異步通知說明:https://docs.open.alipay.com/270/105902/
2.程序編寫
pom文件配置
<!-- 支付寶支付 -->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>3.3.87.ALL</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>
<!-- 支付寶依賴結束 -->
靜態資源訪問虛擬路徑
@Configuration
public class ResourceConfig implements WebMvcConfigurer {
@Autowired
private QrCodeProp qrCodeProp;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
String os = System.getProperty("os.name");
if(os.toLowerCase().startsWith("win")){ //windows系統
/** QrCode圖片存儲路徑 */
registry.addResourceHandler(qrCodeProp.getHttpBasePath()
+"/**")
.addResourceLocations("file:" + qrCodeProp.getStorePath() + "/");
}else{ //linux或者mac
}
}
}
源碼地址
https://gitee.com/h455952294_admin/alipay_payment.git
測試用例
//url地址
http://localhost:8088/order/qrCode
// 請求參數
{
"payAmount":299.9,
"itemList":[
{
"productSn":"2920129293",
"productName":"華爲P40 Pro手機殼",
"productPrice":299.9,
"productQuantity":9
}
]
}
// 響應數據
http://localhost:8088/order/paySuccess
http://localhost:8088/order/queryPayStatus?orderSn=15855452823901363487