接口使用说明

  1. 获取token(token有效期一个月,不用每次重复获取)
    HttpClient client = new HttpClient();
    client.BaseAddress = new Uri(string.Concat("http://auth.beimai.com", "/"));
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    client.DefaultRequestHeaders.Add("client_id", "1001");
    client.DefaultRequestHeaders.Add("client_secret", "T1lPsaX1HfeZxOFiVFgQK9R3cST9vwO3");
    HttpResponseMessage response = client.PostAsync("api/auth/token", null).Result;
    object obj=null;
    if (response.IsSuccessStatusCode)
    {
        obj = response.Content.ReadAsAsync<object>().Result;
    }
    然后提取json对象中的access_token 即可
                            
                    
  2. 每一个接口都有的默认参数,不再对每一个接口调用做说明
    1.app_key:在sass平台唯一标识
    2.access_token:参考补充说明1获取token
    3.sign:根据 access_token app_key 秘钥 顺序组合得到Md5值   秘钥可以登录sass平台上设置
                        
  3. 实例:商品同步接口
    HttpClient
    HttpClient client = new HttpClient();
    client = new HttpClient();
    client.BaseAddress = new Uri(string.Concat("http://cloudapi.beimai.com", "/"));
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    string pstr = "{\"page\":1,\"pagesize\":10}";
    string timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
    string sign=Tool.SignHelper.Sign("access_token=" + access_token + "&app_key=1001&bm_param="+pstr+"&timestamp="+ timestamp, "从第三方平台获取");
    
    /*=====================两种方式针对不同的接口使用不同的调用方式===================*/
    
    //下订单采购单等数据提交类的,使用以下代码,如:
    var content = new FormUrlEncodedContent(new Dictionary<string, string>() { 
                { "SourceId", orderItem.SourceId.ToString() },
                { "SourceOrderId", orderItem.SourceOrderId } ,
                { "ReceiveWay", orderItem.ReceiveWay.ToString() } ,
                { "ProvinceId", orderItem.ProvinceId.ToString() } ,
                { "CityId", orderItem.CityId.ToString() } ,
                { "AreaId", orderItem.AreaId.ToString() },
                { "Address", orderItem.Address } ,
                { "ZipCode", orderItem.ZipCode } ,
                { "Receiver", orderItem.Receiver} ,
                { "TelPhone", orderItem.TelPhone } ,
                { "OrderTotal", orderItem.OrderTotal.ToString() },
                { "ProductAmount", orderItem.ProductAmount.ToString() } ,
                { "IsOpenInvoice", orderItem.IsOpenInvoice.ToString() } ,
                { "PList", pstr }
                });
    HttpResponseMessage response02 = client.PostAsync("api/order/placeorder?app_key=1001&access_token=" + HttpUtility.UrlEncode(token.access_token) + "&sign=" + HttpUtility.UrlEncode(sign), content).Result;
    
    //非数据提交类的,使用以下调用方式,如:
    HttpResponseMessage response02 = client.PostAsync("api/ps/gsbmpd?app_key=1001&access_token=" + HttpUtility.UrlEncode(access_token) + 
            "&sign=" + HttpUtility.UrlEncode(sign) + "&bm_param=" + HttpUtility.UrlEncode(pstr) + "&timestamp=" + HttpUtility.UrlEncode(timestamp), null).Result;
    
    /*=====================两种方式针对不同的接口使用不同的调用方式===================*/
    
    object obj=null;
    if (response02.IsSuccessStatusCode)
    {
        obj = response02.Content.ReadAsAsync<object>().Result;
    }
    然后提取json对象中的result 即可,可分页循环处理直到取不到结果为止。
                        
  4. 配置
    北迈测试client_secret:T1lPsaX1HfeZxOFiVFgQK9R3cST9vwO3
    北迈测试token: E/kNDwzStbDUdEyr+M8BuQogRfNYWDuR7/6c88eFj6rDHn3I2A2Nh3jmrnrn1wtA4cdpIV9POdqFtKf53CMyEBjzMmO0NHHChylSUl+HEjy+S04ht8ysWzlfgcnhUZwgD94ZAnA4YqHN8R5i0Z83mV6HDoP+vFcHNzhhXGhvwYphrxtq1rFLgm18tdZXjXeh0ewmuaslGPbdyyiyZD1ZU0MMugKyRq4mBKDlYBI+D4hn87MhPT/1VSBacXm1FMpf7FWDEV/p5vKhTZ0LXCz64FQCSAg3ixmrlI+Ale9waVlbaHHGm8XaNsyfInNg9XU7acOCsX7lt+YcAaUU8NsbTg==
                    
  5. 加密算法
    /// <param name="prestr">需要签名的字符串</param>
    /// <param name="key">密钥</param>
    /// <returns>签名结果</returns>
    public static string Sign(string prestr, string key)
    {
        StringBuilder sb = new StringBuilder(32);
        prestr = prestr + key;
        MD5 md5 = new MD5CryptoServiceProvider();
        byte[] t = md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(prestr));
        for (int i = 0; i < t.Length; i++)
        {
            sb.Append(t[i].ToString("x").PadLeft(2, '0'));
        }
        return sb.ToString();
    }