mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 11:05:18 +08:00
保存汇付支付回调信息
This commit is contained in:
@@ -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<String> 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);
|
||||
}
|
||||
|
||||
@@ -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<String> stationIdList = Lists.newArrayList("1", "2");
|
||||
|
||||
/**
|
||||
@@ -1168,6 +1127,10 @@ public class OrderService {
|
||||
return orderList;
|
||||
}
|
||||
|
||||
public List<StationInfoVO> 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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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<String, Object> expend){
|
||||
this.expend = JSONObject.toJSONString(expend);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
package com.jsowell.pile.service;
|
||||
|
||||
import com.jsowell.pile.domain.AdapayCallbackRecord;
|
||||
|
||||
public interface AdapayCallbackRecordService {
|
||||
void saveAdapayCallbackRecord(AdapayCallbackRecord callbackRecord);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user