DeftShip 授权及发货

一、地址相关

登录地址:https://app.deftship.com/en/login
生产环境域名:https://deftship.com/api
沙箱环境域名:https://sandbox.deftship.com/api
API文档:登录之后,点击api,进入如下页面,点击API docs进入api文档界面
在这里插入图片描述

二、授权获取Token

1.创建沙箱或者生产环境

在这里插入图片描述

点击之后出现如下界面
在这里插入图片描述

Name: 自定义名称
Webhook Endpoint : 回调接口路径,这里是项目中自定义接口。需要你提供给DeftShip

2.生成token之后需要复制保存下来,只会出现一次

在这里插入图片描述
3.如何使用
在这里插入图片描述
请求头添加token即可

三.创建发货单

1.校验地址是否可用(可选择是否使用)

主要是防止在创建发货单时报错地址不可用,相当于前置校验。接口 /address/validate
请求实体类

@Data
public class ValidateAddressRequest {
    private String attention;
    private String name;
    private String street_1;
    private String street_2;
    private String street_3;
    private String city;
    private String zip;
    private String state;
    private String country;
    private String telephone;
}

响应实体

public class ValidateAddressResponse {
    private Boolean success;
    private String message;
    private Object data;
}

2.发货

根据自身业务需求,是先创建发货单,再由人工发货。还是直接由系统发。
这里介绍如何直接通过系统直接发出

1.获取费率(先调用此接口,计算费率。/parcel-orders/get-rates)
请求实体,此处请求实体与调用创建发货单参数一致(/parcel-orders)

public class CreateParcelRequest {
    /**
     * This field is used to identify sender address. You can fetch your saved addresses from address-book. Addresses can be managed from the website on live dashboard or sandbox dashboard. Not required if a "from_address" object was used.
     *
     * Note: If both "from_address_id" and "from_address" fields are defined system will prioritise the "from_address_id".
     * deftship地址本上存储的地址id,如果传了此id可不填发件人信息
     */
    private Integer from_address_id;

    /**
     * 	This field is used to identify return address. You should use the address which is in your saved from addresses. You can fetch your saved from addresses from address-book. Addresses can be managed from the website on live dashboard or sandbox dashboard.
     *  deftship地址本上存储的地址id,如果传了此id可不填收件人信息
     */
    private Integer return_address_id;


    /**
     * 发货地址信息
     */
    private FromAddress from_address;

    /**
     * 收件人地址信息
     */
    private ToAddress to_address;

    /**
     * 包裹信息
     */
    private List<PackageVo> package_list;

    public CreateParcelRequest() {
        this.from_address = new FromAddress();
        this.to_address = new ToAddress();
    }

    /**
     * 发件人信息
     */
    @Data
    public static class FromAddress{
        private String name;
        private String attention;
        private String street_1;
        private String street_2;
        private String street_3;
        private String city;
        private String zip;
        private String state;
        private String country;
        private String telephone;
    }

    /**
     * 收件人信息
     */
    @Data
    public static class ToAddress{
        private String name;
        private String attention;
        private String street_1;
        private String street_2;
        private String street_3;
        private String city;
        private String zip;
        private String state;
        private String country;
        private String telephone;
    }

    /**
     * 包裹信息
     */
    @Data
    public static class PackageVo{
        private Integer count;
        private String box_type;
        private Float length;
        private Float width;
        private Float height;
        private Float weight;
        private String reference_2;
        private Boolean insurance;
        private List<String> signature;
        private List<DeftShipCreateParcelItem> items ;

        /**
         * 包裹明细信息
         */
        @Data
        public static class DeftShipCreateParcelItem{
            private Integer quantity;
            private Float price;
            private Float country_of_manufacture;
            private String sku;
            private String description;
            private String content_type;
       }
    }


}

响应

@Data
public class GetRatesResponse implements Serializable {
    private Boolean success;
    private String message;
    private List<CarrierDto> data;

    @Data
    public static class CarrierDto{
        private Integer id;
        private String carrier;
        private String service;
        private String service_code;
        private Float final_price;
        private Float fuel_price;
//        private List<String> restrictions;
//        private List<Float> miscellaneous_charges;
        private String freight_class;
        private Boolean has_enough_credits;
    }
}

这里包含多个报价信息,看自身业务取哪个。这里的id就是发货要用到的参数rate_id
在这里插入图片描述
2.调用发货接口,进行发货(/parcel-orders/ship)
请求参数如上,只有一个rate_id
响应

@Data
public class SendParcelResponse {
    private Boolean success;
    private String message;
    private Object data;
}

这个data的字段如下。
在这里插入图片描述

{
    "shipment_order_id": 123123123,
    "main_tracking_number": "1Z47D7YDHBEG123",
    "sub_tracking_numbers": ["1Z47D7YDHBEG123", "1Z47D7YDHBEG124"],
    "package_details": [
        {
            "tracking_number": "1Z5RR1050313482583",
            "items": [
                {
                    "sku": "SKU1",
                    "quantity": "1",
                    "price": "1.00"
                },
                {
                    "sku": "SKU2",
                    "quantity": "2",
                    "price": "2.00"
                }
            ]
        }
    ],
    "final_price": "11.11",
    "carrier": "ups",
    "service": "UPS® Ground",
    "label": "/label/url/12355",
    "customs_form": "/customs/url/123123"
}

取消发货单(/freight-orders/void)

请求参数,就是发货之后的发货单号。上面可以看到有返回
在这里插入图片描述

@Data
public class VoidParcelRequest {
    private Integer shipment_order_id;
}

响应

@Data
public class VoidParcelResponse {
    private Boolean success;
    private String message;
    private Object data;
}

总结

本文主要介绍授权、发货、取消发货功能。其余功能请参考API文档。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值