当时的情况是这样的:我们一个客户用了我们的订餐系统,也在淘宝外卖上开了店,但是订餐系统中的订单都要通过调度系统,根据配送员的位置,把订单发送给合适的配送员,所以要把淘宝外卖的订单加到订餐系统中(据说淘宝外卖也是因为味捷外卖才开发这个接口的)。

  淘宝外卖提供的接口我知道的有三个,1.获取未确认的订单;2.确认订单;3.拒绝订单。所以订餐系统要做的就是从淘宝外卖获取未确认的订单、确认订单并加入订餐系统。

  开放平台地址:

  http://open.taobao.com/doc/api_cat_detail.htm?scope_id=317&category_id=102

  关于授权:

  http://open.taobao.com/doc/category_list.htm?id=199

  也上一张我们调度系统的图吧,这样大家可能更直观些,主要就是根据商家的位置,用户的位置,及配送员手上的订单量等情况来分配订单,不过目前都是调度人员人式调度的。

  

  下面简单的说明下接口调用方法,及示例代码。【注:之前他的接口文档中有一个bug,咨询了他们技术支持才处理好,具体位置不太记得了,也不知道他们修改了没。】

获取访问权限

  这部分代码比较简单,就是到指定地址获取 top_session,代码如下:

string appkey = WebUtility.GetConfigKey("taobao_appkey");string url = "http://container.open.taobao.com/container?appkey=" + appkey + "&encode=utf-8";
Response.Redirect(url);
 string appkey = WebUtility.GetConfigKey("taobao_appkey");string url = "http://container.open.taobao.com/container?appkey=" + appkey + "&encode=utf-8";
Response.Redirect(url);

获取未确认的订单

  这一步要用到上一步中获取的 top_session,基本也就是构造链接,然后用官方提供的 TopSdl.dll,转成IList<TakeoutThirdOrder>,这样就直接Repeater 绑定了,都是程序员,代码一看就明白了。程序中有一个 shopid,这是商户号,开店时会提供。

string top_session = Request["top_session"];
if (top_session == null || top_session == "")
{
AlertScript.RegScript(this.Page, this.UpdatePanel1, "tipsWindown('提示信息','text:未授权,不能获取订单,请先授权!','250','150','true','1000','true','text');init();");
return;
}
string shopid = WebUtility.FixgetCookie("taobao_shopid");
if (shopid == null || shopid == "")
{
Response.Redirect("getsectionkey.aspx");
}

string appkey = WebUtility.GetConfigKey("taobao_appkey");
string appsecret = WebUtility.GetConfigKey("taobao_appsecret");

//参数集合
SortedList<string, string> parameters = new SortedList<string, string>();
//2.1 应用级输入参数
parameters.Add("is_all", "true");
parameters.Add("store_id", shopid);
parameters.Add("max_size", "20");
//2.2 系统级参数
parameters.Add("method", "taobao.trade.waimai.get");
parameters.Add("session", top_session);
parameters.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
parameters.Add("format", "json");
parameters.Add("app_key", appkey);
parameters.Add("v", "2.0");
parameters.Add("partner_id", "top-apitools");

//2.3 生成sign,格式: app_secret参数1值1参数2值2,生成md5后转为大写
StringBuilder sb = new StringBuilder();
sb.Append(appsecret);
foreach (KeyValuePair<string, string> item in parameters)
{
sb.Append(item.Key + item.Value);
}
//sb.Append(appsecret);

parameters.Add("sign", WebUtility.GetMd5(sb.ToString()).ToUpper());

//3.生成url
string url = "http://gw.api.taobao.com/router/rest?";//线上环境: http://gw.api.taobao.com/router/rest 测试环境: http://gw.sandbox.taobao.com/router/rest
StringBuilder query = new StringBuilder();
foreach (KeyValuePair<string, string> item in parameters)
{
query.Append(item.Key + "=" + System.Web.HttpUtility.UrlEncode(item.Value, System.Text.Encoding.UTF8) + "&");
}
url += query.ToString().TrimEnd(new char[] { '&' });

ITopClient client = new DefaultTopClient(url, appkey, appsecret, "json");
TradeWaimaiGetRequest req = new TradeWaimaiGetRequest();
req.StoreId = Convert.ToInt32(shopid);
req.IsAll = true;
req.MaxSize = 20L;

TradeWaimaiGetResponse response = client.Execute(req);
if (response.Result != null && response.Result.ResultList != null)
{
ttOrderlist = response.Result.ResultList;
}
BindData();

