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

  淘宝外卖提供的接口我知道的有三个,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. 给windows装个Mac黑苹果虚拟机
  2. 软件测试技术篇:UI自动化到底是难是易?
  3. 为何把日志打印到控制台很慢?
  4. NOIP2011聪明的质监员题解
  5. 自制Ghost XP SP3 启动光盘(二)
  6. 【斗医】【11】Web应用开发20天
  7. ubuntu 常用软件和命令
  8. Flask蓝图使用的方法
  9. jQuery.each方法
  10. Marlin 溫度感應器 數值轉換對應表
  11. css布局-margin溢出
  12. RHCS双机集群调测
  13. 微信运营:必须收藏的101条万能微信标题公式
  14. sersync实现多台服务器实时同步文件
  15. c4droid语言字体颜色,c4droid界面与菜单基础教程 | 坐倚北风
  16. 中介效应分析:三段式中介效应模型真的适用于经济学研究吗?
  17. 36-sparkstreaming
  18. python random.round 修约方法 4舍6入5看齐,奇进偶不进
  19. 【人工智能行业大师访谈2】吴恩达采访 Pieter Abbeel
  20. 蝙蝠算法(Bat Algorithm,BA)算法

热门文章

  1. Flink实时计算斗鱼某直播间弹幕发言数TopN
  2. 圈存和圈提是什么意思
  3. 洞穴逃生 java_洞穴逃生
  4. 浅谈程序员如何正确面对压力—Leo网上答疑41-2
  5. jQuery JS 禁用滚动条和启用滚动条
  6. Python中秋赏月专用代码中秋节代码
  7. iPad白苹果的简单修复方法
  8. 高通三星1700万美元出资可穿戴芯片公司Ineda
  9. 【干货】STM32通过ADC模拟看门狗实现掉电保存
  10. 前后端数据交互——ajax(原生及jquery)