1. 程式人生 > >Spring MVC 使用支付寶接口完成在線支付的示例代碼

Spring MVC 使用支付寶接口完成在線支付的示例代碼

ole lur 在線支付 本地 pro 之間 temp 完成 在外

本篇文章主要介紹了Spring MVC 使用支付寶接口完成在線支付的示例代碼,具有一定的參考價值,有興趣的可以了解一下

項目中要使用到在線支付功能 目前常用的在線支付手段主要是 支付寶 和微信。

這裏我使用的是支付寶支付,支付寶有個好處就是他有一個沙箱模式 即使沒有申請渠道的資格也可以體驗一把在線支付。

第一步:完善沙箱信息

進入支付寶的開發者中心 就可以看到有個沙箱環境

使用支付寶提供的秘鑰生成工具 生成對應的秘鑰 一定要保存好。支付寶推薦使用RSA2(SHA256)秘鑰

把自己的公鑰填上去就可以了。

第二步閱讀在線支付開發文檔

裏面需要的配置信息 對應的使用沙箱環境的信息

第三步

環境搭建

下載服務端SDK 並添加到項目中

這裏我使用的maven項目 導入本地jar包采用了下列方式

<dependency>

<groupId>com.alipay</groupId>

<artifactId>alipay</artifactId>

<version>1.1.1</version>

<scope>system</scope>

<!--本地jar的路徑,相對或者絕對都可以-->

<systemPath>${project.basedir}/lib/alipay-sdk-java20170307171631.jar</systemPath>

</dependency>

<dependency>

<groupId>com.alipay1</groupId>

<artifactId>commons</artifactId>

<version>1.1.1</version>

<scope>system</scope>

<!--本地jar的路徑,相對或者絕對都可以-->

<systemPath>${project.basedir}/lib/commons-logging-1.1.1.jar</systemPath>

</dependency>

1、 調用接口 啟動支付頁面 具體參數說明 請查看文檔

2、 //轉到支付頁面

3、 //初始化客戶端 只需要實例化一次(線程安全)

4、 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do"

5、 , "2016080300153333", GlobalConstant.APP_PRIVATE_KEY, "json", "UTF-8", GlobalConstant.ALIPAY_PUBLIC_KEY, "RSA2");

6、 AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//創建API對應的request

7、 //在公共參數中設置回跳和通知地址

8、 alipayRequest.setReturnUrl("回跳地址");

9、 //異步回調一定是要在外網 不然支付寶服務器無法訪問

10、 alipayRequest.setNotifyUrl("異步回調地址");

11、 alipayRequest.setBizContent("{" +

12、 " \"out_trade_no\":\"" + orderId + "\"," +

13、 " \"total_amount\":\"" + fetchParcel.getMoney() + "\"," +

14、 " \"subject\":\"代領快遞\"," +

15、 " \"seller_id\":\"2088102169684935\"," +

16、 " \"product_code\":\"QUICK_WAP_PAY\"" +

17、 " }");//填充業務參數

18、 String form = alipayClient.pageExecute(alipayRequest).getBody(); //調用SDK生成表單

19、 httpResponse.setContentType("text/html;charset=utf-8");

20、 httpResponse.getWriter().write(form);//直接將完整的表單html輸出到頁面

21、 httpResponse.getWriter().flush();

1、接收同步回調展示 結果 此結果只是展示,具體狀態必須依賴支付寶的異步通知

2、接收異步回調更改訂單狀態 支付寶的異步回調 是服務器之間的通訊並不會產生頁面 並且 設置的回調地址

一定是要在外網上的 不然支付寶的服務器是無法訪問該地址的

對回調得到的信息要使用支付寶的api進行校驗

//將異步通知中收到的所有參數都存放到map中

Map<String, String> paramsMap =new HashMap<>();

paramsMap.put("tarde_no",trade_no);

paramsMap.put("trade_status",trade_status);

paramsMap.put("total_amount",total_amount);

paramsMap.put("out_trade_no",out_trade_no);

boolean signVerified = AlipaySignature.rsaCheckV1(paramsMap, GlobalConstant.ALIPAY_PUBLIC_KEY, "UTF-8", "RSA2"); //調用SDK驗證簽名

if (signVerified) {

//驗簽成功後,按照支付結果異步通知中的描述,對支付結果中的業務內容進行二次校驗,校驗成功後在response中返回success並繼續商戶自身業務處理,校驗失敗返回failure

String out_trade_no1 = paramsMap.get("out_trade_no");

String trade_status1 = paramsMap.get("trade_status");

logger.info(out_trade_no1+":"+trade_status1);

return "success";

} else {

//驗簽失敗則記錄異常日誌,並在response中返回failure.

return "failure";

}

4進行支付體驗

這裏選擇支付寶賬號登錄 賬號 密碼 在沙箱環境中可以找到 (買家賬號)建議下載支付寶沙箱錢包 可以模擬在線支付調用錢包客戶端的效果

以上就是本文的全部內容,希望對大家的學習有所幫助

Spring MVC 使用支付寶接口完成在線支付的示例代碼