string top_session = Request["top_session"];if (top_session == null || top_session == ""){AlertScript.RegScript(this.Page, this.UpdatePanel1, "tipsWindown('提示信息','text:未授权,不能获取订单,请先授权!','250','150','true','1000','true','text');init();");return;}string shopid = WebUtility.FixgetCookie("taobao_shopid");if (shopid == null || shopid == ""){Response.Redirect("getsectionkey.aspx");}string appkey = WebUtility.GetConfigKey("taobao_appkey");string appsecret = WebUtility.GetConfigKey("taobao_appsecret");//参数集合SortedList<string, string> parameters = new SortedList<string, string>();//2.1 应用级输入参数parameters.Add("is_all", "true");parameters.Add("store_id", shopid);parameters.Add("max_size", "20");//2.2 系统级参数parameters.Add("method", "taobao.trade.waimai.get");parameters.Add("session", top_session);parameters.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));parameters.Add("format", "json");parameters.Add("app_key", appkey);parameters.Add("v", "2.0");parameters.Add("partner_id", "top-apitools");//2.3 生成sign,格式: app_secret参数1值1参数2值2,生成md5后转为大写StringBuilder sb = new StringBuilder();sb.Append(appsecret);foreach (KeyValuePair<string, string> item in parameters){sb.Append(item.Key + item.Value);}//sb.Append(appsecret);parameters.Add("sign", WebUtility.GetMd5(sb.ToString()).ToUpper());//3.生成urlstring url = "http://gw.api.taobao.com/router/rest?";//线上环境: http://gw.api.taobao.com/router/rest  测试环境: http://gw.sandbox.taobao.com/router/restStringBuilder query = new StringBuilder();foreach (KeyValuePair<string, string> item in parameters){query.Append(item.Key + "=" + System.Web.HttpUtility.UrlEncode(item.Value, System.Text.Encoding.UTF8) + "&");}url += query.ToString().TrimEnd(new char[] { '&' });ITopClient client = new DefaultTopClient(url, appkey, appsecret, "json");TradeWaimaiGetRequest req = new TradeWaimaiGetRequest();req.StoreId = Convert.ToInt32(shopid);req.IsAll = true;req.MaxSize = 20L;TradeWaimaiGetResponse response = client.Execute(req);if (response.Result != null && response.Result.ResultList != null){ttOrderlist = response.Result.ResultList;}BindData();

确认订单

 这个也其他是参考官方的文档,没有特别的地方。上代码:

