puzhibing
2023-05-25 9a6ce5f7180a4e8c9e8dfd4ea5232052d9220b3a
修改司机端支付
5个文件已修改
277 ■■■■ 已修改文件
driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/api/DriverController.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/IDriverService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverServiceImpl.java 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/util/PayMoneyUtil.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/resources/application.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/api/DriverController.java
@@ -651,18 +651,22 @@
    @ApiOperation(value = "账户余额充值", tags = {"司机端-个人中心"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "充值金额", name = "amount", required = true, dataType = "double"),
            @ApiImplicitParam(value = "支付方式(1=微信,2=支付宝)", name = "type", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResponseWarpper balanceRecharge(Double amount){
    public ResponseWarpper balanceRecharge(Integer type, Double amount){
        if(null == amount){
            return ResponseWarpper.success(ResultUtil.paranErr("amount"));
        }
        if(null == type){
            return ResponseWarpper.success(ResultUtil.paranErr("type"));
        }
        try {
            Integer uid = driverService.getUserByRequest();
            if(null == uid){
                return ResponseWarpper.tokenErr();
            }
            ResultUtil resultUtil = driverService.balanceRecharge(uid, amount);
            ResultUtil resultUtil = driverService.balanceRecharge(uid, type, amount);
            return ResponseWarpper.success(resultUtil);
        }catch (Exception e){
            e.printStackTrace();
@@ -698,6 +702,32 @@
    }
    /**
     * 账户余额充值支付回调
     * @param request
     * @param response
     */
    @ResponseBody
    @PostMapping("/base/driver/balanceRechargeCallbackAli")
    public void balanceRechargeCallbackAli(HttpServletRequest request, HttpServletResponse response){
        try {
            Map<String, String> map = payMoneyUtil.alipayCallback(request);
            if(null != map){
                String out_trade_no = map.get("out_trade_no");
                String transaction_id = map.get("trade_no");
                String orderId = out_trade_no.substring(17);
                driverService.balanceRechargeCallback(out_trade_no, transaction_id);
                response.setContentType("text/html;charset=UTF-8");
                PrintWriter out;
                out = response.getWriter();
                out.println("success"); // 请不要修改或删除
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    @ResponseBody
    @PostMapping("/api/driver/queryPerformanceSummary")
//    @ServiceLog(name = "获取业绩排行", url = "/api/driver/queryPerformanceSummary")
driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/IDriverService.java
@@ -129,7 +129,7 @@
     * @return
     * @throws Exception
     */
    ResultUtil balanceRecharge(Integer uid, Double amount) throws Exception;
    ResultUtil balanceRecharge(Integer uid, Integer type, Double amount) throws Exception;
    /**
driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverServiceImpl.java
@@ -502,7 +502,7 @@
    @Override
    public PromotionWarpper queryPromotionQRCode(Integer uid) throws Exception {
        PromotionWarpper promotionWarpper = new PromotionWarpper();
        promotionWarpper.setUrl("http://121.37.15.157/share/driverShare/index.html?inviterId=" + uid);
        promotionWarpper.setUrl("http://139.9.238.199/share/driverShare/index.html?inviterId=" + uid);
        int user = appUserService.selectCount(new EntityWrapper<AppUser>().eq("inviterType", 2).eq("inviterId", uid).eq("status", 1));
        int driver = this.selectCount(new EntityWrapper<Driver>().eq("inviterType", 2).eq("inviterId", uid).eq("approvalStatus", 2).eq("status", 1));
        promotionWarpper.setTotal(user + driver);
@@ -679,7 +679,7 @@
    @Override
    public ResultUtil balanceRecharge(Integer uid, Double amount) throws Exception {
    public ResultUtil balanceRecharge(Integer uid, Integer type, Double amount) throws Exception {
        Driver driver = this.selectById(uid);
        //调起微信
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
@@ -695,82 +695,163 @@
        rechargeRecord.setAgentId(driver.getAgentId());
        rechargeRecordService.insert(rechargeRecord);
        ResultUtil weixinpay = payMoneyUtil.weixinpay("余额充值", "", out_trade_no, amount.toString(), "/base/driver/balanceRechargeCallback", "APP");
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    int num = 1;
                    int wait = 0;
                    while (num <= 10){
                        int min = 5000;
                        wait += (min * num);
                        RechargeRecord rechargeRecord1 = rechargeRecordService.selectOne(new EntityWrapper<RechargeRecord>().eq("code", out_trade_no));
                        if(rechargeRecord1.getPayStatus() != 1){
                            return;
                        }
                        /**
                         * SUCCESS--支付成功
                         * REFUND--转入退款
                         * NOTPAY--未支付
                         * CLOSED--已关闭
                         * REVOKED--已撤销(刷卡支付)
                         * USERPAYING--用户支付中
                         * PAYERROR--支付失败(其他原因,如银行返回失败)
                         * ACCEPT--已接收,等待扣款
                         */
                        ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(out_trade_no, "");
                        if(resultUtil.getCode() == 200){
                            Map<String, String> map = resultUtil.getData();
                            String trade_type = map.get("trade_type");
                            String trade_state = map.get("trade_state");
                            String transaction_id = map.get("transaction_id");
                            if("REFUND".equals(trade_state) || "NOTPAY".equals(trade_state) || "CLOSED".equals(trade_state) || "REVOKED".equals(trade_state) || "PAYERROR".equals(trade_state)){
                                rechargeRecordService.deleteById(rechargeRecord1.getId());
        if(type == 1){
            ResultUtil weixinpay = payMoneyUtil.weixinpay("余额充值", "", out_trade_no, amount.toString(), "/base/driver/balanceRechargeCallback", "APP");
            if(weixinpay.getCode() != 200){
                return weixinpay;
            }
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        int num = 1;
                        int wait = 0;
                        while (num <= 10){
                            int min = 5000;
                            wait += (min * num);
                            RechargeRecord rechargeRecord1 = rechargeRecordService.selectOne(new EntityWrapper<RechargeRecord>().eq("code", out_trade_no));
                            if(rechargeRecord1.getPayStatus() != 1){
                                return;
                            }
                            if("SUCCESS".equals(trade_state)){
                                Driver driver1 = DriverServiceImpl.this.selectById(uid);
                                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                accountChangeDetail.setUserType(2);
                                accountChangeDetail.setUserId(uid);
                                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                accountChangeDetail.setChangeType(3);
                                accountChangeDetail.setType(1);
                                accountChangeDetail.setCreateTime(new Date());
                                accountChangeDetail.setExplain("余额充值");
                                accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                driver1.setBalance(driver1.getBalance() + amount);
                                accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                DriverServiceImpl.this.updateById(driver1);
                                accountChangeDetailService.saveData(accountChangeDetail);
                                rechargeRecord1.setPayTime(new Date());
                                rechargeRecord1.setPayStatus(2);
                                rechargeRecord1.setOrderNumber(transaction_id);
                                rechargeRecordService.updateById(rechargeRecord1);
                                return;
                            }
                            if("USERPAYING".equals(trade_state) || "ACCEPT".equals(trade_state)){
                            /**
                             * SUCCESS--支付成功
                             * REFUND--转入退款
                             * NOTPAY--未支付
                             * CLOSED--已关闭
                             * REVOKED--已撤销(刷卡支付)
                             * USERPAYING--用户支付中
                             * PAYERROR--支付失败(其他原因,如银行返回失败)
                             * ACCEPT--已接收,等待扣款
                             */
                            ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(out_trade_no, "");
                            if(resultUtil.getCode() == 200){
                                Map<String, String> map = resultUtil.getData();
                                String trade_type = map.get("trade_type");
                                String trade_state = map.get("trade_state");
                                String transaction_id = map.get("transaction_id");
                                if("REFUND".equals(trade_state) || "NOTPAY".equals(trade_state) || "CLOSED".equals(trade_state) || "REVOKED".equals(trade_state) || "PAYERROR".equals(trade_state)){
                                    rechargeRecordService.deleteById(rechargeRecord1.getId());
                                    return;
                                }
                                if("SUCCESS".equals(trade_state)){
                                    Driver driver1 = DriverServiceImpl.this.selectById(uid);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(uid);
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setChangeType(3);
                                    accountChangeDetail.setType(1);
                                    accountChangeDetail.setCreateTime(new Date());
                                    accountChangeDetail.setExplain("余额充值");
                                    accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                    driver1.setBalance(driver1.getBalance() + amount);
                                    accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                    DriverServiceImpl.this.updateById(driver1);
                                    accountChangeDetailService.saveData(accountChangeDetail);
                                    rechargeRecord1.setPayTime(new Date());
                                    rechargeRecord1.setPayStatus(2);
                                    rechargeRecord1.setOrderNumber(transaction_id);
                                    rechargeRecordService.updateById(rechargeRecord1);
                                    return;
                                }
                                if("USERPAYING".equals(trade_state) || "ACCEPT".equals(trade_state)){
                                    Thread.sleep(wait);
                                    num++;
                                }
                            }else{
                                Thread.sleep(wait);
                                num++;
                            }
                        }else{
                            Thread.sleep(wait);
                            num++;
                            if(10 == num){
                                rechargeRecordService.deleteById(rechargeRecord1.getId());
                            }
                        }
                        if(10 == num){
                            rechargeRecordService.deleteById(rechargeRecord1.getId());
                        }
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
            }).start();
            return weixinpay;
        }
        if(type == 2){
            ResultUtil<String> alipay = payMoneyUtil.alipay("余额充值", "余额充值", out_trade_no, amount.toString(), "/base/driver/balanceRechargeCallbackAli");
            if(alipay.getCode() != 200){
                return alipay;
            }
        }).start();
        return weixinpay;
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        int num = 1;
                        int wait = 0;
                        while (num <= 10){
                            int min = 5000;
                            wait += (min * num);
                            RechargeRecord rechargeRecord1 = rechargeRecordService.selectOne(new EntityWrapper<RechargeRecord>().eq("code", out_trade_no));
                            if(rechargeRecord1.getPayStatus() != 1){
                                return;
                            }
                            /**
                             * 交易状态:
                             * WAIT_BUYER_PAY(交易创建,等待买家付款)、
                             * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、
                             * TRADE_SUCCESS(交易支付成功)、
                             * TRADE_FINISHED(交易结束,不可退款)
                             */
                            ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(out_trade_no);
                            if(resultUtil.getCode() == 200){
                                Map<String, String> map = resultUtil.getData();
                                String tradeStatus = map.get("tradeStatus");
                                String tradeNo = map.get("tradeNo");
                                if("TRADE_CLOSED".equals(tradeStatus) || "TRADE_FINISHED".equals(tradeStatus)){
                                    rechargeRecordService.deleteById(rechargeRecord1.getId());
                                    return;
                                }
                                if("TRADE_SUCCESS".equals(tradeStatus)){
                                    Driver driver1 = DriverServiceImpl.this.selectById(uid);
                                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                    accountChangeDetail.setUserType(2);
                                    accountChangeDetail.setUserId(uid);
                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                                    accountChangeDetail.setChangeType(3);
                                    accountChangeDetail.setType(1);
                                    accountChangeDetail.setCreateTime(new Date());
                                    accountChangeDetail.setExplain("余额充值");
                                    accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                    driver1.setBalance(driver1.getBalance() + amount);
                                    accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                    DriverServiceImpl.this.updateById(driver1);
                                    accountChangeDetailService.saveData(accountChangeDetail);
                                    rechargeRecord1.setPayTime(new Date());
                                    rechargeRecord1.setPayStatus(2);
                                    rechargeRecord1.setOrderNumber(tradeNo);
                                    rechargeRecordService.updateById(rechargeRecord1);
                                    return;
                                }
                                if("WAIT_BUYER_PAY".equals(tradeStatus)){
                                    Thread.sleep(wait);
                                    num++;
                                }
                            }else{
                                Thread.sleep(wait);
                                num++;
                            }
                            if(10 == num){
                                rechargeRecordService.deleteById(rechargeRecord1.getId());
                            }
                        }
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
            }).start();
            return alipay;
        }
        return ResultUtil.success();
    }
driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/util/PayMoneyUtil.java
@@ -87,7 +87,7 @@
    /**
     * 支付宝支付
     */
    public ResultUtil alipay(String body, String subject, String outTradeNo, String amount, String notifyUrl){
    public ResultUtil<String> alipay(String body, String subject, String outTradeNo, String amount, String notifyUrl){
        //实例化客户端
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipayPublicKey, "RSA2");
        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
@@ -105,10 +105,8 @@
        try {
            //这里和普通的接口调用不同,使用的是sdkExecute
            AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
            Map<String, String> map = new HashMap<>();
            map.put("orderString", response.getBody());
            System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
            return ResultUtil.success(map);
            System.out.println(response.getBody());//就是orderString 可以直接给客户端请求,无需再做处理。
            return ResultUtil.success(response.getBody());
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
@@ -199,7 +197,7 @@
     * @return
     * @throws Exception
     */
    public ResultUtil queryALIOrder(String out_trade_no) throws Exception{
    public ResultUtil<Map<String, String>> queryALIOrder(String out_trade_no) throws Exception{
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",aliAppid, appPrivateKey,"json","UTF-8", alipay_public_key,"RSA2");
        AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
        request.setBizContent("{" +
@@ -208,7 +206,11 @@
        AlipayTradeQueryResponse response = alipayClient.execute(request);
        if(response.isSuccess()){
            String tradeStatus = response.getTradeStatus();//交易状态:WAIT_BUYER_PAY(交易创建,等待买家付款)、TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、TRADE_SUCCESS(交易支付成功)、TRADE_FINISHED(交易结束,不可退款)
            return ResultUtil.success(tradeStatus);
            String tradeNo = response.getTradeNo();
            Map<String, String> map = new HashMap<>();
            map.put("tradeStatus", tradeStatus);
            map.put("tradeNo", tradeNo);
            return ResultUtil.success(map);
        } else {
            return ResultUtil.error(response.getMsg());
        }
driver/guns-admin/src/main/resources/application.yml
@@ -88,10 +88,10 @@
---
alipay:
  appid: 111  #应用程序唯一标识
  appPrivateKey: 111 #开发者应用私钥
  alipayPublicKey: 111 #应用公钥
  alipay_public_key: 111 #支付宝公钥
  appid: 2021003194663664  #应用程序唯一标识
  appPrivateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCK0Y+UltYRXULYxSfcayIxWw86/xqm93q7ymLpp1+XfrhZdgT81AbY1/FNPmR+TNV56W6Lt3D4AoInpby1eN+frfULyyFxDW8BcahsYm75mpaiJFzdogSUs0BecHK6AxgWrskPRa0hCy7RW6CsXx3n2N0mzfj5fibvcU9GrYz8AxE9GfB5OVAqNSBa7u/win1YttqZVSaa1Wn49omUwIG66efAymTRUwo2G8PGhWAzMSAoj7LufCQtAxsXXI6cmcDYSY7qK09dT7H7+kIXjqHqFjzHdV7xr9uBqUjewdQabYraXfECzXHjigaTHrXWmq9Et7QA5al2NT1OXg4Uz2cjAgMBAAECggEAG13k6G40FYhFPWbgzNtyCjjhb8gLAQ+Y6pyjk1yjw8H/peNWaGGEWAt6TrgWJ7AOBdK3MGQhqUMVVaue4EfMDjbFMGYDWb5EPAykH3noVtzbBWwVwrvGG2qbLgMNGw6xGQesK46Y6wLBYBSoQFMgGizurE++3bC5DEtSTaS5PpUuwReUMj8exjklQhK1rzNFybezSP0qES781Jf+pgdChFTrYFvMbj5T05QkUk94Cbo5gT0wdWja1CSsvb7I6gb9+QF4/YmGp8DAWitJFNXYuvuq8RcgIod4JY3QDq4vwcy9Wk2Fm4vJd2c7yIgvVMiwPHTOCwXEw1gkvKO1dONvgQKBgQD71pXKYqM506/UtPtF5HOaoXJuRYIMuX0+OdHVFNizqmJeKykaIjhxWx83Zf1r+43fPpTSNDoJIQzlzfe0dRtilCWM3E05QIiAZOCJPCxdMLQjpAk7vReurQBcjLgIFQj5bV/76NvfU78jwiyiLr3HW0LXkr99MIdQ8s4j7tZqqwKBgQCNHNca9MHRHrmx03IpxYgfzarh7l3mFDTck8YCDVdjUENh2fdFGHYExACr87clBBNq2f73L1++N5AbjzqONcMBN/Ix8etRh6DUzT17WeYzRWwgLV4p/R9VoLUtEEovQEVbjMveaaYFQzdnp8/XKdgND473YY0Nf5koBcwbwFj1aQKBgFXEz18OGOko30liGfHDzFttgLttkM0knzMCHiSj5OnLrZTEvkrYPMDed9M2OQj9s2PEvIqanuldCDd73lDnUVxReDhxDxvgjpyrvoz+oV1bqP46b6qYy+gBo43hnwuhnlzUk0wIEloM+5wCFZFmudubiThCElVgobU//FTgksXhAoGAZGVneSs4FfNZRHZem++I2K+360RvE/m+XkzYrK8XRHZfamfsMAGmPd/BZpVf8PsEYZo1d2ICKVBYu/LcQz9mvSAztWsb9Aad26kmG/Oq/0FeG0qL2y3WtFJBdI1JanK8pdT3WwcpckcPTTUsfzWrHCe8nK6P71GgAsSVIg1ofTkCgYEA7B04BBRZ3HKnSnXBWMEhW5Tk2H2mLn3Dp4vj+rsNzDBiyJMGjmmWCxyfhR9E5TKTSSiYL36aC4Ee5RXOG2bIGFhWNSX8e97X2LwPzm1L2HPML/V6nOdhm9RBqASlBayajNQWQ7xiUViATn1v/XZeY0HKOUCLsfD5GhoRIXMgAz0= #开发者应用私钥
  alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAitGPlJbWEV1C2MUn3GsiMVsPOv8apvd6u8pi6adfl364WXYE/NQG2NfxTT5kfkzVeelui7dw+AKCJ6W8tXjfn631C8shcQ1vAXGobGJu+ZqWoiRc3aIElLNAXnByugMYFq7JD0WtIQsu0VugrF8d59jdJs34+X4m73FPRq2M/AMRPRnweTlQKjUgWu7v8Ip9WLbamVUmmtVp+PaJlMCBuunnwMpk0VMKNhvDxoVgMzEgKI+y7nwkLQMbF1yOnJnA2EmO6itPXU+x+/pCF46h6hY8x3Ve8a/bgalI3sHUGm2K2l3xAs1x44oGkx611pqvRLe0AOWpdjU9Tl4OFM9nIwIDAQAB #应用公钥
  alipay_public_key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAglHWHEp1X1ZmwlGGEsBS7T4/5CmC3BI1L4nloVUa205TqhUrrHBPmxfjwH11iX3IXL654dmbArtFWAdzMEp54i9qWBnSYcUvj/HUwPwZyQLxiB3aTsS6ZZnis60XWiouFq4Z1ChPiyCLhpL3eRTaEtVJl0+N/GFy38y04GRslyufPO8CBz3M8twXuYFHWcYgI4txmLXgDdP1bPBnAZrqQW+GvuoJNrUMEaNhtIrQUrbvZYzNDWZDLO17pUjseHI+Kyq5zjBh5ocLLCJcbdPSigYzzamxMgt10jEjqIbmK8ytXt6gVR7/1gYBnX1FrvHY7j9uWYWllfi4Kd5Mg+nEqwIDAQAB #支付宝公钥
---