淘系订单查询列表【奇门自定义接口】
奇门申请地址:https://open.taobao.com/docV3.htm?docId=118393&docType=1&source=search#ss13
奇门系统参数的target_app_key 给 23060081
奇门接口路由参数:
接口需要额外带上customer_id,传不同的customer_id来路由不同的商家链接, 具体的值需要在进行授权的时候向聚水潭获取
customer_id获取方法:文档中的上线流程 https://openweb.jushuitan.com/doc?docId=250
奇门API调用示例:
奇门调用签名sign生成文档:https://open.taobao.com/doc.htm?docId=101617&docType=1
接口限频:qps 8
平台订单shop_status字段枚举:
淘宝天猫:
TRADE_NO_CREATE_PAY(没有创建支付宝交易)
WAIT_BUYER_PAY(等待买家付款)
SELLER_CONSIGNED_PART(卖家部分发货)
WAIT_SELLER_SEND_GOODS(等待卖家发货,即:买家已付款)
WAIT_BUYER_CONFIRM_GOODS(等待买家确认收货,即:卖家已发货)
TRADE_BUYER_SIGNED(买家已签收,货到付款专用)
TRADE_FINISHED(交易成功)
TRADE_CLOSED(付款以后用户退款成功,交易自动关闭)
TRADE_CLOSED_BY_TAOBAO(付款以前,卖家或买家主动关闭交易)
PAY_PENDING(国际信用卡支付付款确认中)
WAIT_PRE_AUTH_CONFIRM(0元购合约中)
PAID_FORBID_CONSIGN(拼团中订单或者发货强管控的订单,已付款但禁止发货)
抖音:
1 待确认/待支付(订单创建完毕)
103 部分支付
105 已支付
2 备货中
101 部分发货
3 已发货(全部发货)
4 已取消
5 已完成(已收货)
21 发货前退款完结
22 发货后退款完结
39 收货后退款完结
美团闪购:
1-用户已提交订单
2-向商家推送订单
4-商家已确认
8-订单已完成
9-订单已取消
拼多多:
1:待发货
2:已发货待签收
3:已签收
京东:
WAIT_SELLER_STOCK_OUT 等待出库
WAIT_GOODS_RECEIVE_CONFIRM 等待确认收货
WAIT_SELLER_DELIVERY等待发货(只适用于海外购商家,含义为“等待境内发货”标签下的订单,非海外购商家无需使用
PAUSE 暂停(loc订单可通过此状态获取)
FINISHED_L 完成
TRADE_CANCELED 取消
LOCKED 已锁定
POP_ORDER_PAUSE pop业务暂停,如3c号卡/履约/黄金的业务,可传此状态
有赞:
WAIT_BUYER_PAY:等待买家付款,定金预售描述:定金待付、等待尾款支付开始、尾款待付
TRADE_PAID:订单已支付 ,该状态仅代表当前订单已支付成功,表示瞬时状态,稍后会自动修改成后面的状态。如果不关心此状态请再次请求详情接口获取下一个状态
WAIT_CONFIRM:待确认,包含待成团、待接单等等。即:买家已付款,等待成团或等待接单
WAIT_SELLER_SEND_GOODS:等待卖家发货,即:买家已付款
WAIT_BUYER_CONFIRM_GOODS 等待买家确认收货,即:卖家已发货
TRADE_SUCCESS:买家已签收以及订单成功
TRADE_CLOSED:交易关闭
微盟微商城
0-待支付
1-待发货
2-已发货/已备货
3-已完成/已核销
4-已取消
5-已评论
6-已支付但不可发货(需外部审核)
饿了么:
1:待确认
2:已确认
7:骑士已接单
8:骑士已取餐
9:已完成
10:已取消
天猫国际直营、天猫国际、阿里健康、猫享没有枚举值 都是已付款订单
请求参数中start_ts的说明:
使用ts的查询条件是唯一可避免分页查询过程中因数据变动而导致的漏单问题,原因是该查询条件是数据库中的时间戳,sql server中的行版本号。只要当前这条数据在数据库中有变化任何字段变化ts的值都会自增,全表唯一的自增值,非业务上做的时间值更新。使用ts的查询模板
第一次请求:{"start_ts":1."is_get_total":false,"page_index":1."page_size":100} //第一次请求ts从1开始
第二次请求:{"start_ts":传第一次返回的最大ts值."is_get_total":false,"page_index":1."page_size":100} //一直请求到查不到比入参ts值本身更大的数据为止
奇门自定义调用示例代码C#版本:主要是附加customer_id和target_app_key两个参数
其他语言如java,php请参考奇门官方示例代码请点击“奇门官方示例代码及SDK”
//初始方法
public void Setup()
{
string appkey = "";//奇门的appkey
string secret = "";//奇门的密钥
string session = "";//非必填参数 可以不传
IDictionary param = new Dictionary();
//业务参数传参
param.Add("page_index", "1");
param.Add("page_size", "10");
param.Add("o_ids", "5459022");
//Util.Post 集成了 系统参数 和 计算 sign的方法
Console.WriteLine("返回结果:" + Util.Post("http://a1q40taq0j.api.taobao.com/router/qm", appkey, secret, "jushuitan.order.list.query", session, param));
}
//Util方法
public class Util
{
///
/// 给TOP请求签名 API v2.0
///
/// 所有字符型的TOP请求参数
/// 签名密钥
/// 签名
protected static string CreateSign(IDictionary parameters, string secret)
{
parameters.Remove("sign");
IDictionary sortedParams = new SortedDictionary(parameters);
IEnumerator> dem = sortedParams.GetEnumerator();
StringBuilder query = new StringBuilder(secret);
while (dem.MoveNext())
{
string key = dem.Current.Key;
string value = dem.Current.Value;
if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(value))
{
query.Append(key).Append(value);
}
}
query.Append(secret);
MD5 md5 = MD5.Create();
byte[] bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(query.ToString()));
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();
}
///
/// 组装普通文本请求参数。
///
/// Key-Value形式请求参数字典
/// URL编码后的请求数据
protected static string PostData(IDictionary parameters)
{
StringBuilder postData = new StringBuilder();
bool hasParam = false;
IEnumerator> dem = parameters.GetEnumerator();
while (dem.MoveNext())
{
string name = dem.Current.Key;
string value = dem.Current.Value;
// 忽略参数名或参数值为空的参数
if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(value))
{
if (hasParam)
{
postData.Append("&");
}
postData.Append(name);
postData.Append("=");
postData.Append(Uri.EscapeDataString(value));
hasParam = true;
}
}
return postData.ToString();
}
///
/// TOP API POST 请求
///
/// 请求容器URL
/// AppKey
/// AppSecret
/// API接口方法名
/// 调用私有的sessionkey
/// 请求参数
/// 返回字符串
public static string Post(string url, string appkey, string appSecret, string method, string session, IDictionary param)
{
#region -----API系统参数----
param.Add("customer_id", "");//申请奇门自定义场景的customer_id
param.Add("target_app_key", "23060081");//申请奇门自定义场景的target_app_key
param.Add("app_key", appkey);
param.Add("method", method);
param.Add("session", session);//非必填
param.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
param.Add("format", "json");
param.Add("v", "2.0");
param.Add("sign_method", "md5");
param.Add("sign", CreateSign(param, appSecret));
#endregion
string result = string.Empty;
#region ---- 完成 HTTP POST 请求----
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.KeepAlive = true;
req.Timeout = 300000;
req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
byte[] postData = Encoding.UTF8.GetBytes(PostData(param));
Stream reqStream = req.GetRequestStream();
reqStream.Write(postData, 0, postData.Length);
reqStream.Close();
HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);
Stream stream = null;
StreamReader reader = null;
stream = rsp.GetResponseStream();
reader = new StreamReader(stream, encoding);
result = reader.ReadToEnd();
if (reader != null) reader.Close();
if (stream != null) stream.Close();
if (rsp != null) rsp.Close();
#endregion
return Regex.Replace(result, @"[\x00-\x08\x0b-\x0c\x0e-\x1f]", "");
}
}