订餐系统之自动确认淘点点订单
最近淘點(diǎn)點(diǎn)好像做了一個(gè)重大調(diào)整,一個(gè)企業(yè)帳號(hào)只能開(kāi)10家店,個(gè)人帳號(hào)只能開(kāi)5家店,這個(gè)對(duì)于第三方配送的就有些麻煩了,如果您開(kāi)的店多了,您就得用多個(gè)帳號(hào),如果您要把訂單導(dǎo)入自己的平臺(tái),統(tǒng)一操作,這個(gè)又麻煩了。經(jīng)過(guò)這幾天的開(kāi)發(fā)、測(cè)試,終于實(shí)現(xiàn)多帳號(hào)自動(dòng)確認(rèn),導(dǎo)入訂單到自己的平臺(tái)了,自動(dòng)推送給配送員,再讓配送員搶單、配送。之前寫(xiě)過(guò)一篇叫訂餐系統(tǒng)之獲取淘寶外賣訂單的文章介紹獲取未確認(rèn)的淘寶外賣訂單及確認(rèn)訂單,有興趣的朋友也可以看下,本文算是那篇文章的一個(gè)升級(jí)吧。支持多帳號(hào),及自動(dòng)確認(rèn)功能。
點(diǎn)擊這里進(jìn)入淘寶開(kāi)放平臺(tái),添加應(yīng)用,其他操作基本就是按提示傻瓜操作了。有興趣的自己點(diǎn)點(diǎn)哦,這里就不細(xì)說(shuō)了。
背景交代完畢,開(kāi)始進(jìn)入今天的主題。
第一步,維護(hù)開(kāi)放平臺(tái)相關(guān)信息在開(kāi)放平臺(tái)申請(qǐng)應(yīng)用后會(huì)生成兩個(gè)信息App Key和App Secret。我先把這些信息維護(hù)到數(shù)據(jù)庫(kù)中,如下圖,其中的shopid為此帳號(hào)下任意一個(gè)商家編號(hào)即可。session key在下一步中作介紹
?
第二步,獲取Session keySession Key獲取網(wǎng)址為:http://api.taobao.com/apitools/sessionPage.htm?qq-pf-to=pcqq.c2c,應(yīng)用上線后,session key的默認(rèn)過(guò)期時(shí)間為一個(gè)月(也可以申請(qǐng)一年的),也就是過(guò)期了,你要重新到這個(gè)地址生成,并更新到第一步中的數(shù)據(jù)表中。
????? 操作步驟如下(第二張圖中session對(duì)應(yīng)的內(nèi)容就是Session Key了):
????
????
??????
第三步,具體實(shí)現(xiàn)
大部分代碼和訂餐系統(tǒng)之獲取淘寶外賣訂單中的相同,主要就是換了個(gè)思路,把其中變化的參數(shù)都保存在數(shù)據(jù)表中,通常循環(huán)獲取訂單,并確認(rèn)訂單。大概代碼如下,寫(xiě)得不好,希望大家拍磚哈。
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;//參數(shù)集合SortedList<string, string> parameters = new SortedList<string, string>();//2.1 應(yīng)用級(jí)輸入?yún)?shù)parameters.Add("is_all", "true");parameters.Add("store_id", shopid);parameters.Add("max_size", "20");//2.2 系統(tǒng)級(jí)參數(shù)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參數(shù)1值1參數(shù)2值2,生成md5后轉(zhuǎn)為大寫(xiě)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?";//線上環(huán)境: http://gw.api.taobao.com/router/rest 測(cè)試環(huán)境: 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"){//自動(dòng)確認(rèn);foreach (var model in ttOrderlist){confirmOrder(model, appkey, appsecret, top_session);}}}}}}/// <summary>/// 確認(rèn)訂單/// </summary>protected void confirmOrder(TakeoutThirdOrder model, string appkey, string appsecret, string top_session){//1.加到系統(tǒng), ...int rs = bll.AddTBOrder(ordermodel, foodlist);//2.確認(rèn)訂單if (rs > 0){//參數(shù)集合SortedList<string, string> parameters = new SortedList<string, string>();//2.1 應(yīng)用級(jí)輸入?yún)?shù)parameters.Add("order_id", model.Id.ToString());//2.2 系統(tǒng)級(jí)參數(shù)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參數(shù)1值1參數(shù)2值2,生成md5后轉(zhuǎn)為大寫(xiě)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?
???? 界面效果如下圖,默認(rèn)30秒訪問(wèn)一次,自動(dòng)確認(rèn)(淘寶掌柜確認(rèn)后,這里就不能再獲取了)。
第四步,讓訂單跑起來(lái)
如果在第三步,增加部分代碼,把訂單推送到我們配送員的Android客戶端,讓大家去搶單,然后配送。整個(gè)流程就變得相當(dāng)easy了。
結(jié)語(yǔ)
此文與之前的文章描述的內(nèi)容相關(guān),并沒(méi)有增加多少技術(shù)含量,只是增加了一些思路,如多帳號(hào)問(wèn)題、自動(dòng)確認(rèn)等,當(dāng)然推送客戶端,讓大家搶單,這只是對(duì)接了下我們?cè)械南到y(tǒng)。希望對(duì)有需要的同學(xué)有點(diǎn)幫助,鄙人技術(shù)有限,寫(xiě)得不好地方也請(qǐng)大家拍磚哈!
???? ? 成為一名優(yōu)秀的程序員!
?
轉(zhuǎn)載于:https://www.cnblogs.com/jijunjian/p/3667608.html
總結(jié)
以上是生活随笔為你收集整理的订餐系统之自动确认淘点点订单的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: TP隐藏入口
- 下一篇: Linux操作系统-命令-free