Pay: 转账单实现

This commit is contained in:
jason
2023-09-29 13:50:06 +08:00
parent 437185cb1d
commit aa2f651124
20 changed files with 777 additions and 12 deletions

View File

@ -64,12 +64,12 @@ public class PayTransferRespDTO {
}
/**
* 创建【FAILURE】状态的转账返回
* 创建【CLOSED】状态的转账返回
*/
public static PayTransferRespDTO failureOf(String channelErrorCode, String channelErrorMsg,
String outTransferNo, Object rawData) {
public static PayTransferRespDTO closedOf(String channelErrorCode, String channelErrorMsg,
String outTransferNo, Object rawData) {
PayTransferRespDTO respDTO = new PayTransferRespDTO();
respDTO.status = PayTransferStatusRespEnum.FAILURE.getStatus();
respDTO.status = PayTransferStatusRespEnum.CLOSED.getStatus();
respDTO.channelErrorCode = channelErrorCode;
respDTO.channelErrorMsg = channelErrorMsg;
// 相对通用的字段

View File

@ -58,7 +58,6 @@ public class PayTransferUnifiedReqDTO {
/**
* 支付渠道的额外参数
*
*/
private Map<String, String> channelExtras;

View File

@ -51,7 +51,7 @@ public class AlipayTransferClient extends AbstractAlipayPayClient {
model.setProductCode("TRANS_ACCOUNT_NO_PWD"); // 销售产品码。单笔无密转账固定为 TRANS_ACCOUNT_NO_PWD
model.setBizScene("DIRECT_TRANSFER"); // 业务场景 单笔无密转账固定为 DIRECT_TRANSFER。
model.setBusinessParams(JsonUtils.toJsonString(reqDTO.getChannelExtras()));
PayTransferTypeEnum transferType = PayTransferTypeEnum.valueOf(reqDTO.getType());
PayTransferTypeEnum transferType = PayTransferTypeEnum.ofType(reqDTO.getType());
switch(transferType){
case WX_BALANCE :
case WALLET_BALANCE : {
@ -84,7 +84,7 @@ public class AlipayTransferClient extends AbstractAlipayPayClient {
if (ObjectUtils.equalsAny(response.getSubCode(), "SYSTEM_ERROR", "ACQ.SYSTEM_ERROR")) {
return PayTransferRespDTO.waitingOf(null, reqDTO.getOutTransferNo(), response);
}
return PayTransferRespDTO.failureOf(response.getSubCode(), response.getSubMsg(),
return PayTransferRespDTO.closedOf(response.getSubCode(), response.getSubMsg(),
reqDTO.getOutTransferNo(), response);
}
return PayTransferRespDTO.successOf(response.getOrderId(), parseTime(response.getTransDate()),

View File

@ -3,6 +3,8 @@ package cn.iocoder.yudao.framework.pay.core.enums.transfer;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Objects;
/**
* 渠道的转账状态枚举
*
@ -12,10 +14,28 @@ import lombok.Getter;
@AllArgsConstructor
public enum PayTransferStatusRespEnum {
WAITING(0, "等待转账"),
SUCCESS(10, "转账成功"),
FAILURE(20, "转账失败");
WAITING(0, "转账"),
/**
* TODO 转账到银行卡. 会有T+0 T+1 到账的请情况。 还未实现
*/
IN_PROGRESS(10, "转账进行中"),
SUCCESS(20, "转账成功"),
/**
* 转账关闭 (失败,或者其它情况)
*/
CLOSED(30, "转账关闭");
private final Integer status;
private final String name;
public static boolean isSuccess(Integer status) {
return Objects.equals(status, SUCCESS.getStatus());
}
public static boolean isClosed(Integer status) {
return Objects.equals(status, CLOSED.getStatus());
}
}

View File

@ -20,6 +20,9 @@ public enum PayTransferTypeEnum implements IntArrayValuable {
BANK_CARD(3, "银行卡"),
WALLET_BALANCE(4, "钱包余额");
public static final String ALIPAY_LOGON_ID = "ALIPAY_LOGON_ID";
public static final String ALIPAY_ACCOUNT_NAME = "ALIPAY_ACCOUNT_NAME";
private final Integer type;
private final String name;
@ -30,7 +33,7 @@ public enum PayTransferTypeEnum implements IntArrayValuable {
return ARRAYS;
}
public static PayTransferTypeEnum valueOf(Integer type) {
public static PayTransferTypeEnum ofType(Integer type) {
return ArrayUtil.firstMatch(item -> item.getType().equals(type), values());
}
}