| | |
| | | @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(); |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 账户余额充值支付回调 |
| | | * @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") |
| | |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | ResultUtil balanceRecharge(Integer uid, Double amount) throws Exception; |
| | | ResultUtil balanceRecharge(Integer uid, Integer type, Double amount) throws Exception; |
| | | |
| | | |
| | | /** |
| | |
| | | @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); |
| | |
| | | |
| | | |
| | | @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"); |
| | |
| | | rechargeRecord.setAgentId(driver.getAgentId()); |
| | | rechargeRecordService.insert(rechargeRecord); |
| | | |
| | | |
| | | 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() { |
| | |
| | | }).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; |
| | | } |
| | | 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(); |
| | | } |
| | | |
| | | |
| | | /** |
| | |
| | | /** |
| | | * 支付宝支付 |
| | | */ |
| | | 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 |
| | |
| | | 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(); |
| | | } |
| | |
| | | * @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("{" + |
| | |
| | | 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()); |
| | | } |
| | |
| | | --- |
| | | |
| | | 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 #支付宝公钥 |
| | | |
| | | |
| | | --- |