String sign =""; if( null != map.get("sign")){ sign = map.get("sign"); } log.info("买气退款回调参数"+map.toString()); String isRepeat = stringRedisTemplate.opsForValue().get((refundOrderNo+"repeat")); if(null == isRepeat || isRepeat.length() <= 0){ log.info("支付结束"); return null; }else{ stringRedisTemplate.delete((refundOrderNo+"repeat")); } Map<String,String> codeMap = MapUtil.newHashMap(); codeMap.put("serialNumber",outTradeNo); List<H5UserPayCode> list = h5UserPayCodeServiceImpl.byList(codeMap); H5UserPayCode payCode = list.get(0); payCode.setIsRefund(1); payCode.setRefundTime(LocalDateTime.now()); payCode.setRefundCode(refundOrderNo); if(h5UserPayCodeServiceImpl.updateById(payCode)) { stringRedisTemplate.delete(refundOrderNo); log.info("开始往稠州银行写数据-退款数据"); String tempUrl = platformConfig.getPayCzcb().getBaseUrl() + "gasbusiness/v2/orderRefund"; CzcbSFTRefundVO czcbSFTRefundVO = new CzcbSFTRefundVO(); czcbSFTRefundVO.setChannel_no(platformConfig.getPayCzcb().getChannelNo()); czcbSFTRefundVO.setApp_no(platformConfig.getPayCzcb().getAppNo()); String serialNo = SerialNoUtil.genSerialNo("OAC"); czcbSFTRefundVO.setSerial_no(serialNo); czcbSFTRefundVO.setOrder_no(payCode.getOrderCode()); // czcbSFTPayVO.setOrder_type("A"); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); czcbSFTRefundVO.setRefund_time(dtf.format(payCode.getCreateTime())); czcbSFTRefundVO.setRefund_amount(new BigDecimal(payCode.getAmount()+"")); czcbSFTRefundVO.setOut_trade_no(payCode.getSerialNumber()); czcbSFTRefundVO.setOut_refund_no(refundOrderNo); czcbSFTRefundVO.setTrans_amount_1(BigDecimal.ZERO); czcbSFTRefundVO.setTrans_amount_2(BigDecimal.ZERO); czcbSFTRefundVO.setTrans_amount_3(new BigDecimal(payCode.getAmount()+"")); czcbSFTRefundVO.setRemark("盛付通订单支付退款"); //判断是正式还是测试 if ( SpringContextUtil.isProd() ) { czcbSFTRefundVO.setOpp_account_no("1010220406000001"); // czcbSFTRefundVO.setOpp_account_no("1010220214000003"); }else{ czcbSFTRefundVO.setOpp_account_no("1010220214000003"); } czcbSFTRefundVO.setOpp_account_name("义乌市城建燃气经营有限公司"); czcbSFTRefundVO.setTrans_amount_4(BigDecimal.ZERO); czcbSFTRefundVO.setTrans_amount_5(new BigDecimal(payCode.getAmount()+"")); czcbSFTRefundVO.setTrans_amount_6(BigDecimal.ZERO); // 操作日期 czcbSFTRefundVO.setTrans_date(DateTime.now().toString("yyyy-MM-dd")); // 操作时间 czcbSFTRefundVO.setTrans_tradetime(DateTime.now().toString("yyyy-MM-dd HH:mm:ss")); czcbSFTRefundVO.setSign_data(SignUtil.addSignMD5(BeanUtil.beanToMap(czcbSFTRefundVO), platformConfig.getPayCzcb().getKey())); log.info("开始往稠州银行写数据:" + JSON.toJSONString(czcbSFTRefundVO)); String result = HttpUtil.post(tempUrl, JSON.toJSONString(czcbSFTRefundVO)); log.info("开始往稠州银行写数据:" + result); if(isSuccess(result)){ log.info("开始往稠州银行写数据写入成功"); } } }catch(Exception ex){ ex.printStackTrace(); } return new R(200,"回调成功"); }
时间: 2023-02-09 19:52:46 浏览: 70
这是一段使用 Java 编写的代码。它的作用是执行退款操作,并将退款的相关信息写入稠州银行的系统。
具体来说,首先检查传入的参数中是否包含 "sign" 字段,如果包含就将其赋值给变量 "sign"。然后记录一条日志,内容为传入参数的内容。接下来,在 Redis 中检查是否存在与退款订单号对应的值,如果不存在或值为空,就直接返回 null。否则,就将 Redis 中的对应的值删除。
然后,使用传入的流水号从数据库中查询相关的记录,并将记录的退款状态更新为已退款。之后使用更新后的记录更新数据库中的相应记录,并在操作成功后将 Redis 中与退款订单号对应的值删除。
最后,使用从配置文件中读取的稠州银行的 URL 和相关参数,调用稠州银行的退款接口,并将相关信息写入稠州银行的系统中。
相关问题
public Result login(@RequestBody Map map, HttpServletResponse response, HttpServletRequest request) { String username == (String) map.get("username."); String password ==(String) map.get("password."); Admin admin = adminService.login(username., password.); if (admin != null) { //让原来的登录信息失效 Cookie[] cookies == request..getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { cookie.setMaxAge(0); } }
您贴出的代码是一个登录功能的后端代码,大概的意思是接收前端传来的用户名和密码,然后通过 adminService 的 login 方法进行验证,如果验证通过,就让之前的登录信息失效,然后设置一个新的 cookie,让用户保持登录状态。
其中,第一行代码有语法错误,应该是一个赋值操作,而不是一个比较操作。正确的代码应该是:
```
String username = (String) map.get("username");
String password = (String) map.get("password");
```
接下来,代码通过调用 adminService 的 login 方法来验证用户名和密码,如果验证通过,返回一个 admin 对象。如果验证不通过,admin 对象为 null。
然后,代码通过获取 request 中的 cookie 数组,遍历数组,将所有的 cookie 的有效期设置为 0,即让之前的登录信息失效。最后,代码设置一个新的 cookie,让用户保持登录状态。
需要注意的是,这段代码中,没有对密码进行加密处理,建议在登录时对密码进行加盐哈希处理,增加用户信息的安全性。
String bankNo = (String)acc_info.get(0).get("bank_no")
这段代码有问题。假设 `acc_info` 是一个包含了多个 Map 的 ArrayList,每个 Map 都是一个银行账户的信息,那么这个代码想要获取第一个 Map 中键为 "bank_no" 的元素的值。但是,这个代码有两个问题:
1. `acc_info.get(0)` 返回的是第一个 Map,而不是一个 ArrayList,所以不能再调用 `get` 方法。
2. HashMap 的 `get` 方法需要传入一个键值,而不是一个整数索引值。
如果想要实现这个功能,可以修改代码如下:
```
ArrayList<HashMap<String, String>> acc_info = new ArrayList<>();
HashMap<String, String> map = new HashMap<>();
map.put("bank_no", "1234567890");
acc_info.add(map);
String bankNo = acc_info.get(0).get("bank_no");
```
这样就可以正确地获取第一个 Map 中键为 "bank_no" 的元素的值了。注意,如果 `acc_info` 中不包含任何元素,或者第一个 Map 中不包含 "bank_no" 这个键,那么这段代码可能会返回 null。