韵达快递对接测试

这篇博客详细介绍了如何进行韵达快递的API对接测试,包括注册、认证、订阅API、导入jar包等准备工作,并重点讲解了预估运费、电子面单下单、散件下单及取消散件订单接口的测试开发,涉及Java环境下的接口调用和测试结果分析。
部署运行你感兴趣的模型镜像

韵达快递对接测试

1 对接准备

1.1 注册

使用手机号即可注册

1.2 认证

需要进行企业认证,输入公司名称,公司地址,所属行业,统一社会信用代码,三件合一证件

等待审核,审核成功之后进行控制台

显示基本信息(生产环境、测试环境),以及订阅列表

其中APPKEY,APPSECRET最为重要。

1.3 订阅API

点击新增订阅,可订阅API,共有10条,我是全部订阅

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-04va2JSJ-1650538090712)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220421095623627.png)]

1.4 导入jar包

下载jar包,kfpt-sdk-java地址为:https://openapi.yundaex.com/openapi-gateway/SDK-JAVA/kfpt-sdk-1.0.0.jar

java源码下载地址:https://openapi.yundaex.com/openapi-gateway/SDK-JAVA/kfpt-sdk.zip

PHP下载地址:https://openapi.yundaex.com/openapi-gateway/SDK-JAVA/openapi-demo-php-1.0.0.php

1.5 准备完成,进行联调测试

2 测试开发

2.1 依赖注入

将jar包导入resources下的lib中,在pom.xml注入

<!--尝试对接韵达-->
        <dependency>
            <groupId>yunda.sdk</groupId>
            <artifactId>yd</artifactId>
            <version>1.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/kfpt-sdk-1.0.0.jar</systemPath>
        </dependency>

2.2 预估运费接口

​ 该接口只有一级地址–一级地址,还有重量,三个参数,对接要慎重

2.2.1 预估运费参数
package com.hc.store.yunda;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @author chajintao
 * @date 2022/4/21 9:06
 */
@ApiModel("预估运费参数")
@Data
public class YdFreightParam {
    @ApiModelProperty("寄件人省份/直辖市")
    private String startCity;
    @ApiModelProperty("收件人省份/直辖市")
    private String endCity;
    @ApiModelProperty("重量(kg)")
    private String weight;
}
2.2.2 @Test
@RequestMapping("/dd")
    public String dd(){
        YdFreightParam yd = new YdFreightParam();
        yd.setStartCity("山东省");
        yd.setEndCity("安徽省");
        yd.setWeight("2.00");

        String serverUrl = "https://openapi.yundaex.com/openapi-api/v1/order/getFreightInfo";

        String jsonParams = JSON.toJSONString(yd);
        String result = OpenApiHttpUtils.doPostJson(serverUrl,jsonParams,appKey,appSecret);
        System.out.println(result);
        return result;
    }
2.2.3 result
{
    "code": "0000",
    "message": "请求成功",
    "result": true,
    "data": 17.0
}

2.3 电子面单下单接口

