diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java index 065d77e18..c9949c381 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java @@ -2,8 +2,6 @@ package com.jsowell.api.uniapp; import com.alibaba.fastjson2.JSONObject; import com.google.common.collect.ImmutableMap; -import com.huifu.adapay.core.AdapayCore; -import com.huifu.adapay.core.util.AdapaySign; import com.jsowell.common.annotation.Anonymous; import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.core.redis.RedisCache; @@ -29,7 +27,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; -import java.util.Enumeration; import java.util.List; import java.util.Map; @@ -271,33 +268,9 @@ public class PayController extends BaseController { * https://api.jsowellcloud.com/uniapp/pay/adapayCallback */ @PostMapping("/adapayCallback") - public void callback(HttpServletRequest request) { - //获得所有头的名称 - Enumeration headerNames = request.getHeaderNames(); - while(headerNames.hasMoreElements()) {//判断是否还有下一个元素 - String nextElement = headerNames.nextElement();//获取headerNames集合中的请求头 - String header2 = request.getHeader(nextElement);//通过请求头得到请求内容 - logger.info("汇付支付回调 请求头=========={}, VALUE:{}", nextElement , header2); - //System.out.println(nextElement+":"+header2); - } + public void adapayCallback(HttpServletRequest request) { try { - //验签请参data - String data = request.getParameter("data"); - //验签请参sign - String sign = request.getParameter("sign"); - //验签标记 - boolean checkSign; - //验签请参publicKey - String publicKey = AdapayCore.PUBLIC_KEY; - logger.info("汇付支付回调验签请参data={}, sign={}", data, sign); - //验签 - checkSign = AdapaySign.verifySign(data, sign, publicKey); - if (checkSign) { - //验签成功逻辑 - logger.info("汇付支付回调成功返回数据data:{}", data); - } else { - //验签失败逻辑 - } + orderService.adapayCallback(request); } catch (Exception e) { logger.error("汇付支付回调失败 error", e); } diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 34fb25707..bcb488463 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -2,13 +2,18 @@ package com.jsowell.service; import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.TypeReference; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; +import com.huifu.adapay.core.AdapayCore; import com.huifu.adapay.core.exception.BaseAdaPayException; +import com.huifu.adapay.core.util.AdapaySign; import com.huifu.adapay.model.Payment; import com.jsowell.adapay.common.CreateAdaPaymentParam; import com.jsowell.common.constant.Constants; @@ -19,15 +24,7 @@ import com.jsowell.common.core.page.PageResponse; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.InvoiceRecordEnum; import com.jsowell.common.enums.MemberWalletEnum; -import com.jsowell.common.enums.ykc.ActionTypeEnum; -import com.jsowell.common.enums.ykc.OrderPayModeEnum; -import com.jsowell.common.enums.ykc.OrderPayRecordEnum; -import com.jsowell.common.enums.ykc.OrderStatusEnum; -import com.jsowell.common.enums.ykc.PayModeEnum; -import com.jsowell.common.enums.ykc.PileConnectorDataBaseStatusEnum; -import com.jsowell.common.enums.ykc.ReturnCodeEnum; -import com.jsowell.common.enums.ykc.ScenarioEnum; -import com.jsowell.common.enums.ykc.StartTypeEnum; +import com.jsowell.common.enums.ykc.*; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.AdapayUtil; import com.jsowell.common.util.DateUtils; @@ -35,49 +32,16 @@ import com.jsowell.common.util.SecurityUtils; import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.bean.BeanUtils; import com.jsowell.common.util.id.IdUtils; -import com.jsowell.pile.domain.MemberTransactionRecord; -import com.jsowell.pile.domain.OrderBasicInfo; -import com.jsowell.pile.domain.OrderDetail; -import com.jsowell.pile.domain.OrderInvoiceRecord; -import com.jsowell.pile.domain.OrderPayRecord; -import com.jsowell.pile.domain.PileStationWhitelist; -import com.jsowell.pile.domain.WxpayCallbackRecord; -import com.jsowell.pile.dto.ApplyOrderInvoiceDTO; -import com.jsowell.pile.dto.BasicPileDTO; -import com.jsowell.pile.dto.GenerateOrderDTO; -import com.jsowell.pile.dto.GetPayModeDTO; -import com.jsowell.pile.dto.ManualSettlementDTO; -import com.jsowell.pile.dto.PayOrderDTO; -import com.jsowell.pile.dto.PayOrderSuccessCallbackDTO; -import com.jsowell.pile.dto.PaymentScenarioDTO; -import com.jsowell.pile.dto.QueryConnectorListDTO; -import com.jsowell.pile.dto.QueryInvoiceRecordDTO; -import com.jsowell.pile.dto.QueryOrderDTO; -import com.jsowell.pile.dto.SettleOrderDTO; -import com.jsowell.pile.dto.StopChargingDTO; -import com.jsowell.pile.dto.UniAppQueryOrderDTO; -import com.jsowell.pile.dto.WeixinPayDTO; -import com.jsowell.pile.service.IMemberBasicInfoService; -import com.jsowell.pile.service.IMemberTransactionRecordService; -import com.jsowell.pile.service.IOrderBasicInfoService; -import com.jsowell.pile.service.IOrderInvoiceRecordService; -import com.jsowell.pile.service.IOrderPayRecordService; -import com.jsowell.pile.service.IPileBillingTemplateService; -import com.jsowell.pile.service.IPileStationInfoService; -import com.jsowell.pile.service.IPileStationWhitelistService; -import com.jsowell.pile.service.WechatPayService; -import com.jsowell.pile.service.WxpayCallbackRecordService; +import com.jsowell.pile.domain.*; +import com.jsowell.pile.dto.*; +import com.jsowell.pile.service.*; import com.jsowell.pile.transaction.dto.OrderTransactionDTO; import com.jsowell.pile.transaction.service.TransactionService; import com.jsowell.pile.vo.base.OrderAmountDetailVO; import com.jsowell.pile.vo.base.OrderPeriodAmountVO; import com.jsowell.pile.vo.base.PileInfoVO; -import com.jsowell.pile.vo.uniapp.InvoiceRecordVO; -import com.jsowell.pile.vo.uniapp.MemberVO; -import com.jsowell.pile.vo.uniapp.OrderVO; -import com.jsowell.pile.vo.uniapp.PayModeVO; -import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO; -import com.jsowell.pile.vo.uniapp.UniAppOrderVO; +import com.jsowell.pile.vo.base.StationInfoVO; +import com.jsowell.pile.vo.uniapp.*; import com.jsowell.pile.vo.web.BillingTemplateVO; import com.jsowell.pile.vo.web.OrderDetailInfoVO; import com.jsowell.pile.vo.web.PileStationVO; @@ -95,15 +59,7 @@ import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.text.ParseException; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -157,6 +113,9 @@ public class OrderService { @Autowired private RedisCache redisCache; + @Autowired + private AdapayCallbackRecordService adapayCallbackRecordService; + private List stationIdList = Lists.newArrayList("1", "2"); /** @@ -1168,6 +1127,10 @@ public class OrderService { return orderList; } + public List queryUninvoicedStationList(QueryOrderDTO dto) { + return Lists.newArrayList(); + } + /** * 申请开票 * @param dto @@ -1248,7 +1211,55 @@ public class OrderService { .build(); } - public void adapayCallback(HttpServletRequest request, WechatPayNotifyParameter body) { - log.info(""); + public void adapayCallback(HttpServletRequest request) throws Exception { + //验签请参data + String data = request.getParameter("data"); + //验签请参sign + String sign = request.getParameter("sign"); + //验签请参publicKey + String publicKey = AdapayCore.PUBLIC_KEY; + log.info("汇付支付回调验签请参data={}, sign={}", data, sign); + //验签 + //验签标记 + boolean checkSign = AdapaySign.verifySign(data, sign, publicKey); + if (!checkSign) { + log.info("汇付支付回调验签失败:{}", data); + } + //验签成功 保存到回调记录表中 + ObjectMapper mapper = new ObjectMapper(); + mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE); + AdapayCallbackRecord adapayCallbackRecord = mapper.readValue(data, AdapayCallbackRecord.class); + adapayCallbackRecordService.saveAdapayCallbackRecord(adapayCallbackRecord); } + + public static void main(String[] args) throws JsonProcessingException { + String data = "{\n" + + " \"app_id\": \"app_d0c80cb1-ffc8-48cb-a030-fe9bec823aaa\",\n" + + " \"created_time\": \"20230519155322\",\n" + + " \"description\": \"充电费用3\",\n" + + " \"end_time\": \"20230519155332\",\n" + + " \"expend\": {\n" + + " \"bank_type\": \"OTHERS\",\n" + + " \"open_id\": \"o8jhot6PJF93EPhNISsXi28dKdS8\",\n" + + " \"sub_open_id\": \"o4REX5MprZfTaLnVNxfdOY-wnwGI\"\n" + + " },\n" + + " \"fee_amt\": \"0.00\",\n" + + " \"id\": \"002212023051915532110505541666512474112\",\n" + + " \"order_no\": \"819b093f874b4a2e8004e9edd4f5893c\",\n" + + " \"out_trans_id\": \"4200001872202305191271802241\",\n" + + " \"party_order_id\": \"02212305195720191805612\",\n" + + " \"pay_amt\": \"0.01\",\n" + + " \"pay_channel\": \"wx_lite\",\n" + + " \"real_amt\": \"0.01\",\n" + + " \"share_eq\": \"Y\",\n" + + " \"status\": \"succeeded\",\n" + + " \"wx_user_id\": \"\"\n" + + "}"; + ObjectMapper mapper = new ObjectMapper(); + mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE); + AdapayCallbackRecord adapayCallbackRecord = mapper.readValue(data, AdapayCallbackRecord.class); + System.out.println(adapayCallbackRecord); + } + + } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/AdapayCallbackRecord.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/AdapayCallbackRecord.java index e1a218b5b..9f9ced48e 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/domain/AdapayCallbackRecord.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/AdapayCallbackRecord.java @@ -1,9 +1,13 @@ package com.jsowell.pile.domain; +import com.alibaba.fastjson2.JSONObject; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; -import lombok.Data; +import java.util.Map; /** * adapay_callback_record @@ -14,7 +18,7 @@ public class AdapayCallbackRecord implements Serializable { /** * 主键id */ - private Integer id; + private String id; /** * 汇付商户appId @@ -43,11 +47,11 @@ public class AdapayCallbackRecord implements Serializable { /** * 商户支付订单号 */ - private Integer orderNo; + private String orderNo; - private Integer outTransId; + private String outTransId; - private Integer partyOrderId; + private String partyOrderId; private BigDecimal payAmt; @@ -72,4 +76,10 @@ public class AdapayCallbackRecord implements Serializable { private String delFlag; private static final long serialVersionUID = 1L; + + @JsonProperty(value = "expend") + public void setExpend(Map expend){ + this.expend = JSONObject.toJSONString(expend); + } + } \ No newline at end of file diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/AdapayCallbackRecordMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/AdapayCallbackRecordMapper.java index 93dd85c63..401169d20 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/AdapayCallbackRecordMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/AdapayCallbackRecordMapper.java @@ -1,7 +1,9 @@ package com.jsowell.pile.mapper; -import generate.AdapayCallbackRecord; +import com.jsowell.pile.domain.AdapayCallbackRecord; +import org.springframework.stereotype.Repository; +@Repository public interface AdapayCallbackRecordMapper { int deleteByPrimaryKey(Integer id); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/AdapayCallbackRecordService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/AdapayCallbackRecordService.java index 8b4066415..50ea6d978 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/AdapayCallbackRecordService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/AdapayCallbackRecordService.java @@ -1,4 +1,7 @@ package com.jsowell.pile.service; +import com.jsowell.pile.domain.AdapayCallbackRecord; + public interface AdapayCallbackRecordService { + void saveAdapayCallbackRecord(AdapayCallbackRecord callbackRecord); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayCallbackRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayCallbackRecordServiceImpl.java index 9a6dfd720..9e3ab57ff 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayCallbackRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/AdapayCallbackRecordServiceImpl.java @@ -1,8 +1,19 @@ package com.jsowell.pile.service.impl; +import com.jsowell.pile.domain.AdapayCallbackRecord; +import com.jsowell.pile.mapper.AdapayCallbackRecordMapper; import com.jsowell.pile.service.AdapayCallbackRecordService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class AdapayCallbackRecordServiceImpl implements AdapayCallbackRecordService { + + @Autowired + private AdapayCallbackRecordMapper adapayCallbackRecordMapper; + + @Override + public void saveAdapayCallbackRecord(AdapayCallbackRecord callbackRecord) { + adapayCallbackRecordMapper.insert(callbackRecord); + } }