| | |
| | | throw new GlobalException("当前订单提现申请已通过!"); |
| | | } |
| | | |
| | | return weChatPay(order.getOrderMoney(), openId,list.get(0).getId()); |
| | | return weChatPay(order.getOrderMoney(), openId,list.get(0).getId(),order.getServeName()); |
| | | } |
| | | |
| | | @Override |
| | |
| | | // 已通过 |
| | | withdraw.setState(Constants.ONE); |
| | | // 商家微信打款至微信零钱 |
| | | boolean update = weChatPay(order.getOrderMoney(), openId,withdraw.getId()); |
| | | boolean update = weChatPay(order.getOrderMoney(), openId,withdraw.getId(),order.getServerName()); |
| | | // if (!update) { |
| | | // throw new GlobalException("交易提现失败,请检查是否绑定微信!"); |
| | | // } |
| | |
| | | @Resource |
| | | private WithdrawDetailService withdrawDetailService; |
| | | |
| | | private boolean weChatPay(BigDecimal orderMoney, String openId,String withdrawId) { |
| | | // private boolean weChatPay(BigDecimal orderMoney, String openId,String withdrawId) { |
| | | // if (StringUtils.isBlank(openId)) { |
| | | // return false; |
| | | // } |
| | | // |
| | | // BigDecimal maxTransferAmount = new BigDecimal("20000"); // 单次转账限额,单位为分 |
| | | // int totalTransfers = orderMoney.multiply(new BigDecimal("100")).divide(maxTransferAmount, 0, RoundingMode.UP).intValue(); |
| | | // boolean allTransfersSuccessful = true; |
| | | // |
| | | // for (int i = 0; i < totalTransfers; i++) { |
| | | // BigDecimal transferAmount; |
| | | // if (i < totalTransfers - 1) { |
| | | // transferAmount = maxTransferAmount; |
| | | // } else { |
| | | // // 最后一笔转账,金额为剩余金额 |
| | | // transferAmount = orderMoney.multiply(new BigDecimal("100")).subtract(maxTransferAmount.multiply(new BigDecimal(i))).setScale(0, RoundingMode.DOWN); |
| | | // } |
| | | // |
| | | // Map<String, Object> postMap = new HashMap<>(8); |
| | | // postMap.put(WechatConstants.APP_ID, "wx98563d0ec9cf21c8"); |
| | | // postMap.put(WechatConstants.OUT_BATCH_NO, String.valueOf(UUID.randomUUID()).replaceAll("-", "")); |
| | | // System.err.println("====="+postMap.get(WechatConstants.OUT_BATCH_NO)); |
| | | // postMap.put(WechatConstants.BATCH_NAME, "二手回收提现"); |
| | | // postMap.put(WechatConstants.BATCH_REMARK, "二手回收提现"); |
| | | // postMap.put(WechatConstants.TOTAL_AMOUNT, transferAmount); |
| | | // postMap.put(WechatConstants.TOTAL_NUM, Constants.ONE); |
| | | // |
| | | // List<Map<String, Object>> list = new ArrayList<>(); |
| | | // Map<String, Object> subMap = new HashMap<>(4); |
| | | // subMap.put(WechatConstants.OUT_DETAIL_NO, String.valueOf(SNOW_FLAKE_ID_WORKER.nextId())); |
| | | // subMap.put(WechatConstants.TRANSFER_AMOUNT, transferAmount); |
| | | // subMap.put(WechatConstants.TRANSFER_REMARK, "二手回收提现到账"); |
| | | // subMap.put(WechatConstants.OPEN_ID, openId); |
| | | // list.add(subMap); |
| | | // postMap.put(WechatConstants.TRANSFER_DETAIL_LIST, list); |
| | | // |
| | | // // 使用类加载器获取资源 URL |
| | | //// String path = ClassLoader.getSystemResource("/usr/local/vx/apiclient_key.pem").getPath(); |
| | | // |
| | | //// String result = HttpUtil.postTransBatRequest( |
| | | //// WechatConstants.WE_CHAT_URL_PRE, |
| | | //// JSONObject.toJSONString(postMap), |
| | | //// "7EEA04429B006E12AAA421C002EC48BBEED5BE94", |
| | | //// "1665330417", |
| | | //// "/usr/local/vx/apiclient_key.pem", WechatConstants.WE_CHAT_URL_SUF); |
| | | // String result = HttpUtil.postTransBatRequest( |
| | | // WechatConstants.WE_CHAT_URL_PRE, |
| | | // JSONObject.toJSONString(postMap), |
| | | // "7EEA04429B006E12AAA421C002EC48BBEED5BE94", |
| | | // "1665330417", |
| | | // "D:\\study\\JiaDianHuiShou\\ruoyi-service\\ruoyi-order\\src\\main\\java\\com\\ruoyi\\order\\vx\\apiclient_key.pem", WechatConstants.WE_CHAT_URL_SUF); |
| | | // |
| | | // JSONObject jsonObject = JSONObject.parseObject(result); |
| | | // |
| | | // WithdrawDetail withdrawDetail = new WithdrawDetail(); |
| | | // withdrawDetail.setWithdrawId(withdrawId); |
| | | // withdrawDetail.setMoney(transferAmount); |
| | | // withdrawDetail.setOutBatchNo((String) postMap.get(WechatConstants.OUT_BATCH_NO)); |
| | | // withdrawDetailService.save(withdrawDetail); |
| | | // |
| | | // if (jsonObject.containsKey(WechatConstants.CREATE_TIME)) { |
| | | // // 转账成功 |
| | | // //保存转账明细 |
| | | //// WithdrawDetail withdrawDetail = new WithdrawDetail(); |
| | | //// withdrawDetail.setWithdrawId(withdrawId); |
| | | //// withdrawDetail.setMoney(transferAmount); |
| | | //// withdrawDetail.setOutBatchNo((String) postMap.get(WechatConstants.OUT_BATCH_NO)); |
| | | //// withdrawDetailService.save(withdrawDetail); |
| | | // |
| | | // |
| | | // } else { |
| | | // allTransfersSuccessful = false; |
| | | // break; |
| | | // } |
| | | // |
| | | // } |
| | | // |
| | | // return allTransfersSuccessful; |
| | | // } |
| | | |
| | | // 上架打款到用户零钱接口已弃用 用新版商家转账接口 |
| | | private boolean weChatPay(BigDecimal orderMoney, String openId,String withdrawId,String serverName) { |
| | | if (StringUtils.isBlank(openId)) { |
| | | return false; |
| | | } |
| | | |
| | | BigDecimal maxTransferAmount = new BigDecimal("20000"); // 单次转账限额,单位为分 |
| | | BigDecimal maxTransferAmount = new BigDecimal("200000"); // 单次转账限额,单位为分 |
| | | int totalTransfers = orderMoney.multiply(new BigDecimal("100")).divide(maxTransferAmount, 0, RoundingMode.UP).intValue(); |
| | | boolean allTransfersSuccessful = true; |
| | | |
| | | for (int i = 0; i < totalTransfers; i++) { |
| | | BigDecimal transferAmount; |
| | | if (i < totalTransfers - 1) { |
| | |
| | | |
| | | Map<String, Object> postMap = new HashMap<>(8); |
| | | postMap.put(WechatConstants.APP_ID, "wx98563d0ec9cf21c8"); |
| | | postMap.put(WechatConstants.OUT_BATCH_NO, String.valueOf(UUID.randomUUID()).replaceAll("-", "")); |
| | | // 订单号 |
| | | postMap.put("out_bill_no", String.valueOf(UUID.randomUUID()).replaceAll("-", "")); |
| | | System.err.println("====="+postMap.get(WechatConstants.OUT_BATCH_NO)); |
| | | postMap.put(WechatConstants.BATCH_NAME, "二手回收提现"); |
| | | postMap.put(WechatConstants.BATCH_REMARK, "二手回收提现"); |
| | | postMap.put(WechatConstants.TOTAL_AMOUNT, transferAmount); |
| | | postMap.put(WechatConstants.TOTAL_NUM, Constants.ONE); |
| | | |
| | | List<Map<String, Object>> list = new ArrayList<>(); |
| | | Map<String, Object> subMap = new HashMap<>(4); |
| | | subMap.put(WechatConstants.OUT_DETAIL_NO, String.valueOf(SNOW_FLAKE_ID_WORKER.nextId())); |
| | | subMap.put(WechatConstants.TRANSFER_AMOUNT, transferAmount); |
| | | subMap.put(WechatConstants.TRANSFER_REMARK, "二手回收提现到账"); |
| | | subMap.put(WechatConstants.OPEN_ID, openId); |
| | | list.add(subMap); |
| | | postMap.put(WechatConstants.TRANSFER_DETAIL_LIST, list); |
| | | |
| | | // 使用类加载器获取资源 URL |
| | | // String path = ClassLoader.getSystemResource("/usr/local/vx/apiclient_key.pem").getPath(); |
| | | |
| | | // String result = HttpUtil.postTransBatRequest( |
| | | // WechatConstants.WE_CHAT_URL_PRE, |
| | | // JSONObject.toJSONString(postMap), |
| | | // "7EEA04429B006E12AAA421C002EC48BBEED5BE94", |
| | | // "1665330417", |
| | | // "/usr/local/vx/apiclient_key.pem", WechatConstants.WE_CHAT_URL_SUF); |
| | | postMap.put(WechatConstants.OPEN_ID, openId); |
| | | // 转账金额 |
| | | postMap.put("transfer_amount", transferAmount); |
| | | // 转账备注 |
| | | postMap.put("transfer_remark", transferAmount); |
| | | // 回调地址 |
| | | postMap.put("notify_url", transferAmount); |
| | | // 转账场景报备信息 |
| | | Map<String, Object> info = new HashMap<>(); |
| | | info.put("info_type","回收商品名称"); |
| | | info.put("info_content",serverName); |
| | | postMap.put("transfer_scene_report_infos", JSONObject.toJSONString(info)); |
| | | String result = HttpUtil.postTransBatRequest( |
| | | WechatConstants.WE_CHAT_URL_PRE, |
| | | WechatConstants.WE_CHAT_PAY_URL_PRE, |
| | | JSONObject.toJSONString(postMap), |
| | | "7EEA04429B006E12AAA421C002EC48BBEED5BE94", |
| | | "1665330417", |
| | | "D:\\study\\JiaDianHuiShou\\ruoyi-service\\ruoyi-order\\src\\main\\java\\com\\ruoyi\\order\\vx\\apiclient_key.pem", WechatConstants.WE_CHAT_URL_SUF); |
| | | |
| | | "E:\\ershoucert\\apiclient_key.pem", WechatConstants.WE_CHAT_URL_SUF); |
| | | JSONObject jsonObject = JSONObject.parseObject(result); |
| | | |
| | | WithdrawDetail withdrawDetail = new WithdrawDetail(); |
| | | withdrawDetail.setWithdrawId(withdrawId); |
| | | withdrawDetail.setMoney(transferAmount); |
| | | withdrawDetail.setOutBatchNo((String) postMap.get(WechatConstants.OUT_BATCH_NO)); |
| | | withdrawDetailService.save(withdrawDetail); |
| | | |
| | | // WithdrawDetail withdrawDetail = new WithdrawDetail(); |
| | | // withdrawDetail.setWithdrawId(withdrawId); |
| | | // withdrawDetail.setMoney(transferAmount); |
| | | // withdrawDetail.setOutBatchNo((String) postMap.get(WechatConstants.OUT_BATCH_NO)); |
| | | // withdrawDetailService.save(withdrawDetail); |
| | | if (jsonObject.containsKey(WechatConstants.CREATE_TIME)) { |
| | | // 转账成功 |
| | | //保存转账明细 |