mirror of
https://gitee.com/dromara/dax-pay.git
synced 2025-09-04 11:37:37 +00:00
fix 微信分账方接口调用不成功
This commit is contained in:
@@ -8,8 +8,8 @@
|
||||
- [ ] 支付/退款/转账商户订单号根据AppId做隔离
|
||||
- [ ] 云闪付支付通道对接
|
||||
- [ ] 分账功能
|
||||
- [ ] 分账接收方配置
|
||||
- [ ] 分账组管理
|
||||
- [x] 分账接收方配置
|
||||
- [x] 分账组管理
|
||||
- [ ] 自动分账管理
|
||||
- [ ] 分账单管理
|
||||
- [ ] 网关配套移动端开发
|
||||
|
@@ -5,6 +5,7 @@ import org.dromara.daxpay.channel.alipay.entity.config.AliPayConfig;
|
||||
import org.dromara.daxpay.channel.alipay.service.config.AliPayConfigService;
|
||||
import org.dromara.daxpay.core.enums.TransferPayeeTypeEnum;
|
||||
import org.dromara.daxpay.core.enums.TransferStatusEnum;
|
||||
import org.dromara.daxpay.core.exception.OperationFailException;
|
||||
import org.dromara.daxpay.core.exception.TradeFailException;
|
||||
import org.dromara.daxpay.core.util.PayUtil;
|
||||
import org.dromara.daxpay.service.bo.trade.TransferResultBo;
|
||||
@@ -78,8 +79,8 @@ public class AliPayTransferService {
|
||||
// 收款人姓名
|
||||
payeeInfo.setName(order.getPayeeName());
|
||||
// 收款人类型
|
||||
String identityType = TransferPayeeTypeEnum.findByCode(order.getPayeeType())
|
||||
.getOutCode();
|
||||
TransferPayeeTypeEnum payeeType = TransferPayeeTypeEnum.findByCode(order.getPayeeType());
|
||||
String identityType = this.getIdentityType(payeeType);
|
||||
payeeInfo.setIdentityType(identityType);
|
||||
model.setPayeeInfo(payeeInfo);
|
||||
model.setRemark(order.getReason());
|
||||
@@ -100,4 +101,23 @@ public class AliPayTransferService {
|
||||
}
|
||||
return transferInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public String getIdentityType(TransferPayeeTypeEnum payeeType){
|
||||
switch (payeeType){
|
||||
// 以2088开头的纯16位数字
|
||||
case USER_ID -> {
|
||||
return "ALIPAY_USER_ID";
|
||||
}
|
||||
case OPEN_ID -> {
|
||||
return "ALIPAY_OPEN_ID";
|
||||
}
|
||||
case LOGIN_NAME -> {
|
||||
return "ALIPAY_LOGON_ID";
|
||||
}
|
||||
default -> throw new OperationFailException("不支持的收款账号类型");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -41,7 +41,7 @@ public class AliPayTransferStrategy extends AbsTransferStrategy {
|
||||
public void doValidateParam(TransferParam transferParam) {
|
||||
// 转账接收方类型校验
|
||||
String payeeType = transferParam.getPayeeType();
|
||||
if (!List.of(ALI_USER_ID.getCode(), ALI_OPEN_ID.getCode(), ALI_LOGIN_NAME.getCode()).contains(payeeType)){
|
||||
if (!List.of(USER_ID.getCode(), OPEN_ID.getCode(), LOGIN_NAME.getCode()).contains(payeeType)){
|
||||
throw new ValidationFailedException("支付宝不支持该类型收款人");
|
||||
}
|
||||
}
|
||||
|
@@ -17,7 +17,6 @@ import org.dromara.daxpay.core.exception.OperationFailException;
|
||||
import org.dromara.daxpay.service.entity.allocation.receiver.AllocReceiver;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -50,13 +49,12 @@ public class WechatPayAllocReceiverV2Service {
|
||||
|
||||
ProfitSharingReceiverRequest request = new ProfitSharingReceiverRequest();
|
||||
Receiver receiver = new Receiver(receiverType,allocReceiver.getReceiverAccount(),allocReceiver.getReceiverName(),getRelationType(allocReceiver.getRelationType()),allocReceiver.getRelationName());
|
||||
List<Receiver> receivers = List.of(receiver);
|
||||
request.setReceiver(GSON.toJson(receivers));
|
||||
request.setReceiver(GSON.toJson(receiver));
|
||||
|
||||
try {
|
||||
sharingService.addReceiver(request);
|
||||
} catch (WxPayException e) {
|
||||
throw new OperationFailException("微信添加分账方V3失败: "+e.getMessage());
|
||||
throw new OperationFailException("微信添加分账方V2失败: "+e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,12 +70,11 @@ public class WechatPayAllocReceiverV2Service {
|
||||
|
||||
ProfitSharingReceiverRequest request = new ProfitSharingReceiverRequest();
|
||||
Receiver receiver = new Receiver(receiverType,allocReceiver.getReceiverAccount());
|
||||
List<Receiver> receivers = List.of(receiver);
|
||||
request.setReceiver(GSON.toJson(receivers));
|
||||
request.setReceiver(GSON.toJson(receiver));
|
||||
try {
|
||||
sharingService.removeReceiver(request);
|
||||
} catch (WxPayException e) {
|
||||
throw new OperationFailException("微信添加分账方V3失败: "+e.getMessage());
|
||||
throw new OperationFailException("微信删除分账方V2失败: "+e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -42,6 +42,7 @@ public class WechatPayAllocReceiverV3Service {
|
||||
ProfitSharingService sharingService = wxPayService.getProfitSharingService();
|
||||
|
||||
ProfitSharingReceiverV3Request request = new ProfitSharingReceiverV3Request();
|
||||
request.setAppid(config.getWxAppId());
|
||||
request.setType(receiverType);
|
||||
request.setAccount(allocReceiver.getReceiverAccount());
|
||||
request.setName(allocReceiver.getReceiverName());
|
||||
@@ -65,6 +66,7 @@ public class WechatPayAllocReceiverV3Service {
|
||||
ProfitSharingService sharingService = wxPayService.getProfitSharingService();
|
||||
|
||||
ProfitSharingReceiverV3Request request = new ProfitSharingReceiverV3Request();
|
||||
request.setAppid(config.getAppId());
|
||||
request.setType(receiverType);
|
||||
request.setAccount(allocReceiver.getReceiverAccount());
|
||||
request.setName(allocReceiver.getReceiverName());
|
||||
|
@@ -50,7 +50,7 @@ public class WechatTransferStrategy extends AbsTransferStrategy {
|
||||
public void doValidateParam(TransferParam transferParam) {
|
||||
// 转账接收方类型校验
|
||||
String payeeType = transferParam.getPayeeType();
|
||||
if (!Objects.equals(TransferPayeeTypeEnum.WX_PERSONAL.getCode(), payeeType)){
|
||||
if (!Objects.equals(TransferPayeeTypeEnum.OPEN_ID.getCode(), payeeType)){
|
||||
throw new ValidationFailedException("微信不支持该类型收款人");
|
||||
}
|
||||
// 收款方真实姓名。支持标准RSA算法和国密算法,公钥由微信侧提供
|
||||
|
@@ -15,19 +15,15 @@ import java.util.Arrays;
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum TransferPayeeTypeEnum {
|
||||
/** 微信 个人 */
|
||||
WX_PERSONAL("wx_personal","openid", "OpenId(微信)"),
|
||||
/** 支付宝 userId 以2088开头的纯16位数字 */
|
||||
ALI_USER_ID("ali_user_id","ALIPAY_USER_ID", "用户ID(支付宝)"),
|
||||
/** 支付宝 openId */
|
||||
ALI_OPEN_ID("ali_open_id","ALIPAY_OPEN_ID", "OpenId(支付宝)"),
|
||||
/** 支付宝 账号 支持邮箱和手机号格式 */
|
||||
ALI_LOGIN_NAME("ali_login_name","ALIPAY_LOGON_ID", "账号(支付宝)");
|
||||
/** userId */
|
||||
USER_ID("ali_user_id", "用户ID"),
|
||||
/** openId */
|
||||
OPEN_ID("ali_open_id", "OpenId"),
|
||||
/** 用户账号 */
|
||||
LOGIN_NAME("ali_login_name", "用户账号");
|
||||
|
||||
/** 编码 */
|
||||
private final String code;
|
||||
/** 外部编码, 三方支付系统使用的编码 */
|
||||
private final String outCode;
|
||||
/** 名称 */
|
||||
private final String name;
|
||||
|
||||
|
Reference in New Issue
Block a user