栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

YYGH-BUG-05

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

YYGH-BUG-05

整合微信支付


80行报错空指针异常
证明
这里一直显示失败
今天在整合微信支付的时候遇到一个bug,更新订单状态的时候我们需要根据订单号查询相对应的订单同时更改订单的状态为已支付

证明没有查到orderinfo这时我们发现getid是不行的应该getOrderid

改完之后重启项目
这时我们发现
现在已经是预约成功了

那么为什么我们改了这里就支付成功了呢,无需再次支付是这样的.

1.前端调用接口,生成二维码,返回一个map

map里面最重要的就是一个url存放二维码

2.前端解析map,显示二维码,同时前端每3秒检查支付状态

3.查询支付状态,当支付成功时更改项目数据库的支付状态

4.将更新完成的结果返回给前端,自动跳转详情页面

//更新订单状态
@Override
public void paySuccess(String tradeNo, Map resultMap) {
    //1.根据订单编号得到支付记录
    QueryWrapper queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("out_trade_no", tradeNo);
    queryWrapper.eq("payment_type", PaymentTypeEnum.WEIXIN.getStatus());
    PaymentInfo paymentInfo = baseMapper.selectOne(queryWrapper);

    //2.更新支付信息
    paymentInfo.setPaymentStatus(PaymentStatusEnum.PAID.getStatus());
    paymentInfo.setCallbackTime(new Date());
    paymentInfo.setTradeNo(resultMap.get("transaction_id"));
    paymentInfo.setCallbackContent(resultMap.toString());
    baseMapper.updateById(paymentInfo);

    //3.根据订单号得到订单信息
    log.info(String.valueOf(paymentInfo.getOrderId()));
    OrderInfo orderInfo = orderService.getById(paymentInfo.getOrderId());
    orderInfo.setOrderStatus(OrderStatusEnum.PAID.getStatus());

    //4.更新订单信息
    orderService.updateById(orderInfo);

    //5.调用医院接口,更新支付信息
    hospApi(orderInfo);

}

private void hospApi(OrderInfo orderInfo) {
    SignInfoVo signInfoVo = hospitalFeignClient.getSignInfoVo(orderInfo.getHoscode());
    if (null == signInfoVo) {
        throw new YyghException(ResultCodeEnum.PARAM_ERROR);
    }
    Map reqMap = new HashMap<>();
    reqMap.put("hoscode", orderInfo.getHoscode());
    reqMap.put("hosRecordId", orderInfo.getHosRecordId());
    reqMap.put("timestamp", HttpRequestHelper.getTimestamp());
    String sign = HttpRequestHelper.getSign(reqMap, signInfoVo.getSignKey());
    reqMap.put("sign", sign);
    JSONObject result = HttpRequestHelper.sendRequest(reqMap, signInfoVo.getApiUrl() + "/order/updatePayStatus");
    if (result.getInteger("code") != 200) {
        throw new YyghException(result.getString("message"), ResultCodeEnum.FAIL.getCode());
    }
}

而我们刚刚卡在了第4步当我们修改完代码前端检查到我们已经更新完的时候,之前的支付操作没有收到影响

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999101.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号