Skip to content

Commit 441c225

Browse files
authored
Merge pull request 2227324689#131 from wz510172336/stu_dev_0809_510172336
1微信退款及通知完善,2加入数据库日志logback 3加解密工具
2 parents a6c4617 + b8170ba commit 441c225

File tree

31 files changed

+809
-287
lines changed

31 files changed

+809
-287
lines changed

db_scrpit/gpmall.sql

Lines changed: 23 additions & 23 deletions
Large diffs are not rendered by default.

gpmall-cashier/src/main/java/com/gpmall/cashier/bootstrap/controller/PayController.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,14 @@ public ResponseData pay(@RequestBody PayForm payForm, HttpServletRequest httpSer
6666

6767

6868
@PostMapping("/refund")
69+
@Anoymous
6970
public ResponseData refund(@RequestBody PayForm refundForm,HttpServletRequest httpServletRequest){
7071
log.info("订单退款入参:{}",JSON.toJSONString(refundForm));
7172
RefundRequest refundRequest=new RefundRequest();
73+
String userInfo=(String)httpServletRequest.getAttribute(TokenIntercepter.USER_INFO_KEY);
74+
JSONObject object= JSON.parseObject(userInfo);
75+
Long uid=Long.parseLong(object.get("uid").toString());
76+
refundRequest.setUserId(uid);
7277
refundRequest.setOrderId(refundForm.getOrderId());
7378
refundRequest.setRefundAmount(refundForm.getMoney());
7479
refundRequest.setPayChannel(refundForm.getPayType());

gpmall-cashier/src/main/java/com/gpmall/cashier/bootstrap/controller/PayNotifyController.java

Lines changed: 57 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,17 @@
66
import com.gupaoedu.pay.PayCoreService;
77
import com.gupaoedu.pay.dto.PaymentNotifyRequest;
88
import com.gupaoedu.pay.dto.PaymentNotifyResponse;
9+
import com.sun.tools.classfile.ConstantPool;
910
import lombok.extern.slf4j.Slf4j;
1011
import org.apache.dubbo.config.annotation.Reference;
12+
import org.springframework.util.CollectionUtils;
1113
import org.springframework.web.bind.annotation.PostMapping;
1214
import org.springframework.web.bind.annotation.RequestMapping;
1315
import org.springframework.web.bind.annotation.RestController;
1416

1517
import javax.servlet.http.HttpServletRequest;
18+
import java.io.*;
19+
import java.util.HashMap;
1620
import java.util.Map;
1721

1822
/**
@@ -25,7 +29,7 @@
2529
@RestController
2630
public class PayNotifyController {
2731

28-
@Reference(timeout = 30000,retries = 3)
32+
@Reference(timeout = 3000)
2933
private PayCoreService payCoreService;
3034

3135
/**
@@ -36,7 +40,7 @@ public class PayNotifyController {
3640
*/
3741
@PostMapping("/pay/alipayNotify")
3842
public String doAliPay(HttpServletRequest httpServletRequest) {
39-
return commonDo("ali_pay", httpServletRequest);
43+
return commonAliDo("ali_pay", httpServletRequest);
4044
}
4145

4246
/**
@@ -46,7 +50,7 @@ public String doAliPay(HttpServletRequest httpServletRequest) {
4650
*/
4751
@RequestMapping("/pay/wechatPayNotify")
4852
public String doWeChantPay(HttpServletRequest httpServletRequest) {
49-
return commonDo("wechat_pay", httpServletRequest);
53+
return commonWeChatDo("wechat_pay", httpServletRequest);
5054
}
5155

5256
/**
@@ -56,7 +60,7 @@ public String doWeChantPay(HttpServletRequest httpServletRequest) {
5660
*/
5761
@PostMapping("/refund/aliRefundNotify")
5862
public String doAliRefund(HttpServletRequest httpServletRequest) {
59-
return commonDo("ali_refund", httpServletRequest);
63+
return commonAliDo("ali_refund", httpServletRequest);
6064
}
6165

6266
/**
@@ -66,10 +70,16 @@ public String doAliRefund(HttpServletRequest httpServletRequest) {
6670
*/
6771
@PostMapping("/refund/wechatRefundNotify")
6872
public String doWechatRefund(HttpServletRequest httpServletRequest) {
69-
return commonDo("wechat_refund", httpServletRequest);
73+
return commonWeChatDo("wechat_refund", httpServletRequest);
7074
}
7175

72-
private String commonDo(String channel, HttpServletRequest httpServletRequest) {
76+
/**
77+
* 支付宝异步通知返回解析
78+
* @param channel
79+
* @param httpServletRequest
80+
* @return
81+
*/
82+
private String commonAliDo(String channel,HttpServletRequest httpServletRequest) {
7383
log.info("{}异步通知回调:{}", channel, JSON.toJSON(httpServletRequest.getParameterMap()));
7484
Map<String, String[]> map = httpServletRequest.getParameterMap();
7585
PaymentNotifyRequest paymentNotifyRequest = new PaymentNotifyRequest();
@@ -78,4 +88,45 @@ private String commonDo(String channel, HttpServletRequest httpServletRequest) {
7888
PaymentNotifyResponse paymentNotifyResponse = payCoreService.paymentResultNotify(paymentNotifyRequest);
7989
return paymentNotifyResponse.getResult();
8090
}
91+
92+
/**
93+
* 微信异步通知返回解析
94+
* @param channel
95+
* @param httpServletRequest
96+
* @return
97+
*/
98+
private String commonWeChatDo(String channel,HttpServletRequest httpServletRequest){
99+
StringBuffer stringBuffer=new StringBuffer();
100+
log.info("{}异步回调",channel);
101+
BufferedReader bufferedReader=null;
102+
InputStream inputStream=null;
103+
try {
104+
inputStream=httpServletRequest.getInputStream();
105+
bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
106+
String a;
107+
while((a=bufferedReader.readLine())!=null){
108+
stringBuffer.append(a);
109+
}
110+
log.info("微信支付回调通知:{}",stringBuffer.toString());
111+
} catch (IOException e) {
112+
log.error("解析微信回调数据错误{}", e.getMessage());
113+
e.printStackTrace();
114+
}finally {
115+
if(null==bufferedReader){
116+
try {
117+
inputStream.close();
118+
bufferedReader.close();
119+
} catch (IOException e) {
120+
e.printStackTrace();
121+
log.error("关闭流错误{}", e.getMessage());
122+
}
123+
}
124+
}
125+
PaymentNotifyRequest paymentNotifyRequest = new PaymentNotifyRequest();
126+
paymentNotifyRequest.setPayChannel(channel);
127+
paymentNotifyRequest.setXml(stringBuffer.toString());
128+
PaymentNotifyResponse paymentNotifyResponse = payCoreService.paymentResultNotify(paymentNotifyRequest);
129+
log.info("{}微信通知结果返回:{}",channel,JSON.toJSONString(paymentNotifyResponse));
130+
return "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";
131+
}
81132
}

gpmall-commons/commons-tool/src/main/java/com/gpmall/commons/tool/utils/TradeNoUtils.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ public static String generateTradeNo() {
1818
Date now = new Date();
1919
String date = new SimpleDateFormat("yyyyMMdd").format(now);
2020
String seconds = new SimpleDateFormat("HHmmss").format(now);
21-
return date + "00001000" + getTwo() + "00" + seconds + getTwo();
21+
String millSeconds=new SimpleDateFormat("SSS").format(now);
22+
return date + "00001000" + getTwo() + "00" + seconds + getTwo()+millSeconds;
2223

2324
}
2425

gpmall-commons/commons-tool/src/main/java/com/gpmall/commons/tool/utils/UtilDate.java

Lines changed: 52 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -17,61 +17,80 @@
1717
*该代码仅供学习和研究支付宝接口使用,只是提供一个参考。
1818
*/
1919
public class UtilDate {
20-
21-
/** 年月日时分秒(无下划线) yyyyMMddHHmmss */
22-
public static final String dtLong = "yyyyMMddHHmmss";
23-
24-
/** 完整时间 yyyy-MM-dd HH:mm:ss */
25-
public static final String simple = "yyyy-MM-dd HH:mm:ss";
26-
27-
/** 年月日(无下划线) yyyyMMdd */
28-
public static final String dtShort = "yyyyMMdd";
29-
30-
31-
/**
32-
* 返回系统当前时间(精确到毫秒),作为一个唯一的订单编号
33-
* @return
34-
* 以yyyyMMddHHmmss为格式的当前系统时间
35-
*/
36-
public static String getOrderNum(){
37-
Date date=new Date();
38-
DateFormat df=new SimpleDateFormat(dtLong);
20+
21+
/**
22+
* 年月日时分秒(无下划线) yyyyMMddHHmmss
23+
*/
24+
public static final String dtLong = "yyyyMMddHHmmss";
25+
26+
/**
27+
* 完整时间 yyyy-MM-dd HH:mm:ss
28+
*/
29+
public static final String simple = "yyyy-MM-dd HH:mm:ss";
30+
31+
/**
32+
* 年月日(无下划线) yyyyMMdd
33+
*/
34+
public static final String dtShort = "yyyyMMdd";
35+
36+
37+
/**
38+
* 返回系统当前时间(精确到毫秒),作为一个唯一的订单编号
39+
*
40+
* @return 以yyyyMMddHHmmss为格式的当前系统时间
41+
*/
42+
public static String getOrderNum() {
43+
Date date = new Date();
44+
DateFormat df = new SimpleDateFormat(dtLong);
3945
return df.format(date);
4046
}
41-
47+
4248
/**
4349
* 获取系统当前日期(精确到毫秒),格式:yyyy-MM-dd HH:mm:ss
50+
*
4451
* @return
4552
*/
46-
public static String getDateFormatter(){
47-
Date date=new Date();
48-
DateFormat df=new SimpleDateFormat(simple);
53+
public static String getDateFormatter() {
54+
Date date = new Date();
55+
DateFormat df = new SimpleDateFormat(simple);
4956
return df.format(date);
5057
}
5158

5259
/**
5360
* 获取系统当期年月日(精确到天),格式:yyyyMMdd
61+
*
5462
* @return
5563
*/
56-
public static String getDate(){
57-
Date date=new Date();
58-
DateFormat df=new SimpleDateFormat(dtShort);
64+
public static String getDate() {
65+
Date date = new Date();
66+
DateFormat df = new SimpleDateFormat(dtShort);
5967
return df.format(date);
6068
}
61-
69+
6270
/**
6371
* 产生随机的三位数
72+
*
6473
* @return
6574
*/
66-
public static String getThree(){
67-
Random rad=new Random();
68-
return rad.nextInt(1000)+"";
75+
public static String getThree() {
76+
Random rad = new Random();
77+
return rad.nextInt(1000) + "";
6978
}
7079

71-
public static String getExpireTime(Long time){
72-
DateFormat df=new SimpleDateFormat(dtLong);
73-
Date afterTime=new Date(new Date().getTime()+time);
80+
public static String getExpireTime(Long time) {
81+
DateFormat df = new SimpleDateFormat(dtLong);
82+
Date afterTime = new Date(new Date().getTime() + time);
7483
return df.format(afterTime);
7584
}
7685

86+
public static Date parseStrToDate(String strTime, String timeFromat,
87+
Date defaultValue) {
88+
try {
89+
DateFormat dateFormat = new SimpleDateFormat(timeFromat);
90+
return dateFormat.parse(strTime);
91+
} catch (Exception e) {
92+
return defaultValue;
93+
}
94+
95+
}
7796
}

gpmall-shopping/src/main/java/com/gpmall/shopping/controller/OrderController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public ResponseData orderDetail(@PathVariable String id){
8787
OrderDetailResponse response=orderQueryService.orderDetail(request);
8888
if(response.getCode().equals(OrderRetCode.SUCCESS.getCode())){
8989
OrderDetail orderDetail=new OrderDetail();
90-
orderDetail.setOrderTotal(BigDecimal.valueOf(response.getPayment()));
90+
orderDetail.setOrderTotal(response.getPayment());
9191
orderDetail.setUserId(response.getUserId());
9292
orderDetail.setUserName(response.getBuyerNick());
9393
orderDetail.setGoodsList(response.getOrderItemDto());

order-services/order-api/src/main/java/com/gpmall/order/dto/OrderDetailInfo.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import lombok.Data;
44

55
import java.io.Serializable;
6+
import java.math.BigDecimal;
67
import java.util.Date;
78
import java.util.List;
89

@@ -17,11 +18,11 @@ public class OrderDetailInfo implements Serializable {
1718
private static final long serialVersionUID = 1L;
1819
private String orderId;
1920

20-
private Double payment;
21+
private BigDecimal payment;
2122

2223
private Integer paymentType;
2324

24-
private Double postFee;
25+
private BigDecimal postFee;
2526

2627
private Integer status;
2728

order-services/order-api/src/main/java/com/gpmall/order/dto/OrderDetailResponse.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.gpmall.commons.result.AbstractResponse;
66
import lombok.Data;
77

8+
import java.math.BigDecimal;
89
import java.util.Date;
910
import java.util.List;
1011

@@ -19,11 +20,11 @@ public class OrderDetailResponse extends AbstractResponse{
1920

2021
private String orderId;
2122

22-
private Double payment;
23+
private BigDecimal payment;
2324

2425
private Integer paymentType;
2526

26-
private Double postFee;
27+
private BigDecimal postFee;
2728

2829
private Integer status;
2930

order-services/order-provider/src/main/java/com/gpmall/order/biz/handler/InitOrderHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public boolean handle(TransHandlerContext context) {
7575
order.setOrderId(orderId);
7676
order.setUserId(Long.valueOf(createOrderContext.getUserId()));
7777
order.setBuyerNick(createOrderContext.getBuyerNickName());
78-
order.setPayment(NumberUtils.toDouble(createOrderContext.getOrderTotal()));
78+
order.setPayment(createOrderContext.getOrderTotal());
7979
order.setCreateTime(new Date());
8080
order.setUpdateTime(new Date());
8181
order.setStatus(OrderConstants.ORDER_STATUS_INIT);

order-services/order-provider/src/main/java/com/gpmall/order/dal/entitys/Order.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class Order {
3636
3737
*/
3838

39-
private Double payment;
39+
private BigDecimal payment;
4040

4141

4242

@@ -60,7 +60,7 @@ public class Order {
6060

6161
@Column(name = "post_fee")
6262

63-
private Double postFee;
63+
private BigDecimal postFee;
6464

6565

6666

order-services/order-provider/src/main/resources/application-dev.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,6 @@ dubbo:
4848
group: dubbo-dev
4949
scan:
5050
base-packages: com.gpmall.order.services
51-
51+
logging:
52+
config:
53+
classpath: logback.xml

0 commit comments

Comments
 (0)