9.1 李雨欣测试购买记录接口 22:19
parent
109f4633c0
commit
fa33258919
|
@ -17,10 +17,27 @@
|
||||||
<maven.compiler.target>17</maven.compiler.target>
|
<maven.compiler.target>17</maven.compiler.target>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
|
<!--支付宝依赖 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alipay.sdk</groupId>
|
||||||
|
<artifactId>alipay-easysdk</artifactId>
|
||||||
|
<version>2.2.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alipay.sdk</groupId>
|
||||||
|
<artifactId>alipay-sdk-java</artifactId>
|
||||||
|
<version>4.22.113.ALL</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.muyu</groupId>
|
<groupId>com.muyu</groupId>
|
||||||
<artifactId>cloud-common-core</artifactId>
|
<artifactId>cloud-common-core</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
|
@ -19,6 +19,20 @@
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
|
|
||||||
|
<!--支付宝依赖 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alipay.sdk</groupId>
|
||||||
|
<artifactId>alipay-easysdk</artifactId>
|
||||||
|
<version>2.2.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alipay.sdk</groupId>
|
||||||
|
<artifactId>alipay-sdk-java</artifactId>
|
||||||
|
<version>4.22.113.ALL</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- api接口 需要用到的依赖 -->
|
<!-- api接口 需要用到的依赖 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-beanutils</groupId>
|
<groupId>commons-beanutils</groupId>
|
||||||
|
|
|
@ -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.EnableCustomConfig;
|
||||||
import com.muyu.common.security.annotation.EnableMyFeignClients;
|
import com.muyu.common.security.annotation.EnableMyFeignClients;
|
|
@ -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初始化成功=======");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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<String, String> params = new HashMap<>();
|
||||||
|
Map<String, String[]> 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";
|
||||||
|
}
|
||||||
|
}
|
|
@ -49,4 +49,5 @@ public class RecordController {
|
||||||
recodeService.save( Record.SaveRecodeList( recodeListReq ));
|
recodeService.save( Record.SaveRecodeList( recodeListReq ));
|
||||||
return Result.success(null,"操作成功");
|
return Result.success(null,"操作成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
com.muyu.market.server.MarketApplication
|
com.muyu.market.MarketApplication
|
||||||
com.muyu.Main
|
com.muyu.Main
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Tomcat
|
# Tomcat
|
||||||
server:
|
server:
|
||||||
port: 6666
|
port: 10001
|
||||||
|
|
||||||
# nacos线上地址
|
# nacos线上地址
|
||||||
nacos:
|
nacos:
|
||||||
|
@ -54,3 +54,9 @@ spring:
|
||||||
logging:
|
logging:
|
||||||
level:
|
level:
|
||||||
com.muyu.system.mapper: DEBUG
|
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
|
||||||
|
|
Loading…
Reference in New Issue