From e3eb55d5f33eddb7ed29874189ab5132fd180df0 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 23 Aug 2022 16:06:29 +0800
Subject: [PATCH] 20220822
---
src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 107 insertions(+), 0 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java b/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
new file mode 100644
index 0000000..4a0cdb1
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/controller/UnipayController.java
@@ -0,0 +1,107 @@
+package cc.mrbird.febs.pay.controller;
+
+import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
+import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
+import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.entity.MallOrderInfo;
+import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
+import cc.mrbird.febs.mall.service.IApiMallMemberService;
+import cc.mrbird.febs.rabbit.producter.AgentProducer;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.UnsupportedEncodingException;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+
+@Slf4j
+@RestController
+@RequestMapping(value = "/api/unipay")
+public class UnipayController {
+
+ @Autowired
+ private MallOrderInfoMapper orderInfoMapper;
+ @Autowired
+ private IApiMallMemberService memberService;
+ @Autowired
+ private AgentProducer agentProducer;
+
+ @RequestMapping("/unipayCallBack")
+ public String unipayCallBack(HttpServletRequest request){
+ log.info("进入汇聚支付回调");
+ String orderNo = "";
+ BigDecimal orderAmount = BigDecimal.ZERO;
+ String payTradeNo = "";
+ String callBackState = "";
+ String requestURI = request.getRequestURI();
+// String output = java.net.URLDecoder.decode(requestURI, "UTF-8");
+ String params = StrUtil.subAfter(requestURI, "?", true);
+ System.out.println(params);
+ List<String> paramStrList = StrUtil.splitTrim(params, "&");
+ if(CollUtil.isNotEmpty(paramStrList)){
+ for(String paramStr :paramStrList){
+ boolean r2orderNo = paramStr.startsWith("r2_OrderNo");
+ if(r2orderNo){
+ orderNo = StrUtil.subAfter(paramStr, "=", true);
+ }
+ boolean r3Amount = paramStr.startsWith("r3_Amount");
+ if(r3Amount){
+ orderAmount = new BigDecimal(StrUtil.subAfter(paramStr, "=", true));
+ }
+ boolean r6Status = paramStr.startsWith("r6_Status");
+ if(r6Status){
+ callBackState = StrUtil.subAfter(paramStr, "=", true);
+ }
+ boolean r7TrxNo = paramStr.startsWith("r7_TrxNo");
+ if(r7TrxNo){
+ payTradeNo = StrUtil.subAfter(paramStr, "=", true);
+ }
+ }
+ }
+ if("100".equals(callBackState) && StrUtil.isNotBlank(orderNo)){
+ MallOrderInfo orderInfo = orderInfoMapper.selectByOrderNo(orderNo);
+ BigDecimal amount = orderInfo.getAmount();
+ if(amount.compareTo(orderAmount) == 0){
+ MallMember member = memberService.getById(orderInfo.getMemberId());
+ if (AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())) {
+ member.setLevel(AgentLevelEnum.FIRST_LEVEL.name());
+ memberService.updateById(member);
+ }
+
+ orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
+ orderInfo.setPayResult("1");
+ orderInfo.setPayTime(new Date());
+ orderInfo.setPayTradeNo(payTradeNo);
+ orderInfoMapper.updateById(orderInfo);
+
+ agentProducer.sendAutoLevelUpMsg(orderInfo.getMemberId());
+ }
+ }
+ return "success";
+ }
+
+ public static void main(String[] args) {
+ String output = "https://www.baidu.com?r1_MerchantNo=888000000000000&r2_OrderNo=2020100000000000000&r3_Amount=10.00&r4_Cur=1&r5_Mp=goods&r6_Status=100&r7_TrxNo=100220100000000000&r8_BankOrderNo=100220100000000000&r9_BankTrxNo=4200000000202000000000000000&ra_PayTime=2022-08-11%2B16%253A14%253A39&rb_DealTime=2022-08-11%2B16%253A14%253A39&rc_BankCode=WEIXI_GZH&hmac=14c3819b5cc7bb80635901934f76c7a4";
+ String params = StrUtil.subAfter(output, "?", true);
+ System.out.println(params);
+ List<String> paramStrList = StrUtil.splitTrim(params, "&");
+ String orderNo = "";
+ if(CollUtil.isNotEmpty(paramStrList)){
+ for(String paramStr :paramStrList){
+ boolean r2_orderNo = paramStr.startsWith("r2_OrderNo");
+ if(r2_orderNo){
+ orderNo = StrUtil.subAfter(paramStr, "=", true);
+ }
+ }
+ }
+ System.out.println(orderNo);
+ }
+
+}
--
Gitblit v1.9.1