平台简介

搜物网开放平台是基于搜物网业务的开放平台,提供外部合作伙伴参与服务搜物网用户的各类原材料,例如API、账号体系、数据安全等。她是搜物网商务基础服务的重要开放途径,将推动各行各业定制、创新、进化,并最终促成新商业文明生态圈的建立。我们的使命是把搜物网的商品、用户、交易、物流等一系列电子商务基础服务,像水、电、煤一样输送给有需要的商家、开发者、社区媒体和各行各业。

接入流程

开放平台采用HTTP协议POST方式传输数据,传输过程中采用签名摘、时间戳和令牌确保传送安全,返回时可以选择JSON和XML格式数据。

  1. 用户在搜物网注册账号密码获取开放平台AppKey 和 AppSecret
  2. 拼接系统级参数和应用级参数进行签名
  3. 数据为Key=Value键值对,Key需要全部小写,Value需要转码,转码函数 .NET:System.Uri.EscapeDataString JAVA:encode PHP:urlencode
  4. 将数据POST到网关

开放平台网关

http://sop.sowu.com/v4

系统级参数

名称 类型 描述 约束 权限
AppKey string 开发者申请的AppKey 必填; 所有用户
Timestamp int 时间戳 必填; 所有用户
Token string 本地生成的唯一令牌 必填; 所有用户
Method string 接口名称 必填; 所有用户
Signature string 签名 必填; 所有用户
Format string 返回类型JSON或者XML 选填(默认值JSON); 所有用户

传入参数说明

  1. 系统级参数Token为每次请求的唯一16位字符串,用于确保客户端与服务端通信唯一,用于防重放攻击,客户端需要验证每次返回的Token是否一致。
  2. 系统级参数Timestamp为标准时间戳,如果返回时间戳错误,请调整服务器时间与互联网时间一致。
  3. 所有数据以Key-Value字符串作为键值对
  4. 系统基础值类型数据直接为字符串
  5. 枚举类型可以为 名称或者常量值
  6. 自定义对象,泛型,数组都需要转换为JSON字符串作为Value值
  7. 所有可空类型Nullable均为选填

签名规则

  1. 将系统级参数和应用级参数组成 Key-Value 键值对,Key不能为空,Value可为空。
  2. 将键值对进行 Key 顺序排序。
  3. 排序后循环将 Key-Value 合并成字符串
  4. 将 AppSecret 添加到最后
  5. 将拼接好后的字符串转换字节数数组
  6. 获取字节数组的MD5 哈希值
  7. 将 哈希值 转换为十六进制两位字符大写表现形式

C# 示例:

//获取签名
public static string GetSignature(SortedDictionary parameters, string appSecret)
{
    parameters.Remove("signature");
    var parametersString = new StringBuilder();
    foreach (var item in parameters)
    {
        if (!string.IsNullOrEmpty(item.Key))
        {
            parametersString.Append(item.Key.ToLower()).Append(item.Value);
        }
    }
    parametersString.Append(appSecret);
    return MD516(parametersString.ToString());
}
//MD5 16位加密
public static string MD516(string text)
{
    var md5 = new MD5CryptoServiceProvider();
    var temp = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(text)), 4, 8);
    temp = temp.Replace("-", "");
    return temp;
}
            

返回消息

名称 类型 描述
State bool 状态
Description string 描述
Token string 每次客户端发起的唯一令牌
Result object 数据

传出参数说明

  1. 每次返回 Http Header 中包含参数 Signature,由传出数据和AppSecret的MD5构成,用于客户端验证服务段数据是否篡改。
  2. 消息中的 Token 为客户端每次发起的唯一16位字符串,服务端原样返回,用于防止重放攻击。