最近淘点点好像做了一个重大调整,一个企业帐号只能开10家店,个人帐号只能开5家店,这个对于第三方配送的就有些麻烦了,如果您开的店多了,您就得用多个帐号,如果您要把订单导入自己的平台,统一操作,这个又麻烦了。经过这几天的开发、测试,终于实现多帐号自动确认,导入订单到自己的平台了,自动推送给配送员,再让配送员抢单、配送。之前写过一篇叫订餐系统之获取淘宝外卖订单的文章介绍获取未确认的淘宝外卖订单及确认订单,有兴趣的朋友也可以看下,本文算是那篇文章的一个升级吧。支持多帐号,及自动确认功能。

  点击这里进入淘宝开放平台,添加应用,其他操作基本就是按提示傻瓜操作了。有兴趣的自己点点哦,这里就不细说了。

  背景交代完毕,开始进入今天的主题。

第一步,维护开放平台相关信息

  在开放平台申请应用后会生成两个信息App Key和App Secret。我先把这些信息维护到数据库中,如下图,其中的shopid为此帐号下任意一个商家编号即可。session key在下一步中作介绍

  

第二步,获取Session key

  Session Key获取网址为:http://api.taobao.com/apitools/sessionPage.htm?qq-pf-to=pcqq.c2c,应用上线后,session key的默认过期时间为一个月(也可以申请一年的),也就是过期了,你要重新到这个地址生成,并更新到第一步中的数据表中。

操作步骤如下(第二张图中session对应的内容就是Session Key了):

  

