Browse Source

商户提现

qxy 1 month ago
parent
commit
3e78e3b3f2

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

@@ -140,7 +140,7 @@ public class StoreIncomeDetailsRecordServiceImpl extends ServiceImpl<StoreIncome
                 }
                 StoreAliPayLog pay = new StoreAliPayLog();
                 if(StringUtils.isNotBlank(storeUser.getAlipayAccount())){
-                    pay = aliApi.pay(storeUser.getName(), storeUser.getIdCard(), storeUser.getAlipayAccount(), divide.toString());
+                    pay = aliApi.payAccount(storeUser.getName(), storeUser.getIdCard(), storeUser.getAlipayAccount(), divide.toString(), storeUser.getPhone());
                 }else{
                     pay = aliApi.pay(storeUser.getName(), storeUser.getIdCard(), storeUser.getPhone(), divide.toString());
                 }

+ 78 - 0
alien-store/src/main/java/shop/alien/store/util/ali/AliApi.java

@@ -311,6 +311,84 @@ public class AliApi {
     }
 
     /**
+     * 单笔转账接口
+     *
+     * @param name   收款人姓名
+     * @param idCard 收款人身份证号
+     * @param account  收款人支付宝账号
+     * @param money  收款金额
+     * @param phone  收款金额
+     * @return 是否成功
+     */
+    public StoreAliPayLog payAccount(String name, String idCard, String account, String money, String phone) {
+        try {
+            log.info("AliPayConfig.pay?name={}&idCard={}&phone={}&money={}", name, idCard, account, money);
+            // 初始化SDK
+            AlipayClient alipayClient = new DefaultAlipayClient(setAlipayConfig(null));
+            // 构造请求参数以调用接口
+            AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
+            AlipayFundTransUniTransferModel model = new AlipayFundTransUniTransferModel();
+            // 设置商家侧唯一订单号
+            model.setOutBizNo("pay_" + createOrderNo());
+            // 设置订单总金额
+            model.setTransAmount(money);
+            // 设置描述特定的业务场景
+            model.setBizScene("DIRECT_TRANSFER");
+            // 设置业务产品码
+            model.setProductCode("TRANS_ACCOUNT_NO_PWD");
+            // 设置转账业务的标题
+            model.setOrderTitle("商家转账");
+            // 设置收款方信息
+            Participant payeeInfo = new Participant();
+            payeeInfo.setCertType("IDENTITY_CARD");
+            payeeInfo.setCertNo(idCard);
+            payeeInfo.setIdentityType("ALIPAY_LOGON_ID");
+            payeeInfo.setIdentity(account);
+            payeeInfo.setName(name);
+            model.setPayeeInfo(payeeInfo);
+            // 设置业务备注
+            model.setRemark("爱丽恩提现业务");
+            // 设置转账业务请求的扩展参数
+            model.setBusinessParams("{\"payer_show_name_use_alias\":\"true\"}");
+            request.setBizModel(model);
+            AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request);
+            if (response.isSuccess()) {
+                //查询用户
+                LambdaQueryWrapper<StoreUser> queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(StoreUser::getIdCard, idCard);
+                queryWrapper.eq(StoreUser::getPhone, phone);
+                queryWrapper.eq(StoreUser::getName, name);
+                StoreUser one = storeUserService.getOne(queryWrapper);
+                JSONObject jsonObject = JSONObject.parseObject(response.getBody()).getJSONObject("alipay_fund_trans_uni_transfer_response");
+                StoreAliPayLog storeAliPayLog = new StoreAliPayLog();
+                storeAliPayLog.setTransAmount(money);
+                storeAliPayLog.setOutBizNo(jsonObject.getString("out_biz_no"));
+                storeAliPayLog.setOrderId(jsonObject.getString("order_id"));
+                storeAliPayLog.setPayFundOrderId(jsonObject.getString("pay_fund_order_id"));
+                storeAliPayLog.setTransDate(jsonObject.getString("trans_date"));
+                if (null == one) {
+                    LambdaQueryWrapper<LifeUser> userQueryWrapper = new LambdaQueryWrapper<>();
+                    userQueryWrapper.eq(LifeUser::getIdCard, idCard);
+                    userQueryWrapper.eq(LifeUser::getUserPhone, phone);
+                    userQueryWrapper.eq(LifeUser::getRealName, name);
+                    LifeUser userOne = lifeUserService.getOne(userQueryWrapper);
+                    storeAliPayLog.setStoreUserId(userOne.getId());
+                } else {
+                    storeAliPayLog.setStoreUserId(one.getId());
+
+                }
+                storeAliPayLogService.save(storeAliPayLog);
+                return storeAliPayLog;
+            } else {
+                return null;
+            }
+        } catch (AlipayApiException e) {
+            log.error("AliPayConfig.pay ERROR Msg={}", e.getErrMsg());
+            return null;
+        }
+    }
+
+    /**
      * 银行卡核验
      *
      * @param name     姓名