From 89c5bb9f579fc76182a62932e402858e7755f3c4 Mon Sep 17 00:00:00 2001 From: sxu <602087911@qq.com> Date: Sun, 6 Apr 2025 16:08:19 +0800 Subject: [PATCH] alipay --- .../core/pay/controller/NotifyCotroller.java | 73 ++++++ .../core/pay/controller/PayCotroller.java | 45 ++++ .../core/pay/controller/ReturnCotroller.java | 63 +++++ .../core/pay/controller/payCotroller.java | 226 ------------------ .../pay/dto/{UPOrder.java => UpOrder.java} | 12 +- .../pay/{config => util}/AlipayConfig.java | 7 +- .../canteen/core/pay/util/AlipayUtil.java | 23 ++ 7 files changed, 210 insertions(+), 239 deletions(-) create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/NotifyCotroller.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/ReturnCotroller.java delete mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/payCotroller.java rename bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/{UPOrder.java => UpOrder.java} (65%) rename bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/{config => util}/AlipayConfig.java (96%) create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/util/AlipayUtil.java diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/NotifyCotroller.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/NotifyCotroller.java new file mode 100644 index 0000000..de556fe --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/NotifyCotroller.java @@ -0,0 +1,73 @@ +package com.bonus.canteen.core.pay.controller; + +import com.alipay.api.AlipayApiException; +import com.alipay.api.internal.util.AlipaySignature; +import com.bonus.canteen.core.pay.util.AlipayConfig; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +@Slf4j +@Api(tags = "支付异步通知") +@RestController +@RequestMapping("/alipay") +public class NotifyCotroller { + @RequestMapping("notify_url") + public void getNotify(HttpServletRequest request, HttpServletResponse response) throws AlipayApiException, IOException { + Map params = new HashMap(); + Map requestParams = request.getParameterMap(); + Iterator iter = requestParams.keySet().iterator(); + while(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 singVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, AlipayConfig.SIGNTYPE); + response.setContentType("text/html;charset=UTF-8"); + PrintWriter out = response.getWriter(); + if (singVerified) { + //商户订单号 + String out_trade_no = request.getParameter("out_trade_no"); + //商户订单号 + String total_amount = request.getParameter("total_amount"); + //支付宝交易号 + String trade_no = request.getParameter("trade_no"); + //交易状态 + String trade_status = request.getParameter("trade_status"); + if ("TRADE_FINISHED".equals(trade_status)) { + //判断该笔订单是否已经做过处理 + //如果没做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详情,判断金额是否等于 total_amount,并执行商户的业务程序 + //如果做过处理,不执行商户的业务程序 + //注意: 退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态 TRADE_FINISHED + } else if ("TRADE_SUCCESS".equals(trade_status)) { + //判断该笔订单是否已经做过处理 + //如果没做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详情,判断金额是否等于 total_amount,并执行商户的业务程序 + //如果做过处理,不执行商户的业务程序 + //注意: 付款完成后,支付宝系统发送该交易状态 TRADE_SUCCESS + } + + out.println("success"); + } else { + out.println("fail"); + //调试用,写文本函数记录程序运行情况是否正常 + //String reason = AlipaySignature.getSignCheckContentV1(params); + //log.info(reason); + } + response.getWriter().flush(); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java new file mode 100644 index 0000000..ad917b0 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java @@ -0,0 +1,45 @@ +package com.bonus.canteen.core.pay.controller; + +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayClient; +import com.alipay.api.request.AlipayTradePagePayRequest; +import com.alipay.api.response.AlipayTradePagePayResponse; +import com.bonus.canteen.core.pay.util.AlipayConfig; +import com.bonus.canteen.core.pay.dto.UpOrder; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +@Slf4j +@Api(tags = "支付接口") +@RestController +@RequestMapping("/alipay") +public class PayCotroller { + @Resource + AlipayClient alipayClient; + @Resource + AlipayTradePagePayRequest alipayRequest; + + @RequestMapping("pay") + public void pay(UpOrder order, HttpServletResponse response) throws AlipayApiException, IOException { + alipayRequest.setReturnUrl(AlipayConfig.return_url); + alipayRequest.setNotifyUrl(AlipayConfig.notify_url); + alipayRequest.setBizContent( + "{\"out_trade_no\":\""+ order.getCode() +"\"," + + "\"total_amount\":\""+ order.getPaymentAmount().toString() +"\"," + + "\"subject\":\""+ order.getOrderName() +"\"," + + "\"body\":\""+ order.getProductDesc() +"\"," + //+ "\"timeout_express\":\"10m\"," + + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}"); + AlipayTradePagePayResponse alipayResponse = alipayClient.pageExecute(alipayRequest); + log.info("alipay body = " + alipayResponse.getBody()); + log.info("alipay msg = " + alipayResponse.getMsg()); + response.setContentType("text/html;charset=UTF-8"); + response.getWriter().println(alipayResponse.getBody()); //write(alipayResponse.getBody()); + response.getWriter().flush(); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/ReturnCotroller.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/ReturnCotroller.java new file mode 100644 index 0000000..67f73e7 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/ReturnCotroller.java @@ -0,0 +1,63 @@ +package com.bonus.canteen.core.pay.controller; + +import com.alipay.api.AlipayApiException; +import com.alipay.api.internal.util.AlipaySignature; +import com.bonus.canteen.core.pay.util.AlipayConfig; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +@Slf4j +@Api(tags = "支付同步通知") +@RestController +@RequestMapping("/alipay") +public class ReturnCotroller { + @RequestMapping("return_url") + public void getNotify(HttpServletRequest request, HttpServletResponse response) throws AlipayApiException, IOException { + Map params = new HashMap(); + Map requestParams = request.getParameterMap(); + Iterator iter = requestParams.keySet().iterator(); + while(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 singVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, AlipayConfig.SIGNTYPE); + response.setContentType("text/html;charset=UTF-8"); + PrintWriter out = response.getWriter(); + if (singVerified) { + //商户订单号 + String out_trade_no = request.getParameter("out_trade_no"); + //商户订单号 + String total_amount = request.getParameter("total_amount"); + //支付宝交易号 + String trade_no = request.getParameter("trade_no"); + //交易状态 + String trade_status = request.getParameter("trade_status"); + out.println("trade_no:" + trade_no + "
out_trade_no:" + out_trade_no + + "
total_amount:" + total_amount + "
trade_status" + trade_status); + } else { + out.println("fail"); + //调试用,写文本函数记录程序运行情况是否正常 + //String reason = AlipaySignature.getSignCheckContentV1(params); + //log.info(reason); + } + response.getWriter().flush(); + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/payCotroller.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/payCotroller.java deleted file mode 100644 index 493623f..0000000 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/payCotroller.java +++ /dev/null @@ -1,226 +0,0 @@ -package com.bonus.canteen.core.pay.controller; - -import com.alipay.api.AlipayApiException; -import com.alipay.api.AlipayClient; -import com.alipay.api.DefaultAlipayClient; -import com.alipay.api.request.AlipayTradePagePayRequest; -import com.alipay.api.request.AlipayTradeRefundRequest; -import com.alipay.api.response.AlipayTradePagePayResponse; -import com.bonus.canteen.core.pay.config.AlipayConfig; -import com.bonus.canteen.core.pay.dto.AliOrderDTO; -import com.bonus.canteen.core.pay.dto.UPOrder; -import io.swagger.annotations.Api; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Map; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; - -@Slf4j -@Api(tags = "支付接口") -@RestController -@RequestMapping("/alipay") -public class payCotroller { - /** - *@description: 生成充值余额订单(支付宝充值) - * https://www.cnblogs.com/chenyuanbo/p/10523835.html - * https://www.cnblogs.com/chenyuanbo/p/10524268.html - *@author:cyb - *@date: 2019-03-11 10:12 - *@param: - *@return: net.sf.json.JSONArray - */ - @RequestMapping("topUpBalance") - public void topUpBalance(UPOrder order, HttpServletResponse response) { - //获得初始化的AlipayClient - AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, - AlipayConfig.RSA_PRIVATE_KEY, "json", AlipayConfig.CHARSET, - AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGNTYPE); - //设置请求参数 - AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); - alipayRequest.setReturnUrl(AlipayConfig.return_url); - alipayRequest.setNotifyUrl(AlipayConfig.notify_url); - - //商户订单号,商户网站订单系统中唯一订单号,必填 - String out_trade_no = new String(order.getCode()); - //付款金额,必填 - String total_amount = new String(order.getPaymentAmount().toString()); - //订单名称,必填 - String subject = new String(order.getOrderName()); - //商品描述,可空 - String body = new String(order.getProductDesc()); - 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\"}"); - - try { - AlipayTradePagePayResponse alipayResponse = alipayClient.pageExecute(alipayRequest); - log.info("alipay body = " + alipayResponse.getBody()); - log.info("alipay msg = " + alipayResponse.getMsg()); - response.setContentType("text/html;charset=UTF-8"); - response.getWriter().write(alipayResponse.getBody()); - response.getWriter().flush(); - } catch (Exception e) { - log.error("充值异常, ", e.getMessage()); - response.setContentType("text/html;charset=utf-8"); - try { - response.getWriter().write("1");// 直接将完整的表单html输出到页面 - response.getWriter().flush(); - } catch (IOException e1) { - log.error("输出异常, ", e1.getMessage()); - } - } - } - - @WebServlet("/order/confirm") - public class OrderServlet extends HttpServlet{ - @Override - protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - System.out.println("开始处理OrderServlet的服务"); - String title = "杨先生"; - String total = "6"; - String message = "如有什么建议欢迎留言评论"; - //生成订单号 - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); - String orderSn = simpleDateFormat.format(Calendar.getInstance().getTime()); - //向支付宝发送请求 - //获得初始化的AlipayClient - AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.APPID, - AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT_JSON, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, - AlipayConfig.SIGNTYPE); - //设置请求参数 - AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); - alipayRequest.setReturnUrl(AlipayConfig.return_url); - alipayRequest.setNotifyUrl(AlipayConfig.notify_url); - //商户订单号,商户网站订单系统中唯一订单号,必填 - String out_trade_no = orderSn; - //付款金额,必填 - String total_amount = total; - //订单名称,必填 - String subject = title; - //商品描述,可空 - String body = message; - 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\"}"); - AlipayTradePagePayResponse alipayResponse = null; - try { - alipayResponse=alipayClient.pageExecute(alipayRequest); - System.out.println(alipayResponse.getBody()); - System.out.println(alipayResponse.getMsg()); - } catch (AlipayApiException e) { - e.printStackTrace(); - } - response.setContentType("text/html;charset=UTF-8"); - response.getWriter().write(alipayResponse.getBody()); - } - } - - @WebServlet("/notify_url") - public class NotifyServlet extends HttpServlet{ - @Override - protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - System.out.println("接收到支付宝的异步通知请求——"); - Map parameterMap = request.getParameterMap(); - System.out.println(parameterMap); - //成功处理后返回success - response.getWriter().write("success"); - } - } - - /** - *@description:支付宝退款 - *@author:cyb - *@date: 2019-03-13 10:48 - *@param: response - *@param: aliOrderDTO - *@return: void - */ - @RequestMapping("aliRefund") - public void aliRefund(HttpServletResponse response, AliOrderDTO aliOrderDTO){ - try { - //获得初始化的AlipayClient - AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, - AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT_JSON, AlipayConfig.CHARSET, - AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGNTYPE); - //设置请求参数 - AlipayTradeRefundRequest alipayRequest = new AlipayTradeRefundRequest(); - //商户订单号,商户网站订单系统中唯一订单号 - String out_trade_no = aliOrderDTO.getCode(); - //支付宝交易号 - String trade_no =aliOrderDTO.getAliTransactionNum(); - //请二选一设置 - //需要退款的金额,该金额不能大于订单金额,必填 - String refund_amount = aliOrderDTO.getPaymentAmount().toString(); - //退款的原因说明 - String refund_reason = aliOrderDTO.getRefundCause(); - //标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传 - String out_request_no = aliOrderDTO.getRefundNum(); - alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\"," - + "\"trade_no\":\""+ trade_no +"\"," - + "\"refund_amount\":\""+ refund_amount +"\"," - + "\"refund_reason\":\""+ refund_reason +"\"," - + "\"out_request_no\":\""+ out_request_no +"\"}"); - - //请求 - String result = alipayClient.execute(alipayRequest).getBody(); - response.setContentType("text/html;charset=utf-8"); - response.getWriter().write(result); //直接将完整的表单html输出到页面 - response.getWriter().flush(); - } catch (Exception e){ - e.printStackTrace(); - String result="1"; - response.setContentType("text/html;charset=utf-8"); - try { - response.getWriter().write(result);// 直接将完整的表单html输出到页面 - response.getWriter().flush(); - } catch (IOException e1) { - e1.printStackTrace(); - } - } - } - - - /** - *@description: 异步支付的回调 - *@author:cyb - *@date: 2019-03-12 14:24 - *@param: request - *@return: void - */ -// @RequestMapping("notify_url") -// @ResponseBody -// public JSONArray notify_url(HttpServletRequest request){ -// System.out.println("异步回调"); -// return msg200(); -// } - - /** - *@description:同步的回调方法 - *@author:cyb - *@date: 2019-03-12 14:23 - *@param: request - *@return: void - */ -// @RequestMapping("return_url") -// @ResponseBody -// public JSONArray return_url(HttpServletRequest request){ -// System.out.println("同步回调"); -// return msg200(); -// } - -} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/UPOrder.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/UpOrder.java similarity index 65% rename from bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/UPOrder.java rename to bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/UpOrder.java index 06ca55e..ef841c7 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/UPOrder.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/dto/UpOrder.java @@ -4,18 +4,14 @@ import lombok.Data; import java.math.BigDecimal; @Data -public class UPOrder { - //get/set自己操作 - private String code;//商户订单号 - private String orderName;//订单名称 - private BigDecimal paymentAmount;//付款金额 +public class UpOrder { + private String code;//商户订单号, 商户网站订单系统中唯一订单号,必填 + private String orderName;//订单名称, 必填 + private BigDecimal paymentAmount;//付款金额, 必填 private String productDesc;//商品描述 private String createBy;//创建人Code private Long createTime;//创建时间(时间戳) private Integer createByType;//创建人类型 1-专家 2-企业用户 private Boolean status;//是否付款 true - 已付 false-未付 private Long payTime;//订单支付时间-支付后才存在 (时间戳) - public String getCode() { - return code; - } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/config/AlipayConfig.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/util/AlipayConfig.java similarity index 96% rename from bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/config/AlipayConfig.java rename to bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/util/AlipayConfig.java index 996d1bc..c7001b6 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/config/AlipayConfig.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/util/AlipayConfig.java @@ -1,8 +1,5 @@ -package com.bonus.canteen.core.pay.config; +package com.bonus.canteen.core.pay.util; -import lombok.Data; - -@Data public class AlipayConfig { // 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号 public static String APPID = "2016092700611035"; @@ -11,7 +8,7 @@ public class AlipayConfig { // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。 public static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz9YczyBgwO1x5j6UiML2VQRlNcLFWCmnLbpeb+GyUldy3tMxoVfNhiD9Acl/bTc1Pv/5GsRYEbHWcj70dvIg23/SGlWfp/nGRwNq73r5p7c6It8DEhIX4vIB5mN/hblAC5iAnCvGvKzVeao6c0QMjm9CES4dTsbQm+uHGikIryLejkxJi78ifQRXWGzksR1qWjnelDKF8xvYFM6EZDEIr/Wxj5Gzo8Ul72GVyFzBfTh/mh0NKAfeDnf2P7nNcWr9t4TxKux32hDHTXN2XkcQtiURmZtBxJ9+tIUOX3bhOUB5wtIWr6XnLzzZpib9fCpmDyArytFhDjV0M2ZHe4nlmQIDAQAB"; // 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问 - public static String notify_url = "http://d9tc3e.natappfree.cc/alipay/notify_url"; + public static String notify_url = "http://aa7xmz.natappfree.cc/alipay/notify_url"; // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问,//标红的域名为内网穿透工具生成的域名,没启动一次穿透工具,生成的域名都不一样,所有启动一次都需要进行修改 public static String return_url = "http://aa7xmz.natappfree.cc/alipay/return_url"; //请求网关地址 diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/util/AlipayUtil.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/util/AlipayUtil.java new file mode 100644 index 0000000..24c013d --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/util/AlipayUtil.java @@ -0,0 +1,23 @@ +package com.bonus.canteen.core.pay.util; + +import com.alipay.api.AlipayClient; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.request.AlipayTradePagePayRequest; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class AlipayUtil { + @Bean + AlipayClient alipayClient() { + return new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, + AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT_JSON, AlipayConfig.CHARSET, + AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGNTYPE); + } + + @Bean + AlipayTradePagePayRequest alipayTradePagePayRequest() { + return new AlipayTradePagePayRequest(); + } + +}