2.3.1 下单参数
参数类型必填说明
appidStringtrue合作社appid(等同于app-key)
partner_idStringtrue韵达白马账户(合作网点提供)
secretStringtrue联调密码(合作网点)
ordersListtrue订单详情
2.3.2 订单详情参数
参数类型长度必填参数说明
order_serial_noString32true订单唯一序列号 由字母、数字、下划线组成,必须保证唯一,请对特殊符号进行过滤
khddhString32true大客户系统订单的订单号可与订单唯一序列号相同
senderObjecttrue寄件人信息
nameString16true寄件人姓名
companyString32false寄件人公司
provinceString16false寄件人省份
cityString16false寄件人市
countyString16false寄件人区/县
addressString125true详细地址 必须添加省市区并以半角逗号隔开
phoneString16false固定电话 固定电话或移动电话至少填一项
mobileString16false手机号
receiverObjecttrue收件人
nameString16true收件人姓名
companyString32false收件人公司
provinceString16false收件人省份
cityString16false收件人市
countyString16false收件人区/县
addressString64true详细地址 必须添加省市区并以半角逗号隔开
phoneString16false固定电话固定电话或移动电话至少填一项
mobileString16false手机号
weightDouble10,3false物品重量
sizeString16false物品大小(单位米)
valueDouble10,2false货物金额
collect_branchString8false揽件网点编码
collection_valueDouble10,2false代收货款金额 目前仅用于cod订单,cod订单必填
other_chargesDouble10,2false其他费用
itemsListfalse商品信息集合
itemnameStirng100false商品名称 cod订单必填
numberString8false数量
remarkString32false说明
specialStringfalse商品类型保留字段,暂时不用(见商品类型字段)
remarkStringfalse备注
cus_area1String255false可以自定义显示信息1,打印在客户自定义区域1,换行请用\n
cus_area2String255false可以自定义显示信息2,打印在客户自定义区域2,换行请用\n
wave_noString255false客户波次号,按照此号进行批量打印校验,批量下单时,此波次号需要相同
order_typeString64true运单类型参数值对照order_type字典表可固定为common
isProtectPrivacyString4false判断订单是否是隐私订单,如果是隐私订单把收件人姓名和电话进行脱敏处理(1表示是,0表示否)隐私面单业务对接需与韵达方确认业务需求
platform_sourcevarchar24false平台来源
node_idString10true350(默认)
multi_pack一票多件
mulpckvarchar255false是否一票多件一票多件必填 是:填1; 否:空,不填 (必须走增值服务才能生效{"type":"MUL","markingValue":{"value":10(总单量)}})
totalint11false总包裹数量:当最后一件时,传输此值
endmarktinyint2false结束标记,当最后一件时,传输此值 0:否,1:是
markingInfosvarchar255false增值服务标签增值服务必填,json字符串
2.3.4 返回参数
参数类型长度必填参数说明
resultbooleantrue是否成功
codeStringtrue响应编码
messageStringtrue响应内容
dataObjecttrue返回对象信息

data字段说明

参数参数说明
order_serial_no客户订单号
mailno运单号
pdf_infopdf参数信息(根据客户的需求返回json格式数据或对json格式进行加密后的数据)
status返回状态,1表示成功,0表示失败
msg成功或者错误的提示信息
2.3.5 暂无法完成

2.4 散件下单(新)

2.4.1 下单参数
package com.hc.store.yunda;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;

/**
 * @author chajintao
 * @date 2022/4/13 8:51
 */
@Data
@ApiModel("散件下单(新)参数")
public class YdPushOrderParam {

    @ApiModelProperty("合作商app-key")
    private String appid;
    @ApiModelProperty("合作商订单号")
    private String orderid;
    @ApiModelProperty("运单回传地址url")
    private String backurl;
    @ApiModelProperty(value = "取件开始时间", notes = "(yyyy-MM-dd HH:mm:ss)")
    private String sendstarttime;
    @ApiModelProperty("取件结束时间")
    private String sendendtime;
    @ApiModelProperty("物品重量")
    private Double weight;
    @ApiModelProperty(value = "货物大小(米)", notes = "用半角的逗号来分隔长宽高")
    private String size;
    @ApiModelProperty("货物金额")
    private Double value;
    @ApiModelProperty("运费")
    private Double freight;
    @ApiModelProperty("保险费")
    private Double premium;
    @ApiModelProperty("其他费用")
    private Double other_charges;
    @ApiModelProperty("原样返回字段")
    private String backparam;
    @ApiModelProperty(value = "商品类型", notes = "0文件类,1电子产品类,2办公用品类,服装鞋帽,箱包类," +
            "3化妆品,美容产品类,4珠宝,手表,眼镜,贵重饰品类,5食品,保健药品类,6工艺品类(包括瓷器,茶具,烹饪用品)," +
            "7玩具乐器类,8其他类")
    private String special;
    @ApiModelProperty("备注")
    private String remark;
    @ApiModelProperty("商品信息集合")
    private List<Item> items;
    @ApiModelProperty("寄件人信息")
    private YdOrderPlaceBean sender;
    @ApiModelProperty("收件人信息")
    private YdOrderPlaceBean receiver;
}
2.4.2 收寄件人信息参数
package com.hc.store.yunda;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @author chajintao
 * @date 2022/4/13 8:52
 */

@Data
@ApiModel("收寄信息")
public class YdOrderPlaceBean {
    @ApiModelProperty("姓名")
    private String name;
    @ApiModelProperty("公司")
    private String company;
    @ApiModelProperty("省份")
    private String province;
    @ApiModelProperty("市")
    private String city;
    @ApiModelProperty("区县")
    private String county;
    @ApiModelProperty("详细地址")
    private String address;
    @ApiModelProperty("邮编")
    private String postcode;
    @ApiModelProperty("固定电话(固话、手机号必填一项)")
    private String phone;
    @ApiModelProperty("手机号")
    private String mobile;

}
2.4.3 商品信息参数
package com.hc.store.yunda;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @author chajintao
 * @date 2022/4/13 8:49
 */
@Data
@ApiModel("商品信息")
public class Item {
    @ApiModelProperty("商品名称")
    private String name;
    @ApiModelProperty("商品数量")
    private String number;
    @ApiModelProperty("商品备注")
    private String remark;
    
}
2.4.4 @Test
@RequestMapping("/push")
    public String pushOrder() {

        String serverUrl = "https://openapi.yundaex.com/openapi-api/v1/order/pushOrder";

        Item item = new Item();
        item.setName("衣服");
        item.setNumber("1");
        item.setRemark("袜子");

        List<Item> items = new ArrayList<>();
        items.add(item);

        YdOrderPlaceBean receiver = new YdOrderPlaceBean();
        receiver.setAddress("青浦区盈港东路6679号");
        receiver.setCity("上海市");
        receiver.setCompany("");
        receiver.setProvince("上海市");
        receiver.setCounty("青浦区");
        receiver.setName("李四");
        receiver.setMobile("17601205970");

        YdOrderPlaceBean sender = new YdOrderPlaceBean();

        sender.setAddress("青浦区盈港东路7766号");
        sender.setCity("上海市");
        sender.setCompany("string");
        sender.setProvince("上海市");
        sender.setCounty("青浦区");
        sender.setName("李四");
        sender.setMobile("17601205970");

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");



        YdPushOrderParam orderParam = new YdPushOrderParam();

        orderParam.setItems(items);
        orderParam.setReceiver(receiver);
        orderParam.setSender(sender);

        orderParam.setAppid("000001");
        orderParam.setBackparam("散单测试");
        orderParam.setBackurl("http://www.baidu.com");

        orderParam.setOrderid(UUID.randomUUID().toString().replace("-", ""));
        orderParam.setOther_charges(0.0);
        orderParam.setFreight(10.0);
        orderParam.setPremium(1.0);
        orderParam.setRemark("是测试,不要接");

        orderParam.setSendendtime(simpleDateFormat.format(new Date()));

        orderParam.setSendstarttime(simpleDateFormat.format(new Date()));

        orderParam.setSize("0.12,0.23,0.11");
        orderParam.setSpecial("0");
        orderParam.setValue(126.5);
        orderParam.setWeight(0.0);

        String jsonParams = JSON.toJSONString(orderParam);
        System.out.println(JSON.toJSONString(orderParam));

        String re = OpenApiHttpUtils.doPostJson(serverUrl,jsonParams,appKey,appSecret);

        return re;
    }
2.4.5 result
{
    "code": "0000",
    "message": "请求成功",
    "result": true,
    "data": {
        "orderid": "97063e9ea22c4d2da77369af995fd946",
        "backparam": "散单测试"
    }
}

2.6 取消散件订单(新)

2.6.1 参数
package com.hc.store.yunda;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * @author chajintao
 * @date 2022/4/21 9:22
 */
@ApiModel("散单取消参数")
@Data
public class YdCancelParam {

    @ApiModelProperty(value = "app_key", required = true)
    private String appid;
    @ApiModelProperty(value = "原样返回字段", required = false)
    private String backparam;
    @ApiModelProperty(value = "订单号", required = true)
    private String orderid;

}

2.6.2 @Test
@RequestMapping("/cancel")
    public String cancel(){

        String serverUrl = "https://openapi.yundaex.com/openapi-api/v1/order/cancelOrder";
        YdCancelParam yd = new YdCancelParam();

        yd.setAppid("000001");
        yd.setBackparam("取消散单测试");
        yd.setOrderid("97063e9ea22c4d2da77369af995fd946");

        String jsonParams = JSON.toJSONString(yd);

        String result = OpenApiHttpUtils.doPostJson(serverUrl,jsonParams,appKey,appSecret);
        System.out.println(result);

        return result;
    }
2.6.3 result
{
    "code": "0000",
    "message": "请求成功",
    "result": true,
    "data": {
        "orderid": "97063e9ea22c4d2da77369af995fd946",
        "backparam": "取消散单测试"
    }
}

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值