微信登陆、支付接口对接整理

1、根据code获取对应的openid
2、请求解密

如果需要获取用户手机号等个人信息,需用户同意之后通过AES解密的方式调用获取

AES对象是hutool中的工具对象。

1、统一下单接口
/**
     * 调用统一下单接口,并组装生成支付所需参数对象.
     *
     * @return 返回 {@link com.github.binarywang.wxpay.bean.order}包下的类对象
     */
    public WxPayOrderResult createOrder(WxPayUnifiedOrderRequest request, String openid){
          
   
        WxPayOrderResult wxPayOrderResult = new WxPayOrderResult();
        wxPayOrderResult.setCjsj(LocalDateTime.now());
        try {
          
   
            request.setOpenid(openid);
            request.setSpbillCreateIp(String.valueOf(InetAddress.getLocalHost().getHostAddress()));
            request.setTimeStart(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
            WxPayMpOrderResult payResult = wxService.createOrder(request);
        }catch (Exception e){
          
   
            e.printStackTrace();
        }
    }

    /**
     * 关闭订单
     * @param request
     * @return
     * @throws Exception
     */
    public WxPayOrderCloseResult closeOrder(WxPayOrderCloseRequest request) throws WxPayException {
          
   
        WxPayOrderCloseResult result = this.wxService.closeOrder(request);
        WxPayOrderQueryRequest wxPayOrderQueryRequest = new WxPayOrderQueryRequest();
        wxPayOrderQueryRequest.setOutTradeNo(request.getOutTradeNo());
        queryOrder(wxPayOrderQueryRequest);
        return result;
    }

    /**
     * 查询订单
     * @param request
     * @return
     * @throws Exception
     */
    public WxPayOrderQueryResult queryOrder(WxPayOrderQueryRequest request) throws WxPayException{
          
   
        WxPayOrderQueryResult result = this.wxService.queryOrder(request);
        WxPayOrderResult wxPayOrderResult = wxPayOrderMapper.getByDdbh(request.getOutTradeNo());
        return result;
    }
经验分享 程序员 微信小程序 职场和发展