订阅(上传单号数据)

参数 类型 描述
account String 使用者账号,由快刀云分配,测试时可以使用 test
data String

快递数据,格式如下

申通,668390930489,123

第一个参数为 快递公司名称

第二个参数为快递单号

第三个参数(可选)为“自定义参数”(长度不超过40个字符),该数据将在回调时以“state”参数推送回去(注意:回调时state参数不参与生成sign验证),例如:您可以将订单ID之类的数据以这种方式传递到快刀云系统,在收到回调数据时,就可以使用该订单ID来匹配交易数据。

参数之间以英文逗号(,)连接

请只填写"一个"正确的快递数据

sign String

签名,规则如下

MD5(secret+data+secret)后转换为大写

其中secret是快刀云提供的接口授权码,测试时固定为“kd8cctestsecret”

完整的请求URL为(为了查看方便,我们人为地将参数之间用回车分隔开):

http://www.kuaidaoyun.com/posttest.aspx?account=test
&data=申通,668390930489
&sign=13D0637E670994AAE4B610AE64C8247E

实际URL为:

http://www.kuaidaoyun.com/posttest.aspx?account=test&data=申通,668390930489&sign=13D0637E670994AAE4B610AE64C8247E

成功时返回:  0;123456(分号后的数字会动态变化)  

失败时返回的数据格式为:  -x;错误描述  

返回内容 错误处理
0;123456(分号后的数字会动态变化) 订阅成功,返回数字0;123456(0表示成功,分号后是批次ID,建议保存)
-1;账号无效! 请核对传入的账号是否为快刀云给你分配的账号
-2;参数中没有有效的单号! 请检查单号参数是否拼接错误
-3;签名验证错误! 请检查签名参数是否拼接错误
-3;签名验证错误! 请检查是否按要求生成的签名
-4;缺少参数! 请核对是否少传入了参数,或参数名拼写错误
-9;系统错误:错误详情 请根据错误详情进行处理,如果持续大量出现该错误,请通知我们!

订阅PHP示例代码:下载

$account = '你的账号';
$data = '圆通速递,8089678087
$appSecret = '你的授权码';

//生成签名
$sign = $appSecret;
$sign.=$data;
$sign.=$appSecret;
$sign = strtoupper(md5($sign));

$post_data = array(   
    'account' => $account,
    'data' => $data,
    'sign' => $sign
);

$postdata = http_build_query($post_data);
$options = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type:application/x-www-form-urlencoded',
'content' => $postdata,
'timeout' => 60 // 超时时间(单位:s)
));
$context = stream_context_create($options);
$result = file_get_contents('http://www.kuaidaoyun.com/posttest.aspx', false, $context);
print_r('返回结果:'.$result);

订阅C#示例代码:下载

private void btnTest_Click(object sender, EventArgs e)
{
    string outids = "圆通速递,8089678087";

    string sign = CreateSign("你的授权码" + outids + "你的授权码");
    string param = "data=" + outids + "&account=你的账号&sign=" + sign;
    byte[] postdata = Encoding.UTF8.GetBytes(param);
    HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create("http://www.kuaidaoyun.com/posttest.aspx");
    myRequest.ContentType = "application/x-www-form-urlencoded";    
    string content = "";
    if (!string.IsNullOrEmpty(param))
    {
        myRequest.Method = "POST";
        myRequest.Timeout = 30000;
        myRequest.ContentLength = postdata.Length;
        using (Stream newStream = myRequest.GetRequestStream())
        {
            newStream.Write(postdata, 0, postdata.Length);
        }
    }
    using (HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse())
    {
        using (StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8))
        {
            content = reader.ReadToEnd();
        }
    }
    MessageBox.Show("返回:" + content);
}
public static string CreateSign(string Sign)
{
    MD5 md5 = MD5.Create();
    byte[] bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(Sign));

    StringBuilder result = new StringBuilder();
    for (int i = 0; i < bytes.Length; i++)
    {
        string hex = bytes[i].ToString("X");
        if (hex.Length == 1)
        {
            result.Append("0");
        }
        result.Append(hex);
    }
    return result.ToString();
}