京东开放平台:Java接入京东物流

1.注册京东开放平台用户
2.根据业务需求成为平台接入模式(以ISV为例)

3.根据流程注册信息,进行认证入驻

4.订阅需要的服务应用

以上完成所有的入驻流程之后,根据业务所需参考开放平台提供的API文档进行调用即可。

以物流轨迹查询接口为例:

4.1 从京东开放平台提供Java的SDK

将其引入我的项目中:

此时我们需要在pom文件中加载到我们放在resource中的包:

<dependencies>
    <dependency>
            <groupId>com.huiyun.delivery</groupId>
            <artifactId>lop-opensdk-support</artifactId>
            <scope>system</scope>
            <version>1.0.28</version>
            <systemPath>${pom.basedir}\src\main\resources\lib\lop-opensdk-support-1.0.28-SNAPSHOT.jar</systemPath>
        </dependency>


        <dependency>
            <groupId>com.huiyun.delivery</groupId>
            <artifactId>CommonQueryOrderApi</artifactId>
            <scope>system</scope>
            <version>1.0</version>
   <systemPath>${pom.basedir}\src\main\resources\lib\CommonQueryOrderApi.jar</systemPath>
        </dependency>
</dependencies>

<build>
     
    <resources>
        <resource>
            <directory>${basedir}/src/main/resources/lib</directory>
            <targetPath>BOOT-INF/lib/</targetPath>
            <filtering>false</filtering>
            <includes>
                <include>**/*.jar</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>


 4.2 接下来参考sdk里面提供的类进行引用即可。一些参数需要我们在平台中申请,自己申请即可。

package com.huiyun.delivery.service.Impl;
import com.alibaba.fastjson2.JSONObject;
import com.huiyun.common.core.exception.ServiceException;
import com.huiyun.delivery.enums.OrderOrigin;
import com.huiyun.delivery.model.DeliveryDetailRequestParam;
import com.huiyun.delivery.properties.JdlProperty;
import com.huiyun.delivery.service.JdlService;
import com.lop.open.api.sdk.DefaultDomainApiClient;
import com.lop.open.api.sdk.LopException;
import com.lop.open.api.sdk.domain.ECAP.CommonQueryOrderApi.commonGetOrderTraceV1.CommonOrderTraceRequest;
import com.lop.open.api.sdk.domain.ECAP.CommonQueryOrderApi.commonGetOrderTraceV1.CommonOrderTraceResponse;
import com.lop.open.api.sdk.domain.ECAP.CommonSubscribeTraceApi.commonSubscribeTraceV1.CommonSubscribeTraceRequest;
import com.lop.open.api.sdk.domain.ECAP.CommonSubscribeTraceApi.commonSubscribeTraceV1.Response;
import com.lop.open.api.sdk.plugin.LopPlugin;
import com.lop.open.api.sdk.plugin.factory.OAuth2PluginFactory;
import com.lop.open.api.sdk.request.ECAP.EcapV1OrdersTraceQueryLopRequest;
import com.lop.open.api.sdk.request.ECAP.EcapV1OrdersTraceSubscribeLopRequest;
import com.lop.open.api.sdk.response.ECAP.EcapV1OrdersTraceQueryLopResponse;
import com.lop.open.api.sdk.response.ECAP.EcapV1OrdersTraceSubscribeLopResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;



@Slf4j
@Service
public class JdlServiceImpl implements JdlService {


    @Autowired
    private JdlProperty jdlProperty;



    @Override
    public String jdlOrderDeliveryDetail(DeliveryDetailRequestParam param) {

        try {
            String waybillCode = param.getMailNo();//运单号

            EcapV1OrdersTraceQueryLopRequest request = new EcapV1OrdersTraceQueryLopRequest();

            CommonOrderTraceRequest commonOrderTraceRequest = new CommonOrderTraceRequest();
            commonOrderTraceRequest.setWaybillCode(waybillCode);
            commonOrderTraceRequest.setOrderOrigin(OrderOrigin.KUAIDI_B2C.getValue());
            commonOrderTraceRequest.setCustomerCode(jdlProperty.getCustomerCode());

            LopPlugin lopPlugin = OAuth2PluginFactory.produceLopPlugin(jdlProperty.getAppKey(), jdlProperty.getAppSecret(), jdlProperty.getAccessToken());

            request.setCommonOrderTraceRequest(commonOrderTraceRequest);
            request.addLopPlugin(lopPlugin);


            DefaultDomainApiClient client = new DefaultDomainApiClient("https://api.jdl.com",500,15000);

            EcapV1OrdersTraceQueryLopResponse response = client.execute(request);
            com.lop.open.api.sdk.domain.ECAP.CommonQueryOrderApi.commonGetOrderTraceV1.Response<CommonOrderTraceResponse> result = response.getResult();
            Integer code = result.getCode();
            String msg = result.getMsg();
            
            CommonOrderTraceResponse data = result.getData();

            String collect = JSONObject.toJSONString(data);

            log.info("物流轨迹:" + collect);

            return collect;

        } catch (LopException e) {
            log.error("物流查询异常");
            throw new RuntimeException(e);
        }

    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值