diff --git a/HMS/src/main/java/com/hqyj/seven/controller/AlipayController.java b/HMS/src/main/java/com/hqyj/seven/controller/AlipayController.java new file mode 100644 index 0000000000000000000000000000000000000000..45762b3d15e09583f9bf05a48c33f6cbe993ac49 --- /dev/null +++ b/HMS/src/main/java/com/hqyj/seven/controller/AlipayController.java @@ -0,0 +1,198 @@ +package com.hqyj.seven.controller; + +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayClient; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.request.*; +import com.hqyj.seven.utils.AlipayConfig; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +/** + * Created by IntelliJ IDEA. + * @File AlipayController.java + * @Auth liuxing + * @Date 2021/8/17 00:53 + * @Email liuxing997@foxmail.com + */ +@Controller +public class AlipayController { + + //付款 + @RequestMapping(value = "/alipay",method = RequestMethod.POST) + public void alipay(HttpServletRequest request, HttpServletResponse response) throws IOException, AlipayApiException { + PrintWriter out = response.getWriter(); + request.setCharacterEncoding("UTF-8"); + response.setContentType("text/html;charset=utf-8"); + response.setCharacterEncoding("UTF-8"); + //获得初始化的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 out_trade_no = new String(request.getParameter("WIDout_trade_no").getBytes("ISO-8859-1"),"UTF-8"); + //付款金额,必填 + String total_amount = new String(request.getParameter("WIDtotal_amount").getBytes("ISO-8859-1"),"UTF-8"); + //订单名称,必填 + String subject = new String(request.getParameter("WIDsubject").getBytes("ISO-8859-1"),"UTF-8"); + //商品描述,可空 + String body = new String(request.getParameter("WIDbody").getBytes("ISO-8859-1"),"UTF-8"); + + 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(); + + //输出 + out.println(result); + } + + //交易查询 + @RequestMapping(value = "/tradeQuery",method = RequestMethod.POST) + public void tradeQuery(HttpServletRequest request, HttpServletResponse response) throws IOException, AlipayApiException { + PrintWriter out = response.getWriter(); + request.setCharacterEncoding("UTF-8"); + response.setContentType("text/html;charset=utf-8"); + response.setCharacterEncoding("UTF-8"); + //获得初始化的AlipayClient + AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type); + + //设置请求参数 + AlipayTradeQueryRequest alipayRequest = new AlipayTradeQueryRequest(); + + //商户订单号,商户网站订单系统中唯一订单号 + String out_trade_no = new String(request.getParameter("WIDTQout_trade_no").getBytes("ISO-8859-1"),"UTF-8"); + //支付宝交易号 + String trade_no = new String(request.getParameter("WIDTQtrade_no").getBytes("ISO-8859-1"),"UTF-8"); + //请二选一设置 + + alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","+"\"trade_no\":\""+ trade_no +"\"}"); + + //请求 + String result = alipayClient.execute(alipayRequest).getBody(); + + //输出 + out.println(result); + } + + //退款 + @RequestMapping(value = "/tradeRefund",method = RequestMethod.POST) + public void tradeRefund(HttpServletRequest request, HttpServletResponse response) throws IOException, AlipayApiException { + PrintWriter out = response.getWriter(); + request.setCharacterEncoding("UTF-8"); + response.setContentType("text/html;charset=utf-8"); + response.setCharacterEncoding("UTF-8"); + //获得初始化的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(request.getParameter("WIDTRout_trade_no").getBytes("ISO-8859-1"),"UTF-8"); + //支付宝交易号 + String trade_no = new String(request.getParameter("WIDTRtrade_no").getBytes("ISO-8859-1"),"UTF-8"); + //请二选一设置 + //需要退款的金额,该金额不能大于订单金额,必填 + String refund_amount = new String(request.getParameter("WIDTRrefund_amount").getBytes("ISO-8859-1"),"UTF-8"); + //退款的原因说明 + String refund_reason = new String(request.getParameter("WIDTRrefund_reason").getBytes("ISO-8859-1"),"UTF-8"); + //标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传 + String out_request_no = new String(request.getParameter("WIDTRout_request_no").getBytes("ISO-8859-1"),"UTF-8"); + + 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(); + + //输出 + out.println(result); + } + + //退款查询 + @RequestMapping(value = "/refundQuery",method = RequestMethod.POST) + public void refundQuery(HttpServletRequest request, HttpServletResponse response) throws IOException, AlipayApiException { + PrintWriter out = response.getWriter(); + request.setCharacterEncoding("UTF-8"); + response.setContentType("text/html;charset=utf-8"); + response.setCharacterEncoding("UTF-8"); + //获得初始化的AlipayClient + AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type); + + //设置请求参数 + AlipayTradeFastpayRefundQueryRequest alipayRequest = new AlipayTradeFastpayRefundQueryRequest(); + + //商户订单号,商户网站订单系统中唯一订单号 + String out_trade_no = new String(request.getParameter("WIDRQout_trade_no").getBytes("ISO-8859-1"),"UTF-8"); + //支付宝交易号 + String trade_no = new String(request.getParameter("WIDRQtrade_no").getBytes("ISO-8859-1"),"UTF-8"); + //请二选一设置 + //请求退款接口时,传入的退款请求号,如果在退款请求时未传入,则该值为创建交易时的外部交易号,必填 + String out_request_no = new String(request.getParameter("WIDRQout_request_no").getBytes("ISO-8859-1"),"UTF-8"); + + alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\"," + +"\"trade_no\":\""+ trade_no +"\"," + +"\"out_request_no\":\""+ out_request_no +"\"}"); + + //请求 + String result = alipayClient.execute(alipayRequest).getBody(); + + //输出 + out.println(result); + } + + //交易关闭 + @RequestMapping(value = "/tradeClose",method = RequestMethod.POST) + public void tradeClose(HttpServletRequest request, HttpServletResponse response) throws IOException, AlipayApiException { + PrintWriter out = response.getWriter(); + request.setCharacterEncoding("UTF-8"); + response.setContentType("text/html;charset=utf-8"); + response.setCharacterEncoding("UTF-8"); + //获得初始化的AlipayClient + AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type); + + //设置请求参数 + AlipayTradeCloseRequest alipayRequest = new AlipayTradeCloseRequest(); + //商户订单号,商户网站订单系统中唯一订单号 + String out_trade_no = new String(request.getParameter("WIDTCout_trade_no").getBytes("ISO-8859-1"),"UTF-8"); + //支付宝交易号 + String trade_no = new String(request.getParameter("WIDTCtrade_no").getBytes("ISO-8859-1"),"UTF-8"); + //请二选一设置 + + alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\"," +"\"trade_no\":\""+ trade_no +"\"}"); + + //请求 + String result = alipayClient.execute(alipayRequest).getBody(); + + //输出 + out.println(result); + } + +}