using System; using System.Collections.Generic; using System.Text; using System.Threading; using AllBase; namespace Work.Api { public class AutoConfirmExpress { public static List ExpressList = new List(); public int BuyType; public AutoConfirmExpress(int buyType) { BuyType = buyType; if (ExpressList.Count > 0) { return; } var m = BaseRegex.GetMatchRegex(ref ExpressNames, @"([^<]+?)"); for (int i = 0; i < m.Count; i++) { string key = m[i].Groups[1].Value; string value = m[i].Groups[2].Value; KeyValueBase k = new KeyValueBase(key, value); ExpressList.Add(k); } } public static List TaobaoOrder = new List(); public void GetTaobao(Dictionary beforeOrder) { //Dictionary>> chars = new Dictionary>>(); string url = "https://buyertrade.taobao.com/trade/itemlist/list_bought_items.htm"; string refere = url; string html = GetPostTaobaoHtml.UploadTaobao(url, refere, false); html = GetHtml.Decode(html); if (!string.IsNullOrEmpty(html)) html = html.Replace("\\\"", "\"").Replace("\\/", "/"); int page = BaseRegex.GetIntJson(ref html, "totalPage"); for (int k = 1; k <= page; k++) { if (k != 1) { string data = "buyerNick=&dateBegin=0&dateEnd=0&lastStartRow=&logisticsService=&options=0&orderStatus=&pageNum=" + k + "&pageSize=15&queryBizType=&queryOrder=desc&rateStatus=&refund=&sellerNick=&prePageNo=2"; url = "https://buyertrade.taobao.com/trade/itemlist/asyncBought.htm?action=itemlist/BoughtQueryAction&event_submit_do_query=1&_input_charset=utf8"; html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data); Thread.Sleep(5 * 1000); } var m = BaseRegex.GetMatchRegex(ref html, @"\{""extra"":([\w\W]+?)""quantity"":""([\d]+)"""); for (int i = 0; m != null && i < m.Count; i++) { string list = m[i].Groups[0].Value; string oid = BaseRegex.GetLongJson(ref list, "id").ToString(); if (!beforeOrder.ContainsKey(oid)) { continue; } string status = BaseRegex.GetStringJson(ref list, "tradeStatus"); if (status != "WAIT_BUYER_CONFIRM_GOODS" && status != "TRADE_BUYER_SIGNED" && status != "TRADE_CLOSED" && status != "TRADE_FINISHED") { continue; } string sell = BaseRegex.GetMatchRegexString(ref list, @"""seller"":\{([^\}]+?)\}"); long shopId = BaseRegex.GetLongJson(ref sell, "id"); url = "https://wuliu.taobao.com/user/order_detail_new.htm?trade_id=" + oid + "&seller_id=" + shopId; html = GetPostTaobaoHtml.UploadTaobao(url, refere, false); Thread.Sleep(3000); string no = BaseRegex.GetMatchRegexString(ref html, @"\s+([^<]+?)"); string company = BaseRegex.GetMatchRegexString(ref html, @"\s+([^<]+?)"); if (string.IsNullOrEmpty(no) || string.IsNullOrEmpty(company)) { continue; } no = no.Trim(); company = company.Trim(); var express = GetExpressId(company); if (express == null) { LogSave.Add("没有找到快递公司"); continue; } company = express.Value; int companyId = int.Parse(express.Key); UpdateServer(beforeOrder[oid], company, no, companyId); } } } public KeyValueBase GetExpressId(string company) { for (int i = 0; i < ExpressList.Count; i++) { if (ExpressList[i].Value == company || ExpressList[i].Value.Replace("快递", "速递") == company || ExpressList[i].Value.Replace("快递", "速运") == company) return ExpressList[i]; } for (int i = 0; i < ExpressList.Count; i++) { if (ExpressList[i].Value.Length > 1 && company.Length > 1 && ExpressList[i].Value.Substring(0, 2) == company.Substring(0, 2)) return ExpressList[i]; } return null; } public void Get() { int page = 1; string url, html; List orders = new List(); Dictionary beforeOrder = new Dictionary(); for (int p = 0; p < page; p++) { Thread.Sleep(1000); string data = UserLogin.GetSignaturex(); url = BaseClass.BuildObjString("pay_group_order&act=get_confirm_order&buy_type=" + BuyType + "&page=" + p); html = GetHtml.PostUtf8(url, data); page = BaseRegex.GetIntValue(html, "page"); if (string.IsNullOrEmpty(html)) { //MessageBox.Show("获取订单列表网络异常,请稍后重试", "提示"); LogSave.Add("拼单", "获取订单列表网络异常,请稍后重试"); return; } var mm = BaseRegex.GetMatchRegex(ref html, "]+?)>"); for (int i = 0; i < mm.Count; i++) { string list = mm[i].Groups[0].Value; string orderId = BaseRegex.GetStringJson(ref list, "order_id_buy"); string orderIdb = BaseRegex.GetStringJson(ref list, "order_id"); if (string.IsNullOrEmpty(orderId)) { continue; } orders.Add(orderId); if (!beforeOrder.ContainsKey(orderId)) beforeOrder.Add(orderId, orderIdb); } } url = BaseClass.NewUrl+"/orders.html?type=3&refer_page_name=personal"; string refere = BaseClass.NewUrl+"/"; html = GetPostTaobaoHtml.UploadTaobao(url, refere, true); var m = BaseRegex.GetMatchRegex(ref html, @"\{""group_id"":([\w\W]+?)""order_sn"":([\w\W]+?)\}"); if (m == null || m.Count == 0) m = BaseRegex.GetMatchRegex(ref html, @"\{""order_sn""(.*?)""biz_type"":[\d]+"); string lastOrderId = ""; string status = "6"; for (int i = 0; m != null && i < m.Count; i++) { string list = m[i].Groups[0].Value; string oid = BaseRegex.GetStringJson(ref list, "order_sn"); lastOrderId = oid; string pid = BaseRegex.GetLongJson(ref list, "goods_id").ToString(); string statusDesc = BaseRegex.GetStringJson(ref list, "order_status_desc"); long order_time = BaseRegex.GetLongJson(ref list, "order_time"); if (!orders.Contains(oid)) continue; if (BuyType == 1) { if (order_time > BaseClass.GetTime(DateTime.Now) - 5 * 84600) continue; ConfirmOrder(oid, pid); } if (BuyType == 2) { url = BaseClass.NewUrl+"/order.html?order_sn=" + oid + "&refer_page_name=my_order&refer_page_id=my_order_1513009667550_P4xCgmERE6&refer_page_sn=10032"; html = GetPostTaobaoHtml.UploadTaobao(url, refere, true); string shippingName = BaseRegex.GetStringJson(ref html, "shippingName"); string trackingNumber = BaseRegex.GetStringJson(ref html, "trackingNumber"); string temp = BaseRegex.GetMatchRegexString(ref html, @"""shipping"":\{(.*?)\}"); int expressId = BaseRegex.GetIntJson(ref temp, "id"); if (expressId > 0) { UpdateServer(beforeOrder[oid], shippingName, trackingNumber, expressId); } } } page = 0; while (m != null && m.Count > 0 && page < 100) { page++; url = "http://apiv4.yangkeduo.com/ordersv2/unreceived?size=10&offset=" + lastOrderId + "&pdduid=" + BaseClass.PddUid; refere = BaseClass.NewUrl+"/orders.html?type=3&refer_page_name=personal&refer_page_id=personal_1513007415720_UV8kas6VCW&refer_page_sn=10001"; html = GetPostTaobaoHtml.UploadTaobao(url, refere, true); m = BaseRegex.GetMatchRegex(ref html, @"\{""group_id"":([\w\W]+?)""order_sn"":([\w\W]+?)\}"); if (m == null || m.Count == 0) m = BaseRegex.GetMatchRegex(ref html, @"\{""order_sn""(.*?)""biz_type"":[\d]+"); for (int i = 0; m != null && i < m.Count; i++) { string list = m[i].Groups[0].Value; string oid = BaseRegex.GetStringJson(ref list, "order_sn"); lastOrderId = oid; string pid = BaseRegex.GetLongJson(ref list, "goods_id").ToString(); string statusDesc = BaseRegex.GetStringJson(ref list, "order_status_desc"); long order_time = BaseRegex.GetLongJson(ref list, "order_time"); if (oid == "180622-684676220032434") { } if (!orders.Contains(oid)) continue; if (BuyType == 1) { if (order_time > BaseClass.GetTime(DateTime.Now) - 5 * 84600) continue; ConfirmOrder(oid, pid); } if (BuyType == 2) { url = BaseClass.NewUrl+"/order.html?order_sn=" + oid + "&refer_page_name=my_order&refer_page_id=my_order_1513009667550_P4xCgmERE6&refer_page_sn=10032"; html = GetPostTaobaoHtml.UploadTaobao(url, refere, true); string shippingName = BaseRegex.GetStringJson(ref html, "shippingName"); string trackingNumber = BaseRegex.GetStringJson(ref html, "trackingNumber"); string temp = BaseRegex.GetMatchRegexString(ref html, @"""shipping"":\{(.*?)\}"); int expressId = BaseRegex.GetIntJson(ref temp, "id"); if (expressId > 0) { UpdateServer(beforeOrder[oid], shippingName, trackingNumber, expressId); } Thread.Sleep(1000); } } Thread.Sleep(1000); } GetTaobao(beforeOrder); LogSave.Add("拼单", "自动确认收货全部完成"); } public void ConfirmOrder(string oid, string goods_id) { string url = "http://apiv4.yangkeduo.com/order/" + oid + "/received?pdduid=" + BaseClass.PddUid + "&is_back=1"; string data = "{}"; string refere = BaseClass.NewUrl+"/orders.html?refer_page_name=login&refer_page_id=login_1513005785399_B4Dxk8TYgA&type=3&order_index=0"; string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data); refere = BaseClass.NewUrl+"/comments.html?order_sn=" + oid + "&goods_id=" + goods_id + "&page_el_sn=99664&type=3&refer_page_name=my_order&refer_page_id=my_order_1513006052449_n43miXeWuI&refer_page_sn=10032&refer_page_el_sn=99664"; url = "http://apiv4.yangkeduo.com/v2/order/goods/review?pdduid=" + BaseClass.PddUid; data = "{\"goods_id\":" + goods_id + ",\"order_sn\":\"" + oid + "\",\"desc_score\":5,\"logistics_score\":5,\"service_score\":5,\"comment\":\"\",\"pictures\":[]}"; html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data); if (html.Contains("rating_id")) { LogSave.Add("拼单", "确认收货成功:" + oid); } Thread.Sleep(300); } public void UpdateServer(string order_id, string shippingName, string trackingNumber, int expressId) { StringBuilder s = new StringBuilder(); s.Append("&status=" + 8); s.Append("&oid=" + order_id); s.Append("&express_name=" + shippingName); s.Append("&express_id=" + expressId); s.Append("&express_no=" + trackingNumber); s.Append("&get_time=1"); string data = UserLogin.GetSignaturex(); string url = BaseClass.BuildObjString("pay_group_order&act=update&buy_type=" + BuyType); string html = GetHtml.PostUtf8(url, data + s); if (html != "ok") { Thread.Sleep(10 * 1000); data = UserLogin.GetSignaturex(); html = GetHtml.PostUtf8(url, data + s); } if (html != "ok") { Thread.Sleep(30 * 1000); data = UserLogin.GetSignaturex(); html = GetHtml.PostUtf8(url, data + s); } if (html != "ok") LogSave.Add("拼单", "自动提交物流信息失败,请检查网络"); else { LogSave.Add("拼单", "返回物流信息完成:" + order_id); } } public void ResetErrorSend() { string data = UserLogin.GetSignaturex(); string url = BaseClass.BuildObjString("pay_group_order&act=reset_status"); string html = GetHtml.PostUtf8(url, data); if (html != "ok") { } } public string ExpressNames = "申通快递百世快递顺丰快递圆通快递赛澳递晟邦物流中通快递全峰快递优速快递邮政EMS天天快递京东配送韵达快递快捷快递国通快递宅急送快递如风达德邦快递邮政快递包裹龙邦快递联邦快递九曳供应链南京晟邦万象物流立即送门对门安达信海外快递飞远物流汇文快递黄马甲速尔快递亚马逊物流黑猫宅急便上海赛澳递城市100芝麻开门顺捷丰达汇通小红马其他跨越速递usps青岛安捷贝海国际速递环球速运全一快递远成快运联众国际快运天地华宇中邮速递EMS-国际件中铁物流新邦物流Flash Express新顺丰NSFDCS GLOBAL日日顺物流苏宁快递百世快运德邦物流微特派AAE全球专递AramexAsendia USACity-LinkCOEDHL德国DHL全球DHL中国EMS国际FedEx美国FedEx中国OCSOnTracTNTUPS阿尔巴尼亚邮政阿根廷邮政阿联酋邮政爱沙尼亚邮政奥地利邮政澳大利亚邮政巴基斯坦邮政巴西邮政白俄罗斯邮政百福东方包裹信件保加利亚邮政比利时邮政波兰邮政传喜物流大田物流递四方俄速通法国邮政凡宇快递飞豹快递飞远(爱彼西)配送芬兰邮政哥伦比亚邮政韩国邮政恒路物流华企快运加运美佳吉快运佳怡物流嘉里大通捷克邮政筋斗云物流京广速递克罗地亚邮政拉脱维亚邮政黎巴嫩邮政联昊通马耳他邮政马其顿邮政毛里求斯邮政秘鲁邮政民邦快递民航快递明亮物流摩尔多瓦邮政南非邮政挪威邮政葡萄牙邮政全日通日本邮政瑞典邮政瑞士邮政塞尔维亚邮政三态速递沙特邮政圣安物流盛丰物流盛辉物流斯洛伐克邮政斯洛文尼亚邮政穗佳物流泰国邮政土耳其邮政万家物流乌克兰邮政西班牙邮政信丰物流匈牙利邮政亚风速递亚美尼亚邮政燕文物流意大利邮政银捷速递印度邮政英国皇家邮政邮政标准快递邮政国际包裹越丰物流运通中港快递增益速递智利邮政中俄快递中铁快运快服务快递优邦国际速运天际快递飞洋快递斑马物联网易客满京东大件物流速必达"; } }