From fa3325891993d1aa5c31a095238f5f6cdd9b3cca Mon Sep 17 00:00:00 2001
From: liyuxin <1579178744@qq.com>
Date: Sun, 1 Sep 2024 22:20:43 +0800
Subject: [PATCH] =?UTF-8?q?9.1=20=E6=9D=8E=E9=9B=A8=E6=AC=A3=E6=B5=8B?=
=?UTF-8?q?=E8=AF=95=E8=B4=AD=E4=B9=B0=E8=AE=B0=E5=BD=95=E6=8E=A5=E5=8F=A3?=
=?UTF-8?q?=2022:19?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
cloud-market2-common/pom.xml | 17 ++++
.../src/main/java/com/muyu/data/AliPay.java | 11 +++
cloud-market2-server/pom.xml | 14 +++
.../{server => }/MarketApplication.java | 2 +-
.../market/server/config/MyAliPayConfig.java | 36 +++++++
.../server/controller/AliPayController.java | 98 +++++++++++++++++++
.../server/controller/RecordController.java | 1 +
...ot.autoconfigure.AutoConfiguration.imports | 2 +-
.../src/main/resources/bootstrap.yml | 8 +-
9 files changed, 186 insertions(+), 3 deletions(-)
create mode 100644 cloud-market2-common/src/main/java/com/muyu/data/AliPay.java
rename cloud-market2-server/src/main/java/com/muyu/market/{server => }/MarketApplication.java (93%)
create mode 100644 cloud-market2-server/src/main/java/com/muyu/market/server/config/MyAliPayConfig.java
create mode 100644 cloud-market2-server/src/main/java/com/muyu/market/server/controller/AliPayController.java
diff --git a/cloud-market2-common/pom.xml b/cloud-market2-common/pom.xml
index e471363..112ae4c 100644
--- a/cloud-market2-common/pom.xml
+++ b/cloud-market2-common/pom.xml
@@ -17,10 +17,27 @@
17
UTF-8
+
+
+
+
+
+ com.alipay.sdk
+ alipay-easysdk
+ 2.2.0
+
+
+
+ com.alipay.sdk
+ alipay-sdk-java
+ 4.22.113.ALL
+
+
com.muyu
cloud-common-core
+
diff --git a/cloud-market2-common/src/main/java/com/muyu/data/AliPay.java b/cloud-market2-common/src/main/java/com/muyu/data/AliPay.java
new file mode 100644
index 0000000..297abca
--- /dev/null
+++ b/cloud-market2-common/src/main/java/com/muyu/data/AliPay.java
@@ -0,0 +1,11 @@
+package com.muyu.data;
+
+import lombok.Data;
+
+@Data
+public class AliPay {
+ private String traceNo;
+ private String totalAmount;
+ private String subject;
+ private String alipayTraceNo;
+}
diff --git a/cloud-market2-server/pom.xml b/cloud-market2-server/pom.xml
index 8f0d667..817d1c8 100644
--- a/cloud-market2-server/pom.xml
+++ b/cloud-market2-server/pom.xml
@@ -19,6 +19,20 @@
+
+
+
+ com.alipay.sdk
+ alipay-easysdk
+ 2.2.0
+
+
+
+ com.alipay.sdk
+ alipay-sdk-java
+ 4.22.113.ALL
+
+
commons-beanutils
diff --git a/cloud-market2-server/src/main/java/com/muyu/market/server/MarketApplication.java b/cloud-market2-server/src/main/java/com/muyu/market/MarketApplication.java
similarity index 93%
rename from cloud-market2-server/src/main/java/com/muyu/market/server/MarketApplication.java
rename to cloud-market2-server/src/main/java/com/muyu/market/MarketApplication.java
index 8c6a5b2..4f30c63 100644
--- a/cloud-market2-server/src/main/java/com/muyu/market/server/MarketApplication.java
+++ b/cloud-market2-server/src/main/java/com/muyu/market/MarketApplication.java
@@ -1,4 +1,4 @@
-package com.muyu.market.server;
+package com.muyu.market;
import com.muyu.common.security.annotation.EnableCustomConfig;
import com.muyu.common.security.annotation.EnableMyFeignClients;
diff --git a/cloud-market2-server/src/main/java/com/muyu/market/server/config/MyAliPayConfig.java b/cloud-market2-server/src/main/java/com/muyu/market/server/config/MyAliPayConfig.java
new file mode 100644
index 0000000..0c18bc4
--- /dev/null
+++ b/cloud-market2-server/src/main/java/com/muyu/market/server/config/MyAliPayConfig.java
@@ -0,0 +1,36 @@
+package com.muyu.market.server.config;
+
+import com.alipay.easysdk.factory.Factory;
+import com.alipay.easysdk.kernel.Config;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+@Data
+@Component
+@ConfigurationProperties(prefix = "alipay")
+public class MyAliPayConfig {
+ private String appId;
+ private String appPrivateKey;
+ private String alipayPublicKey;
+ private String notifyUrl;
+
+ @PostConstruct
+ public void init() {
+ // 设置参数(全局只需设置一次)
+ Config config = new Config();
+ config.protocol = "https";
+ config.gatewayHost = "https://openapi-sandbox.dl.alipaydev.com/gateway.do";
+ config.signType = "RSA2";
+ config.appId = this.appId;
+ config.merchantPrivateKey = this.appPrivateKey;
+ config.alipayPublicKey = this.alipayPublicKey;
+ config.notifyUrl = this.notifyUrl;
+ Factory.setOptions(config);
+ System.out.println("=======支付宝SDK初始化成功=======");
+ }
+
+}
diff --git a/cloud-market2-server/src/main/java/com/muyu/market/server/controller/AliPayController.java b/cloud-market2-server/src/main/java/com/muyu/market/server/controller/AliPayController.java
new file mode 100644
index 0000000..1e7b67b
--- /dev/null
+++ b/cloud-market2-server/src/main/java/com/muyu/market/server/controller/AliPayController.java
@@ -0,0 +1,98 @@
+package com.muyu.market.server.controller;
+
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.request.AlipayTradePagePayRequest;
+
+
+import com.muyu.market.server.config.MyAliPayConfig;
+import com.muyu.data.AliPay;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+@RestController
+@RequestMapping("/alipay")
+public class AliPayController {
+ //-支付宝网关地址
+ private static final String GATEWAY_URL = "https://openapi-sandbox.dl.alipaydev.com/gateway.do";
+ private static final String FORMAT_JSON = "JSON";
+ private static final String CHARSET_UTF8 = "UTF-8";
+ private static final String SIGN_TYPE_RSA2 = "RSA2";
+
+// 差一个回调 我写在教你还是怎么样 有代码吗 没有 我现在给你操作一边 以后你自己启动就行了 媳妇 好
+ @Resource
+ private MyAliPayConfig myAliPayConfig;
+
+ @GetMapping("/pay")
+ public void pay(AliPay aliPay, HttpServletResponse httpResponse) throws Exception{
+ AlipayClient alipayClient = new DefaultAlipayClient(GATEWAY_URL, myAliPayConfig.getAppId(),
+ myAliPayConfig.getAppPrivateKey(), FORMAT_JSON, CHARSET_UTF8, myAliPayConfig.getAlipayPublicKey(), SIGN_TYPE_RSA2);
+ AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
+ request.setNotifyUrl(myAliPayConfig.getNotifyUrl());
+ //-商品的内容可以从系统中传递过来,目前这里是手写的
+ aliPay.setTraceNo(UUID.randomUUID().toString().replaceAll("-",""));
+ aliPay.setTotalAmount("100");
+ aliPay.setSubject("笔记本华硕");
+ //=====
+ request.setBizContent("{\"out_trade_no\":\"" + aliPay.getTraceNo() + "\","
+ + "\"total_amount\":\"" + aliPay.getTotalAmount() + "\","
+ + "\"subject\":\"" + aliPay.getSubject() + "\","
+ + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
+ String form = "";
+ try {
+ form = alipayClient.pageExecute(request).getBody(); // 调用SDK生成表单
+ } catch (AlipayApiException e) {
+ e.printStackTrace();
+ }
+ httpResponse.setContentType("text/html;charset=" + CHARSET_UTF8);
+ httpResponse.getWriter().write(form);// 直接将完整的表单html输出到页面
+ httpResponse.getWriter().flush();
+ httpResponse.getWriter().close();
+ }
+
+
+ @PostMapping("/notify") // 注意这里必须是POST接口
+ public String payNotify(HttpServletRequest request) throws Exception {
+ if (request.getParameter("trade_status").equals("TRADE_SUCCESS")) {
+ System.out.println("=========支付宝异步回调========");
+
+ Map params = new HashMap<>();
+ Map requestParams = request.getParameterMap();
+ for (String name : requestParams.keySet()) {
+ params.put(name, request.getParameter(name));
+ // System.out.println(name + " = " + request.getParameter(name));
+ }
+
+ String tradeNo = params.get("out_trade_no");
+ String gmtPayment = params.get("gmt_payment");
+ String alipayTradeNo = params.get("trade_no");
+ // (不需要)支付宝验签
+ //if (Factory.Payment.Common().verifyNotify(params)) {
+ // 验签通过
+ System.out.println("交易名称: " + params.get("subject"));
+ System.out.println("交易状态: " + params.get("trade_status"));
+ System.out.println("支付宝交易凭证号: " + params.get("trade_no"));
+ System.out.println("商户订单号: " + params.get("out_trade_no"));
+ System.out.println("交易金额: " + params.get("total_amount"));
+ System.out.println("买家在支付宝唯一id: " + params.get("buyer_id"));
+ System.out.println("买家付款时间: " + params.get("gmt_payment"));
+ System.out.println("买家付款金额: " + params.get("buyer_pay_amount"));
+
+ // 更新订单未已支付
+// ordersMapper.updateState(tradeNo, "已支付", gmtPayment, alipayTradeNo);
+ //}
+ }
+ return "success";
+ }
+}
diff --git a/cloud-market2-server/src/main/java/com/muyu/market/server/controller/RecordController.java b/cloud-market2-server/src/main/java/com/muyu/market/server/controller/RecordController.java
index 82d2041..9d5cac0 100644
--- a/cloud-market2-server/src/main/java/com/muyu/market/server/controller/RecordController.java
+++ b/cloud-market2-server/src/main/java/com/muyu/market/server/controller/RecordController.java
@@ -49,4 +49,5 @@ public class RecordController {
recodeService.save( Record.SaveRecodeList( recodeListReq ));
return Result.success(null,"操作成功");
}
+
}
diff --git a/cloud-market2-server/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-market2-server/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 9be35bd..a38f554 100644
--- a/cloud-market2-server/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/cloud-market2-server/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1,2 +1,2 @@
-com.muyu.market.server.MarketApplication
+com.muyu.market.MarketApplication
com.muyu.Main
diff --git a/cloud-market2-server/src/main/resources/bootstrap.yml b/cloud-market2-server/src/main/resources/bootstrap.yml
index cf87e4c..50e1004 100644
--- a/cloud-market2-server/src/main/resources/bootstrap.yml
+++ b/cloud-market2-server/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
# Tomcat
server:
- port: 6666
+ port: 10001
# nacos线上地址
nacos:
@@ -54,3 +54,9 @@ spring:
logging:
level:
com.muyu.system.mapper: DEBUG
+
+alipay:
+ appId: 9021000140631838
+ appPrivateKey: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCWxZholdxU/C9Vh+4hjD4yWH5MUn3ZK7zkFKB09KY1Kz5k6t0fhcdMRbTaJulyQVL21wneb83f+5hhAzk9+j6RLrvIbE1YZyvt9uoUIpljMkEFyVL2L97/m/Bc+D+PMXMor0DxWMgdkGvmm/1Phjaoxr+HZn6WI1ZFXjKNdIUMNs8H5oLXkBpfTVDS8GLXfDxrUT2gx9g2AH8NJMLlWObHwG3ZPQenRg5szhjLHxuuNgcfJXyoW0agSnRqzn8QeYyq5H0XVElrtF+JbBsnvuUgJn/+h/oVoKeFekEYjfqogzx/1oROereXdEk3OxmzrlW0+EUYBEMViv7EGi0z8/jLAgMBAAECggEAYDm+OsmidK76+silZ83dCD7IZKelYEx04tBzVBGsXnS5/qiS9gJonzpB4ZVCGsSsUZQO3WNX7uLhbtEi4HZtJjXAbXsJpik6tUaIQM+QO+of67SA+VS2K0b4Ei3ySs6Ro96uQRqbpZq98tGNywpqqi8moCD/G410CxPCidta6t64jgMigJr1llhzUDNa6KnEZTTof0D9E4HPYm+zQelRa3xDSYojw3VGUr+Ar0gopsyYLUlUgJJLTA4nzKfL7CP0d2+9qrP7OvcpNexe9/PsXTh2rJPKqttYJjXTEzi4+a6GfpX/XF8E9mCAg1QyIl+wZtKhhJDdlwvFf58cddvgoQKBgQDU8znRH+/d253tFPhlqJcUpaNFPzv7r1R3WWt9e5QsHHy60r6CnDpHeu2Q+0xYfeqEonUstM8qCkNqFx68MghYp79SKSEXrPhELdV25GNvF1XjrNB8BNBgd+NO1FiSJjiwXHmZ9f+Sw967lVABZhCvykkKEORN/UVLEvxo+ppGMQKBgQC1QHfiQpmhmQ0mnok+s9VQtkdWl5SvYn0Urpghe31hjnUa30pGEPIlYhpJWpyN1kL77HHr9+NRDfR1pN1TDHf+P3Ru2Kue5C70vLqIWhVJxs6RKVAWAgnrfnBJsM4TVAR93uWHv8Livdj+wf3D/ZLb8FVeOa76pYeu4okAm8ojuwKBgA5AYOQwAPuWERGmz6DuEX5eP3kI7FjBuSNrppf1R0tUdLyEEh/nmLbj8TY8uzVI6AMMZE8joqGroitddL8fkhNs1o8HFaHh/5OAhcK5MjZjF2pvTFygbdmm7F2ANJVDXZPf/HtjTUFjPmrLaVlOnVtGbHDyBHV7t8F4edAExYJhAoGAUUKT/OarBh4eHUBae7gYXNU76oCO8oqPVWRpZCl/Luu1aNTO8dbLGSOAcX6kTZrP8S4ybP539XDyNoQxjfg7G8vLIZ8WYmge/S5X2qW4gZkWJ1KESzmixOes4/zWhyfV07DI6zF36DwBO0YxxVq8Ksr3GwV1g34O9MMvdQxjdd0CgYBu00EaXBQaxANpO+6oH3KECxvxspKZvk4exI72OFbZ1mZayHNG7BVyfuAMNNp/SRoFXGC4/dVq+tycIOQutvRHrBSRRsv1db8No1j8oEYHvQ5br7OxjS941S/KWeIZefBAyajyCzUjIDZBRTBMGVyJ2p2c/SdUmPs2XTMQnG+mUg==
+ alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvAodOIG6vaqMsl5DXjcRYPRro+C/SeTswVo5gqQdikK3qy118GWkVwL9gvEovq23EMCTmSV+KAFsHz8f0UxLEK9FZcfRuM5E7GfnP7sdY0ctjfmUhQ7fWVOTGLuH0h5DiQ+4voO/2Hi6SElvtLXAUBSqMKw6J0PsJ0uUY9CBZCQnZkFJWAAroUWw5ARUMy62KPZSAW2s8Qg4gacdhSk7SBACNGBFcJZHCS09xQJi5SxCHaTRLhhIckLBvuKEWhBsh+jU75BKYAC4ovoWhMAFnIWKwCmubhXqmYjuJ4egUQTQBbD1hasK99I1YzdXRH8OKwKD4Lufb42B9buZ/2hOywIDAQAB
+ notifyUrl: http://lihongxiang.natapp1.cc/alipay/notify