示例代码


NodeJS版 C#版 PHP版

统一参数列表


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

获取商品列表 / 接口地址 http://p.30post.cn/Api/Product/ItemList

data 示例

数据类型: JSON

名称 类型 必要 说明
p UInt 页数
pagesize UInt 每页数据条数
classid UInt 商品类别ID
alisename String 内品名
barCode String 商品条码

接口返回

数据类型: JSON

名称 类型 说明
success Int 是否成功(成功为1,失败为0)
total UInt 返回的rows条数
rows JSON(Array) 数据列表,仅成功时返回

rows示例

数据类型: JSON(Array)

rows:[
{
 'ClassType':'1', 
 'ProductName':'安娜 奶粉',
 'AddTime':'2016-1-25 22:00:44',
 'Price':'255.00', 
 'Weight':'1.00',
 'ClassName':'奶粉',
 'P_id':'1234',
 'Manufacturer':'安娜',
 'BrandName':'安娜',
 'Images':[
  {'ProFilePath':'http://p.30post.cn/UploadFile/123.jpg'}]
}
]
获取商品详情 / 接口地址 http://p.30post.cn/Api/Product/Item

data 示例

数据类型: JSON

名称 类型 必要 说明
P_id UInt 商品ID

接口返回

数据类型: JSON

名称 类型 说明
success Int 是否成功(成功为1,失败为0)
message String 当失败时出现,为错误信息
entity JSON 商品详情,成功时出现
获取分类商品 / 接口地址 http://p.30post.cn/Api/Product/ItemClass

data 示例

数据类型: JSON

名称 类型 必要 说明
className String 商品类别名
p UInt 页数
pagesize UInt 每页数据条数
order Boolean 为true时按id排序后返回结果,默认false

接口返回

数据类型: JSON

名称 类型 说明
success Int 是否成功(成功为1,失败为0)
total UInt 返回的rows总数
rows JSON(Array) 数据列表,仅成功时返回
获取分类商品 / 接口地址 http://p.30post.cn/Api/Product/ItemAliseList

data 示例

数据类型: JSON

名称 类型 必要 说明
p UInt 页数
pagesize UInt 每页数据量
order Boolean 排序
alisename String 内品名
barCode String 商品条码

接口返回

数据类型: JSON

名称 类型 说明
success Int 是否成功(成功为1,失败为0)
total UInt 返回的rows总数
rows JSON(Array) 数据列表,仅成功时返回
rows:[{
'productId':'91',
'productName':'A2Platinum白金婴儿奶粉3段900克',
'price':'165.0000',
'aliseName':'bbb'
}]
其他信息 & 代码示例

分公司与业务类型:


分公司 : 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
52a5b692-081a-4a90-a62a-c0312735be9b 7f7af653-407e-4a02-98e3-94722b09bff2

NodeJS版代码示例


PHP版代码示例