protected void rtpOrderlist_ItemCommand(object source, RepeaterCommandEventArgs e)
{
string type = e.CommandName;
string oid = e.CommandArgument.ToString();
switch (type)
{
case "pass":
//确认后,加到系统(这部分订单要再加一个步定位(用户,商家)修改这个这个字段:latlng)
//先判断此订单是否已经加到系统
string sql = " orderid='" + oid + "' ";
if (bll.GetCount(sql) > 0)
{
AlertScript.RegScript(this.Page, this.UpdatePanel1, "tipsWindown('提示信息','text:此订单已经加入系统,请不要重复操作!','250','150','true','2000','true','text');init();");
return;
}
TakeoutThirdOrder model = ttOrderlist.Where(p => p.Id.ToString() == oid).ToList<TakeoutThirdOrder>()[0];
//1.加到系统,
ETogoOrderInfo ordermodel = new ETogoOrderInfo();
IList<FoodInOrderInfo> foodlist = new List<FoodInOrderInfo>();
decimal allfoodmoney = 0;
foreach (OrderGoods item in model.GoodsList)
{
FoodInOrderInfo fmodel = new FoodInOrderInfo();
fmodel.FoodID = 0;
fmodel.FoodName = item.Name;
fmodel.FoodPrice = Convert.ToDecimal(item.RealPrice);
fmodel.Currentprice = fmodel.FoodPrice;
fmodel.package = 0;
fmodel.Num = Convert.ToInt32(item.Count);
allfoodmoney += fmodel.FoodPrice * fmodel.Num;

foodlist.Add(fmodel);
}

ordermodel.OrderID = model.Id.ToString();
ordermodel.UserName = model.UserAddress.Name;
ordermodel.Tel = model.UserAddress.Mobile;
ordermodel.Address = model.UserAddress.Address;
ordermodel.tabaoshopid = Convert.ToInt64(model.StoreId);
ordermodel.orderTime = Convert.ToDateTime(model.CreateTime);
ordermodel.TotalPrice = allfoodmoney;
ordermodel.Remark = model.Note;
ordermodel.sendmoney = Convert.ToInt32(Convert.ToDecimal(model.DeliveryPay));
ordermodel.Inve2 = "";
ordermodel.OrderTotal = allfoodmoney;
ordermodel.PayMode = 1;
ordermodel.paytime = Convert.ToDateTime(model.CreateTime);
ordermodel.paymoney = Convert.ToDecimal(model.TotalPay);
ordermodel.SentTime = model.StartDeliverytime;
ordermodel.shopaddress = model.Address;
ordermodel.TogoName = model.StoreName;

int rs = bll.AddTBOrder(ordermodel, foodlist);

//2.修改状态

if (rs > 0)
{
string shopid = WebUtility.FixgetCookie("taobao_shopid");
if (shopid == null || shopid == "")
{
Response.Redirect("getsectionkey.aspx");
}

string appkey = WebUtility.GetConfigKey("taobao_appkey");
string appsecret = WebUtility.GetConfigKey("taobao_appsecret");
string top_session = Request["top_session"];

//参数集合
SortedList<string, string> parameters = new SortedList<string, string>();
//2.1 应用级输入参数
parameters.Add("order_id", oid);
//2.2 系统级参数
parameters.Add("method", "taobao.trade.waimai.confirm");
parameters.Add("session", top_session);
parameters.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
parameters.Add("format", "json");
parameters.Add("app_key", appkey);
parameters.Add("v", "2.0");
parameters.Add("partner_id", "top-apitools");

//2.3 生成sign,格式: app_secret参数1值1参数2值2,生成md5后转为大写
StringBuilder sb = new StringBuilder();
sb.Append(appsecret);
foreach (KeyValuePair<string, string> item in parameters)
{
sb.Append(item.Key + item.Value);
}
//sb.Append(appsecret);

parameters.Add("sign", WebUtility.GetMd5(sb.ToString()).ToUpper());

//3.生成url
string url = "http://gw.api.taobao.com/router/rest?";
StringBuilder query = new StringBuilder();
foreach (KeyValuePair<string, string> item in parameters)
{
query.Append(item.Key + "=" + System.Web.HttpUtility.UrlEncode(item.Value, System.Text.Encoding.UTF8) + "&");
}
url += query.ToString().TrimEnd(new char[] { '&' });

ITopClient client = new DefaultTopClient(url, appkey, appsecret, "json");
TradeWaimaiConfirmRequest req = new TradeWaimaiConfirmRequest();
req.OrderId = Convert.ToInt64(oid);
TradeWaimaiConfirmResponse response = client.Execute(req, top_session);
ttOrderlist.Remove(model);

AlertScript.RegScript(this.Page, this.UpdatePanel1, "tipsWindown('提示信息','text:操作成功!','250','150','true','1000','true','text');init();");
BindData();
}
else
{
AlertScript.RegScript(this.Page, this.UpdatePanel1, "tipsWindown('提示信息','text:操作失败!','250','150','true','1000','true','text');init();");
}
break;
case "refuse":
if (bll.DelETogoOrder(Convert.ToInt32(e.CommandArgument)) > 0)//只是隐藏了,并没删除
{
AlertScript.RegScript(this.Page, this.UpdatePanel1, "tipsWindown('提示信息','text:删除成功!','250','150','true','1000','true','text');init();");
BindData();
}
else
{
AlertScript.RegScript(this.Page, this.UpdatePanel1, "tipsWindown('提示信息','text:删除失败!','250','150','true','1000','true','text');init();");
}
break;
}

转:

http://www.cnblogs.com/jijunjian/p/3405111.html

protected void rtpOrderlist_ItemCommand(object source, RepeaterCommandEventArgs e){string type = e.CommandName;string oid = e.CommandArgument.ToString();switch (type){case "pass"://确认后,加到系统(这部分订单要再加一个步定位(用户,商家)修改这个这个字段:latlng)//先判断此订单是否已经加到系统string sql = " orderid='" + oid + "' ";if (bll.GetCount(sql) > 0){AlertScript.RegScript(this.Page, this.UpdatePanel1, "tipsWindown('提示信息','text:此订单已经加入系统,请不要重复操作!','250','150','true','2000','true','text');init();");return;}TakeoutThirdOrder model = ttOrderlist.Where(p => p.Id.ToString() == oid).ToList<TakeoutThirdOrder>()[0];//1.加到系统,ETogoOrderInfo ordermodel = new ETogoOrderInfo();IList<FoodInOrderInfo> foodlist = new List<FoodInOrderInfo>();decimal allfoodmoney = 0;foreach (OrderGoods item in model.GoodsList){FoodInOrderInfo fmodel = new FoodInOrderInfo();fmodel.FoodID = 0;fmodel.FoodName = item.Name;fmodel.FoodPrice = Convert.ToDecimal(item.RealPrice);fmodel.Currentprice = fmodel.FoodPrice;fmodel.package = 0;fmodel.Num = Convert.ToInt32(item.Count);allfoodmoney += fmodel.FoodPrice * fmodel.Num;foodlist.Add(fmodel);}ordermodel.OrderID = model.Id.ToString();ordermodel.UserName = model.UserAddress.Name;ordermodel.Tel = model.UserAddress.Mobile;ordermodel.Address = model.UserAddress.Address;ordermodel.tabaoshopid = Convert.ToInt64(model.StoreId);ordermodel.orderTime = Convert.ToDateTime(model.CreateTime);ordermodel.TotalPrice = allfoodmoney;ordermodel.Remark = model.Note;ordermodel.sendmoney = Convert.ToInt32(Convert.ToDecimal(model.DeliveryPay));ordermodel.Inve2 = "";ordermodel.OrderTotal = allfoodmoney;ordermodel.PayMode = 1;ordermodel.paytime = Convert.ToDateTime(model.CreateTime);ordermodel.paymoney = Convert.ToDecimal(model.TotalPay);ordermodel.SentTime = model.StartDeliverytime;ordermodel.shopaddress = model.Address;ordermodel.TogoName = model.StoreName;int rs = bll.AddTBOrder(ordermodel, foodlist);//2.修改状态if (rs > 0){string shopid = WebUtility.FixgetCookie("taobao_shopid");if (shopid == null || shopid == ""){Response.Redirect("getsectionkey.aspx");}string appkey = WebUtility.GetConfigKey("taobao_appkey");string appsecret = WebUtility.GetConfigKey("taobao_appsecret");string top_session = Request["top_session"];//参数集合SortedList<string, string> parameters = new SortedList<string, string>();//2.1 应用级输入参数parameters.Add("order_id", oid);//2.2 系统级参数parameters.Add("method", "taobao.trade.waimai.confirm");parameters.Add("session", top_session);parameters.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));parameters.Add("format", "json");parameters.Add("app_key", appkey);parameters.Add("v", "2.0");parameters.Add("partner_id", "top-apitools");//2.3 生成sign,格式: app_secret参数1值1参数2值2,生成md5后转为大写StringBuilder sb = new StringBuilder();sb.Append(appsecret);foreach (KeyValuePair<string, string> item in parameters){sb.Append(item.Key + item.Value);}//sb.Append(appsecret);parameters.Add("sign", WebUtility.GetMd5(sb.ToString()).ToUpper());//3.生成urlstring url = "http://gw.api.taobao.com/router/rest?";StringBuilder query = new StringBuilder();foreach (KeyValuePair<string, string> item in parameters){query.Append(item.Key + "=" + System.Web.HttpUtility.UrlEncode(item.Value, System.Text.Encoding.UTF8) + "&");}url += query.ToString().TrimEnd(new char[] { '&' });ITopClient client = new DefaultTopClient(url, appkey, appsecret, "json");TradeWaimaiConfirmRequest req = new TradeWaimaiConfirmRequest();req.OrderId = Convert.ToInt64(oid);TradeWaimaiConfirmResponse response = client.Execute(req, top_session);ttOrderlist.Remove(model);AlertScript.RegScript(this.Page, this.UpdatePanel1, "tipsWindown('提示信息','text:操作成功!','250','150','true','1000','true','text');init();");BindData();}else{AlertScript.RegScript(this.Page, this.UpdatePanel1, "tipsWindown('提示信息','text:操作失败!','250','150','true','1000','true','text');init();");}break;case "refuse":if (bll.DelETogoOrder(Convert.ToInt32(e.CommandArgument)) > 0)//只是隐藏了,并没删除{AlertScript.RegScript(this.Page, this.UpdatePanel1, "tipsWindown('提示信息','text:删除成功!','250','150','true','1000','true','text');init();");BindData();}else{AlertScript.RegScript(this.Page, this.UpdatePanel1, "tipsWindown('提示信息','text:删除失败!','250','150','true','1000','true','text');init();");}break;}

订餐系统之获取淘宝外卖订单相关推荐

  1. 获取淘宝订单的解决方案

    项目需求: 需求很简单,就是想获取淘宝的订单: 获取淘宝订单的几种方式: 聚石塔: 首先是该商家必须已经入驻了聚石塔,因为聚石塔可以共享改商家的淘宝.天猫.阿里云.支付宝等信息.所以你可以通过该商家的 ...

  2. 淘宝客订单API获取订单代码

    Trade 数据结构 名称 类型 是否隐私 描述 seller_nick String Y 卖家昵称 buyer_nick String Y 买家昵称 title String Y 商品标题 type ...

  3. 托众导购网 淘宝客订单API获取订单代码

    本文介绍如何使用淘宝客API获取淘宝客订单 ,获取到订单后 ,将订单记录插入到 OenJWeb的淘宝客订单表 ,下面 是代码 : package org.openjweb.core.taobao.se ...

  4. taobao.trade.fullinfo.get( 获取单笔交易的详细信息 )、淘宝店铺卖出订单详情接口,淘宝店铺订单明文接口,淘宝店铺订单解密接口

    taobao.trade.fullinfo.get( 获取单笔交易的详细信息 ),淘宝店铺卖出订单详情接口,对接该接口可用于获取淘宝店铺订单详情信息,包括卖出订单详情,买家姓名,买家电话,买家收货地址 ...

  5. 外卖cps淘宝客订单API获取订单代码

    直到看到了一个好友分享到外卖 CPS,觉得这是一个机会,不仅任何地方都可以做,而且门槛相对较低. 外卖cps淘宝客订单API获取订单代码 外卖cps带分销返利源码 源代码地址 http://www.m ...

  6. 淘宝店铺订单同步及获取解决方式

    项目背景 最近做一个电子商务平台的投标工作,写技术标过程中,配到客户一些和淘宝集成的接口,其中有一个需求就是需要将目前ERP系统中的定的那和淘宝店铺中订单进行同步,具体需求如下描述: 1.零售.批销. ...

  7. 订单系统开发(仿淘宝和美团网) 之 项目总结(降低数据库并发量)

    原文:订单系统开发(仿淘宝和美团网) 之 项目总结(降低数据库并发量) 继上一篇"订单系统开发(仿淘宝和美团网) 之 项目总结(一)",这篇博客重点想说下订单系统开发的设计和有待优 ...

  8. 获取淘宝购买到的商品订单物流API,买家订单物流API接口,淘宝买家订单API接口

    一.获取淘宝购买到的商品订单物流API,买家订单物流API接口,淘宝买家订单API接口代码对接如下: 1.公共参数: 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接 ...

  9. 订单系统开发(仿淘宝和美团网) 之 项目总结(一)

    基于公司战略的调整和开发框架的升级换代,也伴随着SOP(面向服务编程)和SOA(面向服务架构)的软件开发思想在公司开发团队中的慢慢深入,最终讨论决定在将现有(旧)的支撑公司业务的项目模块(如:产品,商 ...

最新文章

  1. 15瓶饮料4个空瓶换一瓶_2021江苏公务员考试行测技巧:你会用“空瓶”换水吗?...
  2. OSChina 周六乱弹 —— 去做点疯狂的事情
  3. 中山网络推广浅谈网站提高用户体验要做好的5点!
  4. Ubuntu终端多窗口分屏Terminator
  5. ACDSee Photo Studio Ultimate 2020中文版
  6. 不用光盘安装系统的问题
  7. 互联网不互联,挡住淘菜菜?
  8. SSD(Single Shot MultiBox Detector):因为数据集中图像通道数不对导致的训练异常
  9. Chrome现在也能编辑pdf文件了!64位安卓版上线
  10. java单链表查询功能,Java 实现简答的单链表的功能
  11. js解决客户端与服务器时间不一致的问题
  12. ROC曲线(Receiver Operating Characteristic Curve)
  13. LiveCDLiveUSB制作
  14. 监控摄像机的区别和分类
  15. Android学习小Demo(9)一个To Do List的实现
  16. 输出halloword
  17. oracle 10g rac安装
  18. c语言unit id是什么,小程序再升级之什么是UnitionID
  19. 如何获取微信公众号的关注链接?
  20. UUID简介以及java代码获取UUID示例

热门文章

  1. 华为怎么分屏操作技巧_第五人格昆虫学家虫群怎么用 昆虫学家操作技巧介绍...
  2. fabricjs 中自定义控件图标
  3. 树莓派2安装Xware实现迅雷远程下载
  4. [Dynamic Language] Python Django: 模型使用
  5. 因果推断16--市场营销中资源分配问题的直接异质因果学习(美团)
  6. UDP发送数据包流程
  7. 计算机平面设计必学英语,平面设计必看(国外英语资料).doc
  8. python前景怎么样-Python在中国的发展前景怎么样?有哪些就业方向?
  9. a 寻路算法 java_A*自动寻路算法—java版
  10. CString:Getbuffer和Releasebuffer的作用