您好,登錄后才能下訂單哦!
前言
支付寶推出一個沙箱環境,能夠很好的模擬支付寶支付,并且還提供了demo,但demo是一個普通web項目,怎么整合到Spring Boot項目呢,其實很簡單
簡單配置請參照支付寶沙箱支付開發文檔
一、支付部分
AlipayConfig配置:我使用的是頁面跳轉同步通知,返回路徑return_url為公網訪問地址,也可以使用localhost,且不能攜帶參數,APPID、商戶私鑰、支付寶公鑰和支付寶網關換為自己的。
public class AlipayConfig{ // 應用ID,您的APPID,收款賬號既是您的APPID對應支付寶賬號 public static String app_id = "2016091600523365"; // 商戶私鑰,您的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://工程公網訪問地址"; // 頁面跳轉同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數,必須外網可以正常訪問 public static String return_url = "http://工程公網訪問地址"; // 簽名方式 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(); } } } } }
支付請求接口:
@RequestMapping("ali") public void ali(HttpServletResponse response, HttpServletRequest request) throws IOException, AlipayApiException { ordersService.ali(response,request); }
ServiceImpl層:
@Override public void ali(HttpServletResponse response, HttpServletRequest request) throws AlipayApiException, IOException{ //設置編碼 response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); //獲得初始化的AlipayClient 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 order_number = new String(訂單號); //付款金額,從前臺獲取,必填 String total_amount = new String(付款金額); //訂單名稱,必填 String subject = new String("支付寶沙箱支付(名稱隨便起)"); aliPayRequest.setBizContent("{\"out_trade_no\":\"" + order_number + "\"," + "\"total_amount\":\"" + total_amount + "\"," + "\"subject\":\"" + subject + "\"," + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}"); //請求 String result = alipayClient.pageExecute(aliPayRequest).getBody(); //輸出 out.println(result);//以下寫自己的訂單代碼 }
其中:
PrintWriter out = response.getWriter(); out.println(result);
是將支付寶請求輸出在頁面上。
二、退款
ServiceImpl層:
//退款 @Override public void refund(HttpServletResponse response,HttpSession session) throws IOException, AlipayApiException { response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); //獲得初始化的AlipayClient AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type); //設置請求參數 AlipayTradeRefundRequest alipayRequest = new AlipayTradeRefundRequest(); //商戶訂單號,必填 String out_trade_no = new String(訂單號); //需要退款的金額,該金額不能大于訂單金額,必填 String refund_amount = new String(退款金額); //標識一次退款請求,同一筆交易多次退款需要保證唯一,如需部分退款,則此參數必傳 String out_request_no = new String(UUID.randomUUID().toString()); alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\"," + "\"refund_amount\":\""+ refund_amount +"\"," + "\"out_request_no\":\""+ out_request_no +"\"}"); //請求 String result = alipayClient.execute(alipayRequest).getBody(); //輸出 out.println(result);以下寫自己的訂單退款代碼 }
退款可按照訂單號或者支付寶訂單號進行退款,博主采用的是按訂單號退款。
結語
以上是沙箱接入的簡要步驟,希望能幫到其他人。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。