Quellcode durchsuchen

bugfix:提现到商户支付宝

lyx vor 4 Wochen
Ursprung
Commit
380e0f69a4

+ 2 - 12
alien-store/src/main/java/shop/alien/store/service/impl/StoreIncomeDetailsRecordServiceImpl.java

@@ -138,12 +138,7 @@ public class StoreIncomeDetailsRecordServiceImpl extends ServiceImpl<StoreIncome
                 if (Double.parseDouble(divide.toString()) < 0.1) {
                     return R.fail("金额不能小于0.1元");
                 }
-                StoreAliPayLog pay = new StoreAliPayLog();
-                if (StringUtils.isNotBlank(storeUser.getAlipayAccount())) {
-                    pay = aliApi.pay(storeUser.getName(), storeUser.getIdCard(), storeUser.getAlipayAccount(), divide.toString());
-                } else {
-                    pay = aliApi.payAccount(storeUser.getName(), storeUser.getIdCard(), null, divide.toString(), storeUser.getPhone());
-                }
+                StoreAliPayLog pay = aliApi.payAccount(storeUser.getName(), storeUser.getIdCard(), storeUser.getAlipayAccount(), divide.toString(), storeUser.getPhone());
                 //增加提现记录
                 StoreCashOutRecord storeCashOutRecord = new StoreCashOutRecord();
                 if (null == pay) {
@@ -265,12 +260,7 @@ public class StoreIncomeDetailsRecordServiceImpl extends ServiceImpl<StoreIncome
                 if (Double.parseDouble(divide.toString()) < 0.10) {
                     return "金额不能小于0.1元";
                 }
-                StoreAliPayLog pay = new StoreAliPayLog();
-                if (StringUtils.isNotBlank(storeUser.getAlipayAccount())) {
-                    pay = aliApi.pay(storeUser.getName(), storeUser.getIdCard(), storeUser.getAlipayAccount(), divide.toString());
-                } else {
-                    pay = aliApi.payAccount(storeUser.getName(), storeUser.getIdCard(), null, divide.toString(), storeUser.getPhone());
-                }
+                StoreAliPayLog pay = aliApi.payAccount(storeUser.getName(), storeUser.getIdCard(), storeUser.getAlipayAccount(), divide.toString(), storeUser.getPhone());
                 if (null != pay) {
                     // 提现成功,更新提现申请相关状态
                     storeCashOutRecord.setOrderNo(pay.getOutBizNo());

+ 18 - 5
alien-store/src/main/java/shop/alien/store/util/ali/AliApi.java

@@ -22,6 +22,7 @@ import shop.alien.store.service.LifeUserService;
 import shop.alien.store.service.StoreAliPayErrorLogService;
 import shop.alien.store.service.StoreAliPayLogService;
 import shop.alien.store.service.StoreUserService;
+import shop.alien.store.util.ali.ocr.OcrStrategyFactory;
 import shop.alien.util.common.RandomCreateUtil;
 import shop.alien.util.common.UniqueRandomNumGenerator;
 import shop.alien.util.common.UrlEncode;
@@ -49,6 +50,8 @@ public class AliApi {
     private final LifeUserService lifeUserService;
 
     private final StoreAliPayErrorLogService storeAliPayErrorLogService;
+    
+    private final OcrStrategyFactory ocrStrategyFactory;
 
     /**
      * 商家端appId
@@ -346,15 +349,25 @@ public class AliApi {
             model.setOrderTitle("商家转账");
             // 设置收款方信息
             Participant payeeInfo = new Participant();
-            payeeInfo.setCertType("IDENTITY_CARD");
-            payeeInfo.setCertNo(idCard);
-            payeeInfo.setIdentityType("ALIPAY_LOGON_ID");
-            if(account!=null){
+            // 智能判断收款方类型
+            if (account.startsWith("2088") && account.length() == 16) {
+                // 如果是商户ID格式(2088开头的16位数字)
+                payeeInfo.setIdentityType("ALIPAY_USER_ID");
+                log.info("检测到收款方为商户ID: {}", account);
+//                payeeInfo.setName("爱丽恩严(大连)商务科技有限公司");
+            } else {
+                // 默认为支付宝账号(手机号或邮箱)
+                payeeInfo.setIdentityType("ALIPAY_LOGON_ID");
+                log.info("检测到收款方为支付宝账号: {}", account);
+                payeeInfo.setCertType("IDENTITY_CARD");
+                payeeInfo.setCertNo(idCard);
+                payeeInfo.setName(name);
+            }
+            if(null != account){
                 payeeInfo.setIdentity(account);
             }else{
                 payeeInfo.setIdentity(phone);
             }
-            payeeInfo.setName(name);
             model.setPayeeInfo(payeeInfo);
             // 设置业务备注
             model.setRemark("爱丽恩提现业务");