国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Springboot添加支付接口

瀏覽:6日期:2023-03-18 08:44:37
1. 支付寶支付接口(沙箱實現)1.1 支付寶沙箱賬號獲取

官網

此處作者已經申請了一個沙箱賬號,申請過程就不再贅述

如下圖:

Springboot添加支付接口

此處可以自行設置賬戶金額

1.2 下載客戶端(目前好像只支持Android)

Springboot添加支付接口

下載完成后根據官方提供的賬號以及密碼登錄手機端支付寶賬號 如圖(商家賬號):

Springboot添加支付接口

1.3 代碼配置

工具類AlipayConfig

public class AlipayConfig {//↓↓↓↓↓↓↓↓↓↓請在這里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ // 應用ID,您的APPID,收款賬號既是您的APPID對應支付寶賬號 public static String app_id = ''; // 商戶私鑰,您的PKCS8格式RSA2私鑰 public static String merchant_private_key = 'MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC/HOeQNyultzkc5cUnqxBSTIpYt6BTgJoCHKiLQDYgPhjvSX16r08Qw82qYdQgWEs4hHNy2COGA5ksw1eW+zyY2alcTEvRMo4sqx7Ytdm250f67wZQkuPRFSJN7ywHkTipjGKNcS9z9U0Dp18jRXHow4/A9OF8jOau7pWyG0Tc87WHf5u0/G16uMpRtGRzzyNvim7cHAnyFPNrAJ+5DRBdhBg+PjV7EcpYg5LRaMqaO8qDSis+AUU4e7QOELqMgr7yxBNScQ6KksnWnztcFxz6M9T66dAZJ0dWpiB8qatM6sT/MeHTAXeYLhIbnUaxM9vGJR3AJHbHmvNa9o0ToT0LAgMBAAECggEBAIk1a1szAPc9EJgaru3H9zPfGASR8V2CGxAhGzC+rR2A9830aU5HxvA2Y9ZL3kxKl9a/4VM2smpo8vQcWypevibPPrSxYk2Tilevk7nq9aBHdHpIWbRHgaB/F930NRxJuvCfhbIe7P7Hwr84zyk3loySuwbByZHuZ0B4sqjowwwN/wbshl5m/5i4ej6AUp1LVEbxUFpNHNjIZejWVJ0Liq69l8o+1HsFIaGW1Vcrf+fmq20moZzFOLi4EmGfBp/na8JDmo3bE3X+ccAJ375OYictfZVKKYI/UIC/D+7y4XuZatLq3V3lql5ukMnAUJwTJeEapSigkJHDOX38xcSA7iECgYEA5qvIl7PGl8CwDOgTe8LoT8toTUmhAVDFwSF+ROCZD8u9qQeGG7SSCovoTQcVDuzVA3bW8d4Guvb7ZTpnUZZyWHD2rOqxh66wqHGiVTJRApNTS7XHXt3FERNgM7Y8lSoYHdarsZ7QZaJDGGkcwuGvJM0klwyuqs6LQq5DRsz9qp8CgYEA1BkiCjD5FUE/i48MFh+qYcOSiqsm7Hrj/4zuHj0QODonuUZPH0V6b3p4SIWHeBsjmSxBsqoLh2qFOzWAUeBVU3+muPHp3uglumtjZ5wE0nHCt2+0ZH+QKSk5mm8j+09xfTJ185FMusx0N9RQ4l6Rpzb7DSLQFelT4M7gvTRjAhUCgYAtUPQwcV4DdBRiBLnHJ4xSGMjd3igmRQMEpRrUVzdathEFgvfiu3+xWLkDYO/PJdHXQ2KI07CIzHqo8WdYzPCb1V1wrQ7BdB06ilB04lSt59mGVyjax0Cu0RqmLhgKyeFBA2ppk6SnQtBhnEzNMF8jILYegpxR7A/JwshuwVjYSwKBgQCTxfMGgLp6iZxZgs/b9jICrX1DKh4Tc0e5PBqHbOoJEtOsbYUg94pncz+s34PUNaxmwwP/FCS2M4wiBZOi+Bba9zxU7Q+R49KtgLagcH6XlPUiUyyvPIVXeEaPB9Jc/SvIG8k8a0a3e02ZvE6G1hETQj2GGZv0ENiSpRQKBgC8qOk7TMndVDi3vlgGky3BmxSpycwGnI0tcBZnzAyzcLPH3RL3nLvUoZ1w550be7mPDt30/WkCMKV8uKRnNVSrp1LSbT0Z6oJxsaHaCxv3C2UFzlqKWsTtiKNKhYEhjsMYj6l2nRg2CC0WIAA6MPP3xaezSWO1la39Slam0w3l'; // 支付寶公鑰,查看地址:https://openhome.alipay.com/platform/keyManage.htm 對應APPID下的支付寶公鑰。 public static String alipay_public_key = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvxznkDcrpbc5HOXFJ6sQUkyKWLegU4CaAhyoi0A2ID4Y70l9eq9PEMPNqmHUIFhLOIRzctgjhgOZLMNXlvs8mNmpXb4pu3BwJ8hTzawCfuQ0QXYQYPj41exHKWIOS0WjKmjvKg0orPgFFOHu0DhC6jIK+8sQTUnEOipLJ1p87XBcc+jPU+unQGSdHVqYgfKmrTOrE/zHh0wF3mC4SG51GsTPbxiUdwCR2x5rzWvaNE6E9CwIDAQAB'; // 服務器異步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數,必須外網可以正常訪問 public static String notify_url = 'http://localhost:8080/alipay/alipayNotifyNotice.action'; // 頁面跳轉同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數,必須外網可以正常訪問 public static String return_url = 'http://localhost:8080/alipay/alipayReturnNotice.action'; // 簽名方式 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();} }} }}

其中的參數獲取如下: app_id

Springboot添加支付接口

商戶私鑰,以及支付寶公鑰獲取方法參考官方文檔:密鑰生成

頁面跳轉便是支付以后自動跳轉的界面

接下來解釋編寫下單頁面:

/** * * @Title: AlipayController.java * @Package com.sihai.controller * @Description: 前往支付寶第三方網關進行支付 * Copyright: Copyright (c) 2017 * Company:FURUIBOKE.SCIENCE.AND.TECHNOLOGY */ @RequestMapping(value = '/goAlipay', produces = 'text/html; charset=UTF-8') @ResponseBody public String goAlipay(String orderId, HttpServletRequest request, HttpServletRequest response) throws Exception { order = (Order) request.getSession().getAttribute('order'); orderId='FinchII';//獲得初始化的AlipayClientAlipayClient 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 = orderId;//付款金額,必填BigDecimal total_amount = order.getTotalPrice();//訂單名稱,必填int subject = order.getOrderId();//商品描述,可空String body = '用戶訂購商品個數:' + order.getLineItems().size();// 該筆訂單允許的最晚付款時間,逾期將關閉交易。取值范圍:1m~15d。m-分鐘,h-小時,d-天,1c-當天(1c-當天的情況下,無論交易何時創建,都在0點關閉)。 該參數數值不接受小數點, 如 1.5h,可轉換為 90m。String timeout_express = '1c';alipayRequest.setBizContent('{'out_trade_no':''+ out_trade_no +'','+ ''total_amount':''+ total_amount +'','+ ''subject':''+ subject +'','+ ''body':''+ body +'','+ ''timeout_express':''+ timeout_express +'','+ ''product_code':'FAST_INSTANT_TRADE_PAY'}');//請求String result = alipayClient.pageExecute(alipayRequest).getBody();return result; } @RequestMapping(value = '/alipayReturnNotice') public ModelAndView alipayReturnNotice(HttpServletRequest request, HttpServletRequest response) 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驗證簽名ModelAndView mv = new ModelAndView('alipaySuccess');//——請在這里編寫您的程序(以下代碼僅作參考)——if(signVerified) { //商戶訂單號 Order order= (Order) request.getSession().getAttribute('order'); BigDecimal out_trade_no = order.getTotalPrice(); //支付寶交易號 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'); // 修改叮當狀態,改為 支付成功,已付款; 同時新增支付流水 /* Orders order = orderService.getOrderById(out_trade_no); Product product = productService.getProductById(order.getProductId()); log.info('********************** 支付成功(支付寶同步通知) **********************'); log.info('* 訂單號: {}', out_trade_no); log.info('* 支付寶交易號: {}', trade_no); log.info('* 實付金額: {}', total_amount); log.info('* 購買產品: {}', product.getName()); log.info('***************************************************************');*/ mv.addObject('out_trade_no', out_trade_no); mv.addObject('trade_no', trade_no); mv.addObject('total_amount', total_amount); /* mv.addObject('productName', product.getName());*/}else { /* log.info('支付, 驗簽失敗...');*/}return mv; } /** * * @Title: AlipayController.java * @Package com.sihai.controller * @Description: 支付寶異步 通知頁面 * Copyright: Copyright (c) 2017 * Company:FURUIBOKE.SCIENCE.AND.TECHNOLOGY * * @author sihai * @date 2017年8月23日 下午8:51:13 * @version V1.0 */ @RequestMapping(value = '/alipayNotifyNotice') @ResponseBody public String alipayNotifyNotice(HttpServletRequest request, HttpServletRequest response) throws Exception {//獲取支付寶POST過來反饋信息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驗證簽名//——請在這里編寫您的程序(以下代碼僅作參考)——/* 實際驗證過程建議商戶務必添加以下校驗:1、需要驗證該通知數據中的out_trade_no是否為商戶系統中創建的訂單號,2、判斷total_amount是否確實為該訂單的實際金額(即商戶訂單創建時的金額),3、校驗通知中的seller_id(或者seller_email) 是否為out_trade_no這筆單據的對應的操作方(有的時候,一個商戶可能有多個seller_id/seller_email)4、驗證app_id是否為該商戶本身。*/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 trade_status = new String(request.getParameter('trade_status').getBytes('ISO-8859-1'),'UTF-8'); //付款金額 String total_amount = new String(request.getParameter('total_amount').getBytes('ISO-8859-1'),'UTF-8'); if(trade_status.equals('TRADE_FINISHED')){//判斷該筆訂單是否在商戶網站中已經做過處理//如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,并執行商戶的業務程序//如果有做過處理,不執行商戶的業務程序//注意: 尚自習的訂單沒有退款功能, 這個條件判斷是進不來的, 所以此處不必寫代碼//退款日期超過可退款期限后(如三個月可退款),支付寶系統發送該交易狀態通知 }else if (trade_status.equals('TRADE_SUCCESS')){//判斷該筆訂單是否在商戶網站中已經做過處理//如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,并執行商戶的業務程序//如果有做過處理,不執行商戶的業務程序//注意://付款完成后,支付寶系統發送該交易狀態通知// 修改叮當狀態,改為 支付成功,已付款; 同時新增支付流水 /* orderService.updateOrderStatus(out_trade_no, trade_no, total_amount);Orders order = orderService.getOrderById(out_trade_no);Product product = productService.getProductById(order.getProductId());log.info('********************** 支付成功(支付寶異步通知) **********************');log.info('* 訂單號: {}', out_trade_no);log.info('* 支付寶交易號: {}', trade_no);log.info('* 實付金額: {}', total_amount);log.info('* 購買產品: {}', product.getName());log.info('***************************************************************');*/ } /* log.info('支付成功...');*/}else {//驗證失敗 /* log.info('支付, 驗簽失敗...');*/}return 'success'; }

基本就是根據客服下單的信息進行后端數據的獲取。

以上就是springboot添加支付接口的詳細內容,更多關于springboot 加支付接口的資料請關注好吧啦網其它相關文章!

標簽: Spring
相關文章:
主站蜘蛛池模板: 欧美午夜免费毛片a级 | 久久91亚洲精品久久91综合 | 中文字幕成人网 | 曰韩三级| 久久精品国产一区 | 黄色毛片播放 | 九九九九九九精品免费 | 一级毛片免费不卡 | 91成年人免费视频 | 亚洲在线视频免费观看 | 毛片视频在线免费观看 | 毛片网站视频 | 亚洲无线一二三区2021 | 欧美一区二区视频在线观看 | 久久精品一区二区三区日韩 | 免费看一级欧美毛片视频 | 亚洲国产成人久久午夜 | 亚洲成a人片在线观 | 日韩精品另类天天更新影院 | 日韩精品一区二区三区中文字幕 | 韩国日本一级片 | 日韩欧美综合在线二区三区 | 在线观看自拍视频 | 国产精品久久久久影院色老大 | 毛片女| 成人在线不卡视频 | 日韩欧美精品一区二区 | 日本三片在在线播放 | 草草国产成人免费视频 | 91热国产| 毛片免费全部播放一级 | 日韩精品特黄毛片免费看 | 国产成版人视频网站免费下 | 特级一级毛片视频免费观看 | 亚洲一级特黄特黄的大片 | 国产一及片| 亚洲精品久一区 | 欧美一级毛片免费看视频 | 久久精品国产精品亚洲精品 | 国产视频自拍一区 | 欧美aaa视频|