发表于: 2019-11-27 22:32:19

1 1068


今天完成的事情:

把之前的支付加上去,但是又没加微信那边的流程。今天又重新看了下支付。找到另一个博客的,比较完整

和我想的差不多,唯一就是往前端传的参数没太懂是哪些。

https://blog.csdn.net/u013021936/article/details/80240495

这是微信网站上写的demo。

我目前只知道这个prepay_id是后端与微信交互后返回来的。其他几个是不是也要从后端传。还是前端自己生成,获取


与微信交互的时候有个这个。用户的客户端IP,是我们的服务器IP吗?



只写了除与微信交互的代码。

/**
* 个人中心订单列表查询
*/
@GetMapping("/a/u/list/order")
public Map<String, Object> orderSelectList(HttpServletRequest request,
                                          Integer status,
                                          @RequestParam(value = "page", defaultValue = "1") Integer page,
                                          @RequestParam(value = "size", defaultValue = "10") Integer size) {
   HashMap<String, Object> result = new HashMap<>(16);
   try {
       long userId = JWTUtil.getUserIdFromToken(request);
       log.info("查询用户{}第页{}共{}订单", userId, page, size);
       StudyOrder order = new StudyOrder();
       order.setCreateBy(userId);
       order.setStatus(status);
       PageHelper.startPage(page, size, "update_at desc");
       List<StudyOrder> orderList = orderServer.selectSelective(order);
       PageInfo<StudyOrder> pageInfo = new PageInfo<>(orderList);
       Long total = pageInfo.getTotal();
       result.put("total", total);
       result.put("data", orderList);
       result.put("code", SUCCESS.getCode());
       result.put("msg", SUCCESS.getMsg());
   } catch (Exception e) {
       e.printStackTrace();
       result.put("code", REQUEST_FAILED.getCode());
       result.put("msg", REQUEST_FAILED.getMsg());
   }
   return result;
}


/**
* 订单查看,详细查询
*
* @param id 订单id
*/
@GetMapping("/a/u/study/order")
public Map<String, Object> orderSelectList(HttpServletRequest request, Long id) {
   HashMap<String, Object> result = new HashMap<>(16);
   try {
       Long userId = JWTUtil.getUserIdFromToken(request);
       log.info("用户{}查看订单{}", userId, id);
       StudyOrder order = orderServer.selectByPrimaryKey(id);
       /*判断是否为当前用户在查询*/
       if (null != order) {
           if (userId.equals(order.getCreateBy())) {
               result.put("data", order);
               result.put("code", SUCCESS.getCode());
               result.put("msg", SUCCESS.getMsg());
           } else {
               result.put("code", USER_ERROR.getCode());
               result.put("msg", USER_ERROR.getMsg());
           }
       } else {
           result.put("data", null);
       }
   } catch (Exception e) {
       e.printStackTrace();
       result.put("code", REQUEST_FAILED.getCode());
       result.put("msg", REQUEST_FAILED.getMsg());
   }
   return result;
}

/**
* 支付订单
*/
@PostMapping("/a/u/study/order")
public Map<String, Object> orderInsert(HttpServletRequest request, StudyOrder order) {
   HashMap<String, Object> result = new HashMap<>(16);
   try {
       log.info("新增订单信息{}",order);
       long userId = JWTUtil.getUserIdFromToken(request);
       /*待支付10,已取消20,已完成30,跳过支付过程*/
       order.setStatus(30);
       order.setCreateBy(userId);
       order.setUpdateBy(userId);
       /*订单编号,当前时间年月日时分秒+四位全随机数*/
       order.setNumber(DateUtil.dateFormat() + NumUtil.numAllRandom(4));

       /*省略支付过程*/
       /*1.发送请求参数至微信生成预支付订单返回prepay_id等*/
       /*result.put("prepayId",prepayId);*/

       orderServer.insertSelective(order);
       result.put("code", SUCCESS.getCode());
       result.put("msg", SUCCESS.getMsg());
       result.put("id", order.getId());
   } catch (Exception e) {
       e.printStackTrace();
       result.put("code", REQUEST_FAILED.getCode());
       result.put("msg", REQUEST_FAILED.getMsg());
   }
   return result;
}


逻辑上唯一疑惑的是,微信这边是2个小时的订单支付时间,如果用户不支付了。后面在订单未关闭前再支付,用的是上一次获取的预支付信息参数,还是再走一边支付流程。


明天计划的事情:

把后台的接口加上

还有个问题,这边有个30分钟后关闭未支付订单的功能,用redis进行延迟队列,看了下,明天继续看。


遇到的问题:

今天测试的多点,BUG测了几个出来。还是那种从其他地方把代码复制过来, 改的不全的问题。如果能代码自动生成就爽了。



收获:



返回列表 返回列表
评论

    分享到