mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 19:15:35 +08:00
查询退款对象
This commit is contained in:
@@ -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.CreateAdaPaymentParam;
|
||||
import com.jsowell.adapay.common.DivMember;
|
||||
import com.jsowell.adapay.common.RefundInfo;
|
||||
import com.jsowell.adapay.config.AbstractAdapayConfig;
|
||||
import com.jsowell.adapay.dto.*;
|
||||
import com.jsowell.adapay.factory.AdapayConfigFactory;
|
||||
@@ -1030,6 +1031,23 @@ public class AdapayService {
|
||||
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.web.BalanceDeductionAmountVO;
|
||||
import com.jsowell.pile.vo.web.BillingTemplateVO;
|
||||
import com.jsowell.pile.vo.web.OrderDetailInfoVO;
|
||||
import com.jsowell.pile.vo.web.PileStationVO;
|
||||
import com.jsowell.wxpay.service.WxAppletRemoteService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
@@ -156,6 +157,11 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
||||
*/
|
||||
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.vo.uniapp.MemberVO;
|
||||
import com.jsowell.pile.vo.web.BalanceDeductionAmountVO;
|
||||
import com.jsowell.pile.vo.web.OrderDetailInfoVO;
|
||||
import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO;
|
||||
import com.jsowell.wxpay.dto.WechatSendMsgDTO;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.cglib.beans.BeanMap;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.ParseException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
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.config.AbstractAdapayConfig;
|
||||
import com.jsowell.adapay.factory.AdapayConfigFactory;
|
||||
import com.jsowell.adapay.response.PaymentReverseResponse;
|
||||
import com.jsowell.adapay.response.RefundResponse;
|
||||
import com.jsowell.adapay.vo.PaymentInfo;
|
||||
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.exception.BusinessException;
|
||||
import com.jsowell.common.util.AdapayUtil;
|
||||
import com.jsowell.common.util.DateUtils;
|
||||
import com.jsowell.common.util.StringUtils;
|
||||
import com.jsowell.common.util.id.SnowflakeIdWorker;
|
||||
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.vo.uniapp.MemberVO;
|
||||
import com.jsowell.pile.vo.web.BalanceDeductionAmountVO;
|
||||
import com.jsowell.pile.vo.web.OrderDetailInfoVO;
|
||||
import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO;
|
||||
import com.jsowell.wxpay.dto.WechatSendMsgDTO;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.cglib.beans.BeanMap;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.ParseException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
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 发送停止充电订阅消息
|
||||
private void sendMsg(OrderBasicInfo orderBasicInfo) {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user