示例代码


NodeJS版 C#版 PHP版

统一参数列表


名称 必要 说明
data 见表格
external_company 见下文
sign 见下文
timer 见下文

data示例

数据类型: JSON

名称 类型 必要 说明
express_no String 订单号,如果没有则自动生成
orders Json 见表格
member_is_need_safe Int 是否需要保险
business_id Int 见表格
agency String 代理店名称
sender String 发件人
send_city String 发件城市/区域,如果是退回货物业务类型,必填
sender_address String 发件地址
sender_post_code String 发件邮编
sender_email String 发件人邮箱
telphone String 发件人电话
sheng String 收件人省
shi String 收件人市
address String 收件人地址
mobile String 收件人手机
post_code String 收件人邮编
items Int 包裹件数
to_name String 收件人
boxs Int 盒子数
weight Double 运单重量
unitprice Double 运单单价
package String 运单包装数量
tariff Double 运单关税
safety Double 运单保险
sendMethod int 1.派送 2.自提(如果是同城洲际业务类型的话,必传)
packageLengh int 体积 长度(不传默认为10)
packageHeight int 体积 高度(不传默认为10)
packageWidth int 体积 宽度(不传默认为10)

orders示例

数据类型: JSON

名称 类型 必要 说明
name String 商品名称
amount Double 商品数量

提交数据示例

数据类型: JSON

{
    "express_no":1111,
    "orders":[{
        "name":"aa",
        "amount":2,
        "unit":"AUD",
        "price":9
        },
        { 
            "name":"bb",
            "amount":3,
            "unit":"AUD",
            "price":13.5
        }],
    "no":"A",
    "member_is_need_safe":1,
    "business_id":1,
    "agency":"安安",
    "sender":"琇琇",
    "sender_address":"辽宁省 大连市",
    "sender_post_code":"10001",
    "sender_email":"aaa@163.com",
    "telphone":"10086",
    "sheng":"辽宁",
    "shi":"大连",
    "address":"中山区 大公街21号",
    "mobile":"10010",
    "post_code":"100000",
    "items":3,
    "to_name":"兔子",
    "boxs":3,
    "weight":100,
    "unitprice":100,
    "package":100,
    "tariff":100,
    "safety":100,
    "batch_id":8,
    "sendMethod":1,
    "packageLengh":1,
    "packageHeight":1,
    "packageWidth":1
}
            

接口返回

数据类型: JSON

名称 类型 说明
success Int 是否成功(成功为1,失败为0)
message String 当失败时出现,为错误信息
express_no String 单号,成功时出现


data 示例

数据类型: JSON

名称 类型 必要 说明
batch_name String 批次名称

接口返回

数据类型: JSON

名称 类型 说明
success Int 是否成功(成功为1,失败为0)
message String 当失败时出现,为错误信息
id int 批次id success = 1, id = 111

data 示例

数据类型: JSON

名称 类型 必要 说明
batch_name String 批次名称

接口返回

数据类型: JSON

名称 类型 说明
success Int 是否成功(成功为1,失败为0)
message String 当失败时出现,为错误信息

data 示例

数据类型: JSON

名称 类型 必要 说明
express_no String 中邮运单号

接口返回

数据类型: JSON

名称 类型 说明
success Int 是否成功(成功为1,失败为0)
message String 当失败时出现,为错误信息
weight String 重量,成功时出现
获取退回货物面单 / 接口地址 http://captureupload.30post.cn/api/bill/ReturnsLabel

data 示例

数据类型: JSON

名称 类型 必要 说明
express_no String 邮局单号

接口返回

数据类型: JSON

名称 类型 说明
success Int 是否成功(成功为1,失败为0)
message String 当失败时出现,为错误信息
Url string 面单访问路径
其他信息 & 代码示例

分公司与业务类型:


分公司 : no
ID 分公司 内单号
4 悉尼公司 A
10 墨尔本明扬 Y
9 堪培拉 K
7 阿德莱德 S
业务类型 : business_id
ID 业务名称
4 30.3特惠
3 邮政ECI
2 澳洲韵达
1 中邮小包

签名算法:


签名说明

timer: 指定格式的时间,签名过期时间

sign:数据签名

external_company:access key

sk:secret key



签名代码 (C#)

public static string MD5(string context)
{
    byte[]  ret = Encoding.Default.GetBytes(context);
    System.Security.Cryptography.MD5 md5 = new  System.Security.Cryptography.MD5CryptoServiceProvider();
    byte[]  output = md5.ComputeHash(ret);
    return  BitConverter.ToString(output).Replace("-", "");
}
                        
public static string  Generate(IDictionary<string, object>  data, DateTime? expire, string sk)
{
    SortedDictionary<string, object>  sort = new SortedDictionary<string, object>(data);
    StringBuilder  ret = new StringBuilder();
    foreach  (KeyValuePair<string,  object> item in  sort)
    {
        ret.Append(item.Key.ToString().ToLower());
        ret.Append("{$$}");
        ret.Append(item.Value.ToString());
        ret.Append("{$$$}");
    }
    if  (expire.HasValue)
    {
        ret.Append(string.Format("{0:yyyy-MM-dd HH:mm:ss}", expire));
    }
        ret.Append("{$$$$}");
        ret.Append(sk);
        string  sign = MD5(ret.ToString()).ToLower();
        return  sign;
    }
使用方法

var data = new Dictionary() {
{ "data", "{batch_name:'AAAAAA'}" },
{ "external_company", "系统分配AK" },
};

var timer = DateTime.Now.AddMinutes(5);
data.Add("sign", Generate(data, timer, "系统分配SK"));
data.Add("timer", timer);

var ret = RequestHelper.Post("http://captureupload.30post.cn/api/bill/closebatch", data, Encoding.UTF8);
                            

签名具体生成步骤

第一步:对参数按照key value的格式,并按照参数名ASCII字典序排序拼接,生成的字符串如下如下:


stringA="data{$$}当前接口请求的json数据{$$$}external_company{$$}分配的ak{$$$}yyyy-MM-dd HH:mm:ss{$$$$}分配的sk";
                        

第二步:MD5计算前面的字符串得出签名:

sign=MD5(stringA)

测试 AK&SK


Access Key Secret Key
c2e2e01c-6c95-4146-99d6-815811755603 5fd68fbe-16a4-4851-bc56-3b1890a40a90

NodeJS版代码示例


PHP版代码示例