mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-06-12 03:09:48 +08:00
查询退款对象
This commit is contained in:
@@ -245,6 +245,16 @@ public class SpringBootTestController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private MemberWalletInfoService memberWalletInfoService;
|
private MemberWalletInfoService memberWalletInfoService;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void queryPaymentRefundTest() {
|
||||||
|
String paymentId = "002212023122615542010585629628950949888";
|
||||||
|
try {
|
||||||
|
adapayService.queryPaymentRefund(paymentId, wechatAppId2);
|
||||||
|
} catch (BaseAdaPayException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void selectByMemberWalletListTest() {
|
public void selectByMemberWalletListTest() {
|
||||||
String memberId = "12345678";
|
String memberId = "12345678";
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package com.jsowell.adapay.common;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款对象
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class RefundInfo {
|
||||||
|
/**
|
||||||
|
* Adapay生成的退款对象id
|
||||||
|
*/
|
||||||
|
private String refund_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款状态:I-初始,P-处理中,F-失败,S-成功
|
||||||
|
*/
|
||||||
|
private String trans_status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adapay生成的支付对象id
|
||||||
|
*/
|
||||||
|
private String payment_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款金额
|
||||||
|
*/
|
||||||
|
private String refund_amt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款手续费,退款成功时有值
|
||||||
|
*/
|
||||||
|
private String fee_amt;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款订单号
|
||||||
|
*/
|
||||||
|
private String refund_order_no;
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package com.jsowell.adapay.response;
|
||||||
|
|
||||||
|
import com.jsowell.adapay.common.RefundInfo;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询退款对象response
|
||||||
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class PaymentRefundResponse extends AdapayBaseResponse{
|
||||||
|
/**
|
||||||
|
* 是否 prod模式,true 是 prod模式,false 是 mock模式
|
||||||
|
*/
|
||||||
|
private String prod_mode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款对象列表,若未查询到结果时,字段为空
|
||||||
|
*/
|
||||||
|
private List<RefundInfo> refunds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当发生参数错误时返回具体的参数名,便于定位错误原因,详见 错误
|
||||||
|
*/
|
||||||
|
private String invalid_param;
|
||||||
|
}
|
||||||
@@ -12,6 +12,7 @@ import com.huifu.adapay.model.*;
|
|||||||
import com.jsowell.adapay.common.AdaPayment;
|
import com.jsowell.adapay.common.AdaPayment;
|
||||||
import com.jsowell.adapay.common.CreateAdaPaymentParam;
|
import com.jsowell.adapay.common.CreateAdaPaymentParam;
|
||||||
import com.jsowell.adapay.common.DivMember;
|
import com.jsowell.adapay.common.DivMember;
|
||||||
|
import com.jsowell.adapay.common.RefundInfo;
|
||||||
import com.jsowell.adapay.config.AbstractAdapayConfig;
|
import com.jsowell.adapay.config.AbstractAdapayConfig;
|
||||||
import com.jsowell.adapay.dto.*;
|
import com.jsowell.adapay.dto.*;
|
||||||
import com.jsowell.adapay.factory.AdapayConfigFactory;
|
import com.jsowell.adapay.factory.AdapayConfigFactory;
|
||||||
@@ -1030,6 +1031,23 @@ public class AdapayService {
|
|||||||
return payment_reverses;
|
return payment_reverses;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询支付退款对象
|
||||||
|
*/
|
||||||
|
public List<RefundInfo> queryPaymentRefund(String paymentId, String wechatAppId) throws BaseAdaPayException {
|
||||||
|
AbstractAdapayConfig config = AdapayConfigFactory.getConfig(wechatAppId);
|
||||||
|
if (config == null) {
|
||||||
|
throw new BusinessException(ReturnCodeEnum.CODE_ADAPAY_CONFIG_IS_NULL_ERROR);
|
||||||
|
}
|
||||||
|
Map<String, Object> refundParams = Maps.newHashMap();
|
||||||
|
refundParams.put("payment_id", paymentId);
|
||||||
|
refundParams.put("app_id", config.getAdapayAppId());
|
||||||
|
Map<String, Object> response = Refund.query(refundParams, config.getWechatAppId());
|
||||||
|
PaymentRefundResponse paymentRefundResponse = JSON.parseObject(JSON.toJSONString(response), PaymentRefundResponse.class);
|
||||||
|
List<RefundInfo> refunds = paymentRefundResponse.getRefunds();
|
||||||
|
return refunds;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询支付确认对象列表
|
* 查询支付确认对象列表
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import com.jsowell.pile.transaction.service.TransactionService;
|
|||||||
import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO;
|
import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO;
|
||||||
import com.jsowell.pile.vo.web.BalanceDeductionAmountVO;
|
import com.jsowell.pile.vo.web.BalanceDeductionAmountVO;
|
||||||
import com.jsowell.pile.vo.web.BillingTemplateVO;
|
import com.jsowell.pile.vo.web.BillingTemplateVO;
|
||||||
|
import com.jsowell.pile.vo.web.OrderDetailInfoVO;
|
||||||
import com.jsowell.pile.vo.web.PileStationVO;
|
import com.jsowell.pile.vo.web.PileStationVO;
|
||||||
import com.jsowell.wxpay.service.WxAppletRemoteService;
|
import com.jsowell.wxpay.service.WxAppletRemoteService;
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
@@ -156,6 +157,11 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
|||||||
*/
|
*/
|
||||||
public abstract void refundBalance(ApplyRefundDTO dto);
|
public abstract void refundBalance(ApplyRefundDTO dto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询退款信息
|
||||||
|
*/
|
||||||
|
public abstract List<OrderDetailInfoVO.OrderRefundInfo> getOrderRefundInfoList(OrderBasicInfo orderBasicInfo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单支付成功 支付回调
|
* 订单支付成功 支付回调
|
||||||
* 支付成功后掉用这个方法
|
* 支付成功后掉用这个方法
|
||||||
|
|||||||
@@ -31,14 +31,17 @@ import com.jsowell.pile.dto.*;
|
|||||||
import com.jsowell.pile.transaction.dto.OrderTransactionDTO;
|
import com.jsowell.pile.transaction.dto.OrderTransactionDTO;
|
||||||
import com.jsowell.pile.vo.uniapp.MemberVO;
|
import com.jsowell.pile.vo.uniapp.MemberVO;
|
||||||
import com.jsowell.pile.vo.web.BalanceDeductionAmountVO;
|
import com.jsowell.pile.vo.web.BalanceDeductionAmountVO;
|
||||||
|
import com.jsowell.pile.vo.web.OrderDetailInfoVO;
|
||||||
import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO;
|
import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO;
|
||||||
import com.jsowell.wxpay.dto.WechatSendMsgDTO;
|
import com.jsowell.wxpay.dto.WechatSendMsgDTO;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.cglib.beans.BeanMap;
|
import org.springframework.cglib.beans.BeanMap;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -618,6 +621,46 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<OrderDetailInfoVO.OrderRefundInfo> getOrderRefundInfoList(OrderBasicInfo orderBasicInfo) {
|
||||||
|
List<OrderDetailInfoVO.OrderRefundInfo> resultList = Lists.newArrayList();
|
||||||
|
|
||||||
|
// 查到原汇付支付id
|
||||||
|
AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderBasicInfo.getOrderCode());
|
||||||
|
if (adapayCallbackRecord == null) {
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取appId
|
||||||
|
String wechatAppId = pileMerchantInfoService.queryAppIdByMerchantId(orderBasicInfo.getMerchantId());
|
||||||
|
|
||||||
|
// 通过支付id查询退款记录
|
||||||
|
String paymentId = adapayCallbackRecord.getPaymentId();
|
||||||
|
List<PaymentReverseResponse> paymentReverseResponses = null;
|
||||||
|
try {
|
||||||
|
paymentReverseResponses = adapayService.queryPaymentReverse(paymentId, wechatAppId);
|
||||||
|
} catch (BaseAdaPayException e) {
|
||||||
|
logger.error("查询支付撤销对象发生异常", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
OrderDetailInfoVO.OrderRefundInfo refundInfo;
|
||||||
|
if (CollectionUtils.isNotEmpty(paymentReverseResponses)) {
|
||||||
|
for (PaymentReverseResponse reverseResponse : paymentReverseResponses) {
|
||||||
|
refundInfo = new OrderDetailInfoVO.OrderRefundInfo();
|
||||||
|
refundInfo.setReverseId(reverseResponse.getId());
|
||||||
|
refundInfo.setPaymentId(reverseResponse.getPayment_id());
|
||||||
|
refundInfo.setReverseAmt(reverseResponse.getReverse_amt());
|
||||||
|
LocalDateTime createdTime = DateUtils.timestampToDatetime(Long.parseLong(reverseResponse.getCreated_time()));
|
||||||
|
refundInfo.setCreatedTime(DateUtils.formatDateTime(createdTime));
|
||||||
|
LocalDateTime succeedTime = DateUtils.timestampToDatetime(Long.parseLong(reverseResponse.getSucceed_time()));
|
||||||
|
refundInfo.setSucceedTime(DateUtils.formatDateTime(succeedTime));
|
||||||
|
resultList.add(refundInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 余额支付订单退款
|
* 余额支付订单退款
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import com.huifu.adapay.model.Payment;
|
|||||||
import com.jsowell.adapay.common.CreateAdaPaymentParam;
|
import com.jsowell.adapay.common.CreateAdaPaymentParam;
|
||||||
import com.jsowell.adapay.config.AbstractAdapayConfig;
|
import com.jsowell.adapay.config.AbstractAdapayConfig;
|
||||||
import com.jsowell.adapay.factory.AdapayConfigFactory;
|
import com.jsowell.adapay.factory.AdapayConfigFactory;
|
||||||
|
import com.jsowell.adapay.response.PaymentReverseResponse;
|
||||||
import com.jsowell.adapay.response.RefundResponse;
|
import com.jsowell.adapay.response.RefundResponse;
|
||||||
import com.jsowell.adapay.vo.PaymentInfo;
|
import com.jsowell.adapay.vo.PaymentInfo;
|
||||||
import com.jsowell.common.constant.CacheConstants;
|
import com.jsowell.common.constant.CacheConstants;
|
||||||
@@ -23,6 +24,7 @@ import com.jsowell.common.enums.adapay.MerchantDelayModeEnum;
|
|||||||
import com.jsowell.common.enums.ykc.*;
|
import com.jsowell.common.enums.ykc.*;
|
||||||
import com.jsowell.common.exception.BusinessException;
|
import com.jsowell.common.exception.BusinessException;
|
||||||
import com.jsowell.common.util.AdapayUtil;
|
import com.jsowell.common.util.AdapayUtil;
|
||||||
|
import com.jsowell.common.util.DateUtils;
|
||||||
import com.jsowell.common.util.StringUtils;
|
import com.jsowell.common.util.StringUtils;
|
||||||
import com.jsowell.common.util.id.SnowflakeIdWorker;
|
import com.jsowell.common.util.id.SnowflakeIdWorker;
|
||||||
import com.jsowell.pile.domain.*;
|
import com.jsowell.pile.domain.*;
|
||||||
@@ -30,14 +32,17 @@ import com.jsowell.pile.dto.*;
|
|||||||
import com.jsowell.pile.transaction.dto.OrderTransactionDTO;
|
import com.jsowell.pile.transaction.dto.OrderTransactionDTO;
|
||||||
import com.jsowell.pile.vo.uniapp.MemberVO;
|
import com.jsowell.pile.vo.uniapp.MemberVO;
|
||||||
import com.jsowell.pile.vo.web.BalanceDeductionAmountVO;
|
import com.jsowell.pile.vo.web.BalanceDeductionAmountVO;
|
||||||
|
import com.jsowell.pile.vo.web.OrderDetailInfoVO;
|
||||||
import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO;
|
import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO;
|
||||||
import com.jsowell.wxpay.dto.WechatSendMsgDTO;
|
import com.jsowell.wxpay.dto.WechatSendMsgDTO;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.cglib.beans.BeanMap;
|
import org.springframework.cglib.beans.BeanMap;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -522,6 +527,45 @@ public class NotDelayMerchantProgramLogic extends AbstractProgramLogic {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<OrderDetailInfoVO.OrderRefundInfo> getOrderRefundInfoList(OrderBasicInfo orderBasicInfo) {
|
||||||
|
List<OrderDetailInfoVO.OrderRefundInfo> resultList = Lists.newArrayList();
|
||||||
|
|
||||||
|
// 查到原汇付支付id
|
||||||
|
AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderBasicInfo.getOrderCode());
|
||||||
|
if (adapayCallbackRecord == null) {
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取appId
|
||||||
|
String wechatAppId = pileMerchantInfoService.queryAppIdByMerchantId(orderBasicInfo.getMerchantId());
|
||||||
|
|
||||||
|
// 通过支付id查询退款记录
|
||||||
|
String paymentId = adapayCallbackRecord.getPaymentId();
|
||||||
|
List<PaymentReverseResponse> paymentReverseResponses = null;
|
||||||
|
try {
|
||||||
|
paymentReverseResponses = adapayService.queryPaymentReverse(paymentId, wechatAppId);
|
||||||
|
} catch (BaseAdaPayException e) {
|
||||||
|
logger.error("查询支付撤销对象发生异常", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
OrderDetailInfoVO.OrderRefundInfo refundInfo;
|
||||||
|
if (CollectionUtils.isNotEmpty(paymentReverseResponses)) {
|
||||||
|
for (PaymentReverseResponse reverseResponse : paymentReverseResponses) {
|
||||||
|
refundInfo = new OrderDetailInfoVO.OrderRefundInfo();
|
||||||
|
refundInfo.setReverseId(reverseResponse.getId());
|
||||||
|
refundInfo.setPaymentId(reverseResponse.getPayment_id());
|
||||||
|
refundInfo.setReverseAmt(reverseResponse.getReverse_amt());
|
||||||
|
LocalDateTime createdTime = DateUtils.timestampToDatetime(Long.parseLong(reverseResponse.getCreated_time()));
|
||||||
|
refundInfo.setCreatedTime(DateUtils.formatDateTime(createdTime));
|
||||||
|
LocalDateTime succeedTime = DateUtils.timestampToDatetime(Long.parseLong(reverseResponse.getSucceed_time()));
|
||||||
|
refundInfo.setSucceedTime(DateUtils.formatDateTime(succeedTime));
|
||||||
|
resultList.add(refundInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return resultList;
|
||||||
|
}
|
||||||
|
|
||||||
// uniApp 发送停止充电订阅消息
|
// uniApp 发送停止充电订阅消息
|
||||||
private void sendMsg(OrderBasicInfo orderBasicInfo) {
|
private void sendMsg(OrderBasicInfo orderBasicInfo) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user