对接京东家电清洗业务之回调
  FR0ij2BnJR72 2023年12月27日 25 0

对接

1、前期需要根据京东物流开放平台的指引,注册相关平台账号,需申请相关服务此步骤暂且略过。 2、使用平台方所提供的本地sdk,参照sdk进行标准接口的接入,这一步也掠过。

京东接口的回调

此处接收来自京东的回调,以及相关回调参数。在此,根据业务需求将其中几个相关节点分别进行处理。 A.上门打卡,上门完成 B.取消 C.其他

此处可以根据自己的需求,定义不同的常量进行接受。

/**
     * 统一回调接口
     *
     * @param requestBody ServletRequest
     */
@PostMapping("/callback")
public JdResult updateOrderByJd(@RequestBody String requestBody) {
    try {
        JSONObject jsonObject = new JSONObject(requestBody);
        //获取当前回调类型
        String orderStatus = jsonObject.getStr("orderStatus");
        //获取其中订单
        String orderNumber = jsonObject.getStr("orderNumber");
        //根据订单编号查询出当前订单信息
        DejiaService deJiaServiceDomain = deJiaService.selectServiceByOrderNum(orderNumber);
        if (deJiaServiceDomain == null) {
            return new JdResult("1", "未找到当前订单信息");
        }
        logger.info("回调开始===================================》");
        logger.info("当前回调为:" + orderStatus);
        if (ORDER_STATUS_MAP_CHECKIN.equals(orderStatus) || ORDER_STATUS_MAP_COMPLETE.equals(orderStatus)) {
            //回调为 上门打卡 上门完成
            return handelMapCallback(jsonObject);
        } else if (ORDER_STATUS_CONFIRM_CANCEL.equals(orderStatus)) {
            //回调为 确认取消
            return handleCancelCallback(jsonObject);
        } else {
            //回调为 其他
            return handelOtherCallback(jsonObject);
        }
    } catch (Exception e) {
        logger.error("回调有误: {}", e.getMessage());
        return new JdResult("1", "接收订单信息错误:  " + e.getMessage());
    }
}

上门打卡、上门完成

private JdResult handelMapCallback(JSONObject jsonObject) {
try {
    //获取其中的key
    String orderNumber = jsonObject.getStr("orderNumber");
    //根据订单编号查询出当前订单信息
    DejiaService deJiaServiceDomain = deJiaService.selectServiceByOrderNum(orderNumber);

    String orderStatusCode = jsonObject.getStr("orderStatusCode");
    String orderStatus = jsonObject.getStr("orderStatus");
    //更新当前订单状态
    deJiaServiceDomain.setStatus(Long.valueOf(orderStatusCode));
    deJiaServiceDomain.setLat(jsonObject.getStr("punchHomeLatitude"));
    deJiaServiceDomain.setLng(jsonObject.getStr("punchHomeLongitude"));
    deJiaServiceDomain.setUpdateTime(DateTime.now());
    deJiaService.updateDejiaService(deJiaServiceDomain);
    logger.info("回调结束=====================================《");
    // 返回处理结果
    return new JdResult("1", "更新状态为:" + orderStatus);
} catch (JSONException e) {
    // JSON 转换异常
    logger.error("JSON转换异常: {}", e.getMessage());
    return new JdResult("-1", "" + e.getMessage() + "");
} catch (Exception e) {
    // 出错,返回错误信息
    return new JdResult("-1", "" + e.getMessage() + "");
}
}

取消

private JdResult handleCancelCallback(JSONObject jsonObject) {
try {
    //获取其中的key
    String orderNumber = jsonObject.getStr("orderNumber");
    //根据订单编号查询出当前订单信息
    DejiaService deJiaServiceDomain = deJiaService.selectServiceByOrderNum(orderNumber);
    if (deJiaServiceDomain == null) {
        return new JdResult("-1", "无当前订单信息");
    }
    String orderStatusCode = jsonObject.getStr("orderStatusCode");
    String orderStatus = jsonObject.getStr("orderStatus");
    String cancelReason = jsonObject.getStr("cancelReason");
    //更新当前订单状态
    deJiaServiceDomain.setStatus(Long.valueOf(orderStatusCode));
    deJiaServiceDomain.setCancelReason(cancelReason);
    deJiaService.updateDejiaService(deJiaServiceDomain);
    logger.info("回调结束=====================================《");
    // 返回处理结果
    return new JdResult("-1", "单号为:" + orderNumber + "已被商家取消");
} catch (Exception e) {
    // 出错,返回错误信息
    return new JdResult("-1", "接收订单信息错误。" + e.getMessage());
}
}

其他

private JdResult handelOtherCallback(JSONObject jsonObject) {
    try {
        //获取其中的key
        String orderNumber = jsonObject.getStr("orderNumber");
        //根据订单编号查询出当前订单信息
        DejiaService deJiaServiceDomain = deJiaService.selectServiceByOrderNum(orderNumber);
        String orderStatusCode = jsonObject.getStr("orderStatusCode");
        String orderStatus = jsonObject.getStr("orderStatus");
        //更新当前订单状态
        deJiaServiceDomain.setStatus(Long.valueOf(orderStatusCode));
        deJiaService.updateDejiaService(deJiaServiceDomain);
        logger.info("回调结束=====================================《");
        // 返回处理结果
        return new JdResult("1", "更新状态为:" + orderStatus);
    } catch (JSONException e) {
        // JSON 转换异常
        logger.error("Failed to parse JSON. Error: {}", e.getMessage());
        return new JdResult("-1", "接收订单信息错误。" + e.getMessage());
    } catch (Exception e) {
        // 出错,返回错误信息
        return new JdResult("-1", "接收订单信息错误。" + e.getMessage());
    }
}

##结语 其中参数可以根据自己的业务进行相关的调整。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月27日 0

暂无评论

推荐阅读
  2Vtxr3XfwhHq   2024年05月17日   40   0   0 Java
  8s1LUHPryisj   2024年05月17日   36   0   0 Java
  aRSRdgycpgWt   2024年05月17日   39   0   0 Java
FR0ij2BnJR72
作者其他文章 更多