蚂蚁金服支付平台代码配置
生活随笔
收集整理的這篇文章主要介紹了
蚂蚁金服支付平台代码配置
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.添加依賴
<dependency><groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>3.7.4.ALL</version>
</dependency>
2.進行配置基本的支付信息
package com.bookstore.utils;import java.io.FileWriter; import java.io.IOException;public class AlipayConfig {// 應用ID,您的APPID,收款賬號既是您的APPID對應支付寶賬號public static String app_id = "";// 商戶私鑰,您的PKCS8格式RSA2私鑰public static String merchant_private_key = "";// 支付寶公鑰,查看地址:https://openhome.alipay.com/platform/keyManage.htm 對應APPID下的支付寶公鑰。public static String alipay_public_key = "";// 服務器異步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數,必須外網可以正常訪問public static String notify_url = "http://localhost:xxxx/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";// 頁面跳轉同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數,必須外網可以正常訪問//掃碼成功之后跳到哪個處理器方法public static String return_url = "http://localhost:xxxx/xx/xx.do";// 簽名方式public static String sign_type = "RSA2";// 字符編碼格式public static String charset = "utf-8";// 支付寶網關public static String gatewayUrl ="https://openapi.alipaydev.com/gateway.do";// 支付寶網關public static String log_path = "C:\\";//↑↑↑↑↑↑↑↑↑↑請在這里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑/*** 寫日志,方便測試(看網站需求,也可以改成把記錄存入數據庫)* @param sWord 要寫入日志里的文本內容*/public static void logResult(String sWord) {FileWriter writer = null;try {writer = new FileWriter(log_path + "alipay_log_" + System.currentTimeMillis()+".txt");writer.write(sWord);} catch (Exception e) {e.printStackTrace();} finally {if (writer != null) {try {writer.close();} catch (IOException e) {e.printStackTrace();}}}} }
3.提交的.do方法
@RequestMapping("/pay.do")public void pay(String id, String money, String name, HttpServletResponse response) throws Exception {AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);//設置請求參數AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();alipayRequest.setReturnUrl(AlipayConfig.return_url);alipayRequest.setNotifyUrl(AlipayConfig.notify_url);//商戶訂單號,商戶網站訂單系統中唯一訂單號,必填String out_trade_no = id;//付款金額,必填String total_amount = money;//訂單名稱,必填String subject = name;//商品描述,可空String body = "";alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","+ "\"total_amount\":\""+ total_amount +"\","+ "\"subject\":\""+ subject +"\","+ "\"body\":\""+ body +"\","+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");//若想給BizContent增加其他可選請求參數,以增加自定義超時時間參數timeout_express來舉例說明//alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","// + "\"total_amount\":\""+ total_amount +"\","// + "\"subject\":\""+ subject +"\","// + "\"body\":\""+ body +"\","// + "\"timeout_express\":\"10m\","// + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");//請求參數可查閱【電腦網站支付的API文檔-alipay.trade.page.pay-請求參數】章節//請求String result = alipayClient.pageExecute(alipayRequest).getBody();response.setContentType("text/html;charset=UTF-8");//輸出 response.getWriter().println(result);}4.支付成功之后,跳轉到商城首頁
@RequestMapping("/paysuccess.do")public String paysuccess(HttpServletRequest request) throws Exception {//獲取支付寶GET過來反饋信息Map<String,String> params = new HashMap<String,String>();Map<String,String[]> requestParams = request.getParameterMap();for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {String name = (String) iter.next();String[] values = (String[]) requestParams.get(name);String valueStr = "";for (int i = 0; i < values.length; i++) {valueStr = (i == values.length - 1) ? valueStr + values[i]: valueStr + values[i] + ",";}//亂碼解決,這段代碼在出現亂碼時使用valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");params.put(name, valueStr);}boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.alipay_public_key, AlipayConfig.charset, AlipayConfig.sign_type); //調用SDK驗證簽名//——請在這里編寫您的程序(以下代碼僅作參考)——if(signVerified) {//商戶訂單號String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8");//支付寶交易號String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8");//付款金額String total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8");productService.paysuccess(out_trade_no);return "redirect:/client/paysuccess.jsp";//out.println("trade_no:"+trade_no+"<br/>out_trade_no:"+out_trade_no+"<br/>total_amount:"+total_amount);}else {return "/client/fail.jsp";//out.println("驗簽失敗"); }}?
轉載于:https://www.cnblogs.com/liuna369-4369/p/10969990.html
總結
以上是生活随笔為你收集整理的蚂蚁金服支付平台代码配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS数组的数据结构
- 下一篇: Kibana 创建索引 POST 403