第三步,具体实现

  大部分代码和订餐系统之获取淘宝外卖订单中的相同,主要就是换了个思路,把其中变化的参数都保存在数据表中,通常循环获取订单,并确认订单。大概代码如下,写得不好,希望大家拍砖哈。

    protected void Page_Load(object sender, EventArgs e){if (!Page.IsPostBack){TBShoplist = SectionProxyData.GetTaoBaoShopList();foreach (var account in SectionProxyData.GettaobaoAPIAcountList()){string shopid = account.Priority.ToString();string appkey = account.classname;string appsecret = account.pic;string top_session = account.hovepic;//参数集合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);}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,top_session);if (response.Result != null && response.Result.ResultList != null){ttOrderlist = response.Result.ResultList;string cbautoconfirm = WebUtility.FixgetCookie("cbautoconfirm");if (cbautoconfirm == "true" || cbautoconfirm == "checked"){//自动确认;foreach (var model in ttOrderlist){confirmOrder(model, appkey, appsecret, top_session);}}}}}}/// <summary>/// 确认订单/// </summary>protected void confirmOrder(TakeoutThirdOrder model, string appkey, string appsecret, string top_session){//1.加到系统,
        ...int rs = bll.AddTBOrder(ordermodel, foodlist);//2.确认订单if (rs > 0){//参数集合SortedList<string, string> parameters = new SortedList<string, string>();//2.1 应用级输入参数parameters.Add("order_id", model.Id.ToString());//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(model.Id);TradeWaimaiConfirmResponse response = client.Execute(req, top_session);}}

View Code

界面效果如下图,默认30秒访问一次,自动确认(淘宝掌柜确认后,这里就不能再获取了)。

  

第四步,让订单跑起来

  如果在第三步,增加部分代码,把订单推送到我们配送员的Android客户端,让大家去抢单,然后配送。整个流程就变得相当easy了。

  

结语

  此文与之前的文章描述的内容相关,并没有增加多少技术含量,只是增加了一些思路,如多帐号问题、自动确认等,当然推送客户端,让大家抢单,这只是对接了下我们原有的系统。希望对有需要的同学有点帮助,鄙人技术有限,写得不好地方也请大家拍砖哈!

成为一名优秀的程序员!

转载于:https://www.cnblogs.com/jijunjian/p/3667608.html

订餐系统之自动确认淘点点订单相关推荐

  1. 艾司博讯:拼多多没确认收货多久系统才自动确认收货

    现在大多朋友对网购都不陌生,一般我们收到货后都会确认收货,然后给商品进行评价.当然,一些朋友比较忙或者没有确认收货的习惯,过了一段时间后会自动确认收货.那么拼多多确认收货期限是几天,下面就为大家带来介 ...

  2. 订餐系统之同步口碑外卖商家菜单与点点送订单

    2015年饿了么.百度外卖.美团外卖.口碑外卖几家几乎分完了外卖这碗羹,让其他外卖网站几乎举步维艰,也让那些蠢蠢欲动想进入外卖领域的人犹豫不决了(这估计是要砸我饭碗的节奏啊,ヾ(@⌒ー⌒@)ノ).当然 ...

  3. 订餐系统之获取淘宝外卖订单

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

  4. 拼多多自动确认收货后还能退吗?退货申请期限是多久?

    其实,在确认收货一点也不难,只需要签收后,点击确认收货按钮就行了.不过,还是有不少伙伴都了懒于去点击确认收货,这个时候系统会自动确认收货 拼多多自动确认收货后还能退吗? 1.常规商品15天内是消费者收 ...

  5. 订餐系统之同步美团商家订单

    引子    早上和往常一样去工商大学打球,除了今天三分比较准外,一切都还是那样的循规蹈矩. 也许股子里还有那么一些不甘平庸,总想着能改变一下如此无趣的按部就班. 转过行政楼,一波一波的学生在谈笑风生. ...

  6. Java美团下单接单区域处理_订餐系统之同步美团商家订单

    引子 早上和往常一样去工商大学打球,除了今天三分比较准外,一切都还是那样的循规蹈矩. 也许股子里还有那么一些不甘平庸,总想着能改变一下如此无趣的按部就班. 转过行政楼,一波一波的学生在谈笑风生.哦,是 ...

  7. 订餐系统之同步饿了么商家订单

    背景 之前实时获取口碑外卖商家订单,及点点送订单,再使用的我们的调度系统统一调度各个来源的订单,再结合配送员自主抢单,加上配送员队长线上调度,最大限度的让配送员加"顺路单",提高效 ...

  8. jeecg-boot自动生成代码_无代码实现销售系统自动判定并生成订单功能

    ERP项目中,业务员创建销售单后,还需要确认产品库存是否充足,如不充足,还需要手动创建生成订单通知车间进行生产,比较麻烦,客户希望系统可以自动进行判断,自动根据现有库存生成生产订单. 目标: 新建销售 ...

  9. PHP与redis队列实现电商订单自动确认收货

    一.场景 之前做的电商平台,用户在收到货之后,大部分都不会主动的点击确认收货,导致给商家结款的时候,商家各种投诉,于是就根据需求,要做一个订单在发货之后的x天自动确认收货.所谓的订单自动确认收货,就是 ...

最新文章

  1. 2019年中国智能制造的十大发展关键点
  2. 9大方法为云安全保驾护航
  3. RxSwift之UI控件UITextField与UITextView扩展的使用
  4. [转载]C#时间函数
  5. H5搜索页调起软键盘
  6. python笔记(一)获取当前目录路径和文件(抄录)
  7. python之路day9_Python之路,Day7 - 面向对象编程进阶
  8. 画java类图_java UML类图的使用
  9. 基于Java+SpringBoot+vue+elementui图书商城系统设计实现
  10. 2021牛客多校#10 F-Train Wreck(数学,优先队列)
  11. 将正式数据库中的表与测试库同步
  12. java 后台管理模板_后台管理系统模板 - WEB源码|JSP源码/Java|源代码 - 源码中国
  13. 唐朝诡事录之西行官宣
  14. 二项式分布和多项式分布
  15. 手机游戏:崇尚简单至上和零碎娱乐的永恒价值
  16. 我写了一套SpringBoot微信小程序电商全栈就业实战课程,免费分享给CSDN的朋友们
  17. Unity DOTS 学习笔记1 - ECS 0.50介绍和安装
  18. 百格活动:Unity for all —— 万物互联
  19. 滚珠开关怎样使用更稳定?
  20. 水晶报表Crystal Reports XI服务器版

热门文章

  1. mvc jquery ajax方法,Mvc Jquery Ajax功能不起作用[关闭]
  2. 每天一道LeetCode-----判断一个数是否是happy number(每一位的平方和最终为1)
  3. 浏览器安全检查己通过_小米薄荷浏览器URl欺骗漏洞(CVE-2019-10875)的安全修复被绕过...
  4. 算法学习笔记2022.1.11
  5. ansible(3)——主机列表,ssh,公钥私钥
  6. 对称二叉树—leetcode101
  7. QNNPACK高性能前向内核库全面剖析——引言篇
  8. 史上最全Vim快捷键键位图(入门到进阶)
  9. 静态分配内存和动态分配内存
  10. 文件的文本打开方式和二进制打开方式的区别