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

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

View File

@@ -2,6 +2,7 @@ import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
@@ -150,6 +151,39 @@ public class SpringBootTestController {
@Autowired @Autowired
private AdapayCallbackRecordService adapayCallbackRecordService; 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 @Test
public void testQueryCallback() { public void testQueryCallback() {
AdapayCallbackRecord aaaa = adapayCallbackRecordService.selectByOrderCode("aaaa"); AdapayCallbackRecord aaaa = adapayCallbackRecordService.selectByOrderCode("aaaa");

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,10 @@
package com.jsowell.pile.service.impl; 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.constant.CacheConstants;
import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.core.redis.RedisCache;
import com.jsowell.common.util.StringUtils; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@Slf4j @Slf4j
@Service @Service
public class AdapayCallbackRecordServiceImpl implements AdapayCallbackRecordService { public class AdapayCallbackRecordServiceImpl implements AdapayCallbackRecordService {
@@ -25,6 +32,28 @@ public class AdapayCallbackRecordServiceImpl implements AdapayCallbackRecordServ
adapayCallbackRecordMapper.insert(callbackRecord); 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 * @param orderCode
@@ -52,4 +81,9 @@ public class AdapayCallbackRecordServiceImpl implements AdapayCallbackRecordServ
// log.info("查询汇付支付回调记录 orderCode:{}, result:{}", orderCode, JSON.toJSONString(record)); // log.info("查询汇付支付回调记录 orderCode:{}, result:{}", orderCode, JSON.toJSONString(record));
return 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; 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.common.util.DateUtils;
import com.jsowell.pile.domain.AdapayCallbackRecord;
import com.jsowell.pile.domain.AdapayRefundRecord; import com.jsowell.pile.domain.AdapayRefundRecord;
import com.jsowell.pile.mapper.AdapayRefundRecordMapper; import com.jsowell.pile.mapper.AdapayRefundRecordMapper;
import com.jsowell.pile.service.AdapayCallbackRecordService;
import com.jsowell.pile.service.IAdapayRefundRecordService; import com.jsowell.pile.service.IAdapayRefundRecordService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -20,6 +28,8 @@ public class AdapayRefundRecordServiceImpl implements IAdapayRefundRecordService
@Autowired @Autowired
private AdapayRefundRecordMapper adapayRefundRecordMapper; private AdapayRefundRecordMapper adapayRefundRecordMapper;
@Autowired
private AdapayCallbackRecordService adapayCallbackRecordService;
/** /**
* 查询【请填写功能名称】 * 查询【请填写功能名称】
* *
@@ -86,4 +96,23 @@ public class AdapayRefundRecordServiceImpl implements IAdapayRefundRecordService
public int deleteAdapayRefundRecordById(Integer id) { public int deleteAdapayRefundRecordById(Integer id) {
return adapayRefundRecordMapper.deleteAdapayRefundRecordById(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

@@ -42,6 +42,13 @@
from adapay_callback_record from adapay_callback_record
where del_flag = '0' where del_flag = '0'
and order_code = #{orderCode,jdbcType=VARCHAR} and order_code = #{orderCode,jdbcType=VARCHAR}
</select>
<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> </select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String"> <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete from adapay_callback_record delete from adapay_callback_record