本篇文章為大家展示了使用Spring MVC如何調(diào)用支付寶接口完成在線支付,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站制作、網(wǎng)站設計、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務武都,十年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:028-86922220第一步:完善沙箱信息
進入支付寶的開發(fā)者中心 就可以看到有個沙箱環(huán)境
使用支付寶提供的秘鑰生成工具 生成對應的秘鑰 一定要保存好。支付寶推薦使用RSA2(SHA256)秘鑰
把自己的公鑰填上去就可以了。
第二步 閱讀在線支付開發(fā)文檔
里面需要的配置信息 對應的使用沙箱環(huán)境的信息
第三步 環(huán)境搭建
下載服務端SDK 并添加到項目中
這里我使用的maven項目 導入本地jar包采用了下列方式
com.alipay alipay 1.1.1 system ${project.basedir}/lib/alipay-sdk-java20170307171631.jar com.alipay1 commons 1.1.1 system ${project.basedir}/lib/commons-logging-1.1.1.jar
1、調(diào)用接口 啟動支付頁面 具體參數(shù)說明 請查看文檔
//轉(zhuǎn)到支付頁面 //初始化客戶端 只需要實例化一次(線程安全) AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do" , "2016080300153333", GlobalConstant.APP_PRIVATE_KEY, "json", "UTF-8", GlobalConstant.ALIPAY_PUBLIC_KEY, "RSA2"); AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();//創(chuàng)建API對應的request //在公共參數(shù)中設置回跳和通知地址 alipayRequest.setReturnUrl("回跳地址"); //異步回調(diào)一定是要在外網(wǎng) 不然支付寶服務器無法訪問 alipayRequest.setNotifyUrl("異步回調(diào)地址"); alipayRequest.setBizContent("{" + " \"out_trade_no\":\"" + orderId + "\"," + " \"total_amount\":\"" + fetchParcel.getMoney() + "\"," + " \"subject\":\"代領快遞\"," + " \"seller_id\":\"2088102169684935\"," + " \"product_code\":\"QUICK_WAP_PAY\"" + " }");//填充業(yè)務參數(shù) String form = alipayClient.pageExecute(alipayRequest).getBody(); //調(diào)用SDK生成表單 httpResponse.setContentType("text/html;charset=utf-8"); httpResponse.getWriter().write(form);//直接將完整的表單html輸出到頁面 httpResponse.getWriter().flush();
1、接收同步回調(diào)展示 結(jié)果 此結(jié)果只是展示,具體狀態(tài)必須依賴支付寶的異步通知
2、接收異步回調(diào)更改訂單狀態(tài) 支付寶的異步回調(diào) 是服務器之間的通訊并不會產(chǎn)生頁面 并且 設置的回調(diào)地址
一定是要在外網(wǎng)上的 不然支付寶的服務器是無法訪問該地址的
對回調(diào)得到的信息要使用支付寶的api進行校驗
//將異步通知中收到的所有參數(shù)都存放到map中 MapparamsMap =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"); //調(diào)用SDK驗證簽名 if (signVerified) { //驗簽成功后,按照支付結(jié)果異步通知中的描述,對支付結(jié)果中的業(yè)務內(nèi)容進行二次校驗,校驗成功后在response中返回success并繼續(xù)商戶自身業(yè)務處理,校驗失敗返回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步 進行支付體驗
這里選擇支付寶賬號登錄 賬號 密碼 在沙箱環(huán)境中可以找到 (買家賬號)建議下載支付寶沙箱錢包 可以模擬在線支付調(diào)用錢包客戶端的效果
上述內(nèi)容就是使用Spring MVC如何調(diào)用支付寶接口完成在線支付,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。