保存汇付支付退款回调记录

This commit is contained in:
2023-05-31 16:05:18 +08:00
parent 52884983f5
commit 18670c07e5
10 changed files with 121 additions and 2 deletions

View File

@@ -119,6 +119,9 @@ public class OrderService {
@Autowired
private IMemberInvoiceTitleService memberInvoiceTitleService;
@Autowired
private IAdapayRefundRecordService adapayRefundRecordService;
@Value("${adapay.appId}")
private String ADAPAY_APP_ID;
@@ -1365,7 +1368,7 @@ public class OrderService {
return;
}
// 保存到数据库
adapayRefundRecordService.saveAdapayRefundRecord(data);
}

View File

@@ -2,6 +2,7 @@ import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.google.common.collect.ImmutableMap;
@@ -150,6 +151,39 @@ public class SpringBootTestController {
@Autowired
private AdapayCallbackRecordService adapayCallbackRecordService;
@Autowired
private IAdapayRefundRecordService adapayRefundRecordService;
@Test
public void testSaveAdapayCallbackRecord() throws JsonProcessingException {
String data = "{\n" +
" \"object\": \"refund\",\n" +
" \"status\": \"succeeded\",\n" +
" \"prod_mode\": \"true\",\n" +
" \"id\": \"0022120230531111946980509821471137853440\",\n" +
" \"refund_order_no\": \"823725974557265920\",\n" +
" \"payment_id\": \"002212023053110524210509814658135928832\",\n" +
" \"payment_order_no\": \"C27262970851\",\n" +
" \"refund_amt\": \"7.82\",\n" +
" \"fee_amt\": \"0.04\",\n" +
" \"channel_no\": \"2023053121R064uj\",\n" +
" \"created_time\": \"1685503187000\",\n" +
" \"succeed_time\": \"1685503199000\",\n" +
" \"app_id\": \"app_d0c80cb1-ffc8-48cb-a030-fe9bec823aaa\",\n" +
" \"reason\": \"\",\n" +
" \"notify_url\": \"https://api.jsowellcloud.com/uniapp/pay/adapayRefundCallback\"\n" +
"}";
JSONObject jsonObject = JSON.parseObject(data);
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
AdapayRefundRecord adapayRefundRecord = mapper.readValue(jsonObject.toJSONString(), AdapayRefundRecord.class);
adapayRefundRecord.setRefundId(jsonObject.getString("id"));
// 保存到数据库
adapayRefundRecordService.insertAdapayRefundRecord(adapayRefundRecord);
}
@Test
public void testQueryCallback() {
AdapayCallbackRecord aaaa = adapayCallbackRecordService.selectByOrderCode("aaaa");

View File

@@ -1,5 +1,6 @@
package com.jsowell.pile.domain;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.jsowell.common.annotation.Excel;
import com.jsowell.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -19,6 +20,7 @@ public class AdapayRefundRecord extends BaseEntity {
/**
* 主键id
*/
@JsonIgnore
private Integer id;
/**

View File

@@ -18,4 +18,6 @@ public interface AdapayCallbackRecordMapper {
int updateByPrimaryKeySelective(AdapayCallbackRecord record);
int updateByPrimaryKey(AdapayCallbackRecord record);
AdapayCallbackRecord selectByPaymentId(String paymentId);
}

View File

@@ -1,9 +1,14 @@
package com.jsowell.pile.service;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.jsowell.pile.domain.AdapayCallbackRecord;
public interface AdapayCallbackRecordService {
void saveAdapayCallbackRecord(AdapayCallbackRecord callbackRecord);
void saveAdapayCallbackRecord(String data) throws JsonProcessingException;
AdapayCallbackRecord selectByOrderCode(String orderCode);
AdapayCallbackRecord selectByPaymentId(String paymentId);
}

View File

@@ -1,5 +1,6 @@
package com.jsowell.pile.service;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.jsowell.pile.domain.AdapayRefundRecord;
import java.util.List;
@@ -58,4 +59,6 @@ public interface IAdapayRefundRecordService {
* @return 结果
*/
public int deleteAdapayRefundRecordById(Integer id);
void saveAdapayRefundRecord(String data) throws JsonProcessingException;
}

View File

@@ -1,5 +1,10 @@
package com.jsowell.pile.service.impl;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.jsowell.common.constant.CacheConstants;
import com.jsowell.common.core.redis.RedisCache;
import com.jsowell.common.util.StringUtils;
@@ -10,6 +15,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@Slf4j
@Service
public class AdapayCallbackRecordServiceImpl implements AdapayCallbackRecordService {
@@ -25,6 +32,28 @@ public class AdapayCallbackRecordServiceImpl implements AdapayCallbackRecordServ
adapayCallbackRecordMapper.insert(callbackRecord);
}
@Override
public void saveAdapayCallbackRecord(String data) throws JsonProcessingException {
JSONObject jsonObject = JSON.parseObject(data);
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
AdapayCallbackRecord adapayCallbackRecord = mapper.readValue(jsonObject.toJSONString(), AdapayCallbackRecord.class);
adapayCallbackRecord.setExpend(jsonObject.getString("expend"));
adapayCallbackRecord.setPaymentId(jsonObject.getString("id"));
JSONObject descJson = JSON.parseObject(adapayCallbackRecord.getDescription());
String type = descJson.getString("type");
adapayCallbackRecord.setPayScenario(type);
String memberId = descJson.getString("memberId");
adapayCallbackRecord.setMemberId(memberId);
String orderCode = descJson.getString("orderCode");
adapayCallbackRecord.setOrderCode(orderCode);
BigDecimal amount = adapayCallbackRecord.getPayAmt();
// 保存到数据库
this.saveAdapayCallbackRecord(adapayCallbackRecord);
}
/**
* 根据订单号查询支付回调信息
* @param orderCode
@@ -52,4 +81,9 @@ public class AdapayCallbackRecordServiceImpl implements AdapayCallbackRecordServ
// log.info("查询汇付支付回调记录 orderCode:{}, result:{}", orderCode, JSON.toJSONString(record));
return record;
}
@Override
public AdapayCallbackRecord selectByPaymentId(String paymentId) {
return adapayCallbackRecordMapper.selectByPaymentId(paymentId);
}
}

View File

@@ -1,8 +1,16 @@
package com.jsowell.pile.service.impl;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.jsowell.common.util.DateUtils;
import com.jsowell.pile.domain.AdapayCallbackRecord;
import com.jsowell.pile.domain.AdapayRefundRecord;
import com.jsowell.pile.mapper.AdapayRefundRecordMapper;
import com.jsowell.pile.service.AdapayCallbackRecordService;
import com.jsowell.pile.service.IAdapayRefundRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -20,6 +28,8 @@ public class AdapayRefundRecordServiceImpl implements IAdapayRefundRecordService
@Autowired
private AdapayRefundRecordMapper adapayRefundRecordMapper;
@Autowired
private AdapayCallbackRecordService adapayCallbackRecordService;
/**
* 查询【请填写功能名称】
*
@@ -86,4 +96,23 @@ public class AdapayRefundRecordServiceImpl implements IAdapayRefundRecordService
public int deleteAdapayRefundRecordById(Integer id) {
return adapayRefundRecordMapper.deleteAdapayRefundRecordById(id);
}
@Override
public void saveAdapayRefundRecord(String data) throws JsonProcessingException {
JSONObject jsonObject = JSON.parseObject(data);
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
AdapayRefundRecord adapayRefundRecord = mapper.readValue(jsonObject.toJSONString(), AdapayRefundRecord.class);
adapayRefundRecord.setRefundId(jsonObject.getString("id"));
AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByPaymentId(adapayRefundRecord.getPaymentId());
if (adapayCallbackRecord != null) {
adapayRefundRecord.setMemberId(adapayCallbackRecord.getMemberId());
adapayRefundRecord.setOrderCode(adapayCallbackRecord.getOrderCode());
}
// 保存到数据库
this.insertAdapayRefundRecord(adapayRefundRecord);
}
}

View File

@@ -43,7 +43,14 @@
where del_flag = '0'
and order_code = #{orderCode,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
<select id="selectByPaymentId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from adapay_callback_record
where del_flag = '0'
and payment_id = #{paymentId,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete from adapay_callback_record
where id = #{id,jdbcType=VARCHAR}
</delete>