Files
29WxOrder/29WxOrder/OrderForms/BuyOrderForms.cs
T

3428 lines
164 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using AllBase;
using AllBase.DouYinModel.Result;
using AllBase.Helper;
using AllBase.Model;
using AllBase.Model.Result;
using CefSharp;
using CefSharp.WinForms;
using _29WxOrder.ToolForms;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using Work;
using Work.Api;
using Work.BaseForms;
using Work.BuyUsers;
using Work.Pinduoduo;
using AllBase.Model.DBModel;
namespace _29WxOrder.OrderForms
{
public partial class BuyOrderForms : BaseGeneralForm
{
public string datajsons = "";
public BuyOrderForms()
{
InitializeComponent();
}
public delegate void delegateView();
public string userAgent { get; set; } = "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Mobile Safari/537.36";
// "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36";
public ChromiumWebBrowser cefWebBrowser1 = null;
//private NaiBa.CefHelper.RequestHandler requestHandler = null;
private _29WxOrder.Helper.CustomResourceRequestHandler resourceRequestHandler = null;
public delegate void delegateClick(object sender, EventArgs e);
public string order_id;
public DouYinOrderModel orderDetail;
public ShopLoginInfo shop;
public string webUrl = "https://yangkeduo.com/goods.html?goods_id=";
public static string PddUid = "";
public string detailHtml = "";//商品详情
public long goodsId = 107540883303, Times = 0;
public string Mobile = "", Address = "", bName = "";
public string UpId = "";
public BuyOrderListForm buyOrderListForm;
public SendOrderListForms sendOrderForms;
public static bool GetIni = true;
public AllBase.Model.PddPifaShopInfo pddPifaUser = null;
public List<CefSharp.Cookie> pddPifaCookieList = new List<Cookie>();
public string SkuLite = "";
public string pddPifaCookies
{
get
{
string s = "";
foreach (var c in pddPifaCookieList)
{
s += c.Name + "=" + c.Value + ";";
}
return s;
}
}
PddMultiBuyerInfo multiUserCookie;
public MainForm mainform;
/// <summary>
/// 多买手拍单是否已切换买手号标记
/// </summary>
bool changeuser = false;
/// <summary>
/// 是否已进入了微信支付
/// </summary>
bool wechatpay = false;
public void BuyOrderForms_Load(object sender, EventArgs e)
{
if (GetIni && CollectionClass.Province.Count == 0)
{
new Thread(IniAddress).Start();
GetIni = false;
}
this.Text = "拍单";
this.TitleText = "拍单";
Bitmap skuImg = null;
if (!string.IsNullOrEmpty(orderDetail.sku_img))
{
try
{
var img = Image.FromStream(System.Net.WebRequest.Create(orderDetail.sku_img).GetResponse().GetResponseStream());
skuImg = new Bitmap(img, new Size(220, 220));
}
catch (Exception)
{
skuImg = null;
}
}
pictureBox1.Image = skuImg;
if (UpId.Contains("dy-"))
{
webUrl = "https://haohuo.jinritemai.com/views/product/item2?id=" + goodsId;
}
if (UpId.Contains("tb-"))
{
this.Width = 1380;
webUrl = "https://item.taobao.com/item.htm?id=";
webUrl = webUrl + goodsId;
if (!string.IsNullOrEmpty(BaseClass.taobaolianmengURL))
{
try
{
if (BaseClass.taobaolianmengURL.Contains("taobao.com"))
{
string taobaoid = BaseRegex.GetMatchRegexString(ref BaseClass.taobaolianmengURL, "goods_id=([\\s\\S]+?)&");
webUrl = BaseClass.taobaolianmengURL.Replace(taobaoid, goodsId.ToString());
}
}
catch (Exception)
{
}
}
}
else if (UpId.StartsWith("al-") || UpId.StartsWith("1688-"))
{
this.Width = 1380;
webUrl = "https://detail.1688.com/offer/" + goodsId + ".html";
}
else if (UpId.StartsWith("pd-") || UpId.StartsWith("pdd-"))
{
if (GlobalConfig.SystemSettings.IsUseMultiBuyer && GlobalConfig.LstMultiBuyer != null)
{
btnChangeMultiBuyer.Visible = true;
multiUserCookie = null;
List<PddMultiBuyerInfo> userCookies = GlobalConfig.LstMultiBuyer.FindAll(x => x.times > 0);
if (userCookies.Count > 0)
{
multiUserCookie = userCookies[Randomx.GetId(0, userCookies.Count)];
}
if (multiUserCookie == null)
{
BaseMsgForm.ShowError("多买手模式调用失败,无法获取买手管理中的买手号", "错误");
this.Close();
return;
}
}
else
{
btnChangeMultiBuyer.Visible = false;
}
// 非拼多多批发拍单
if (!GlobalConfig.SystemSettings.IsUsePddPifa)
{
if (!string.IsNullOrEmpty(BaseClass.duoduojinbaoURL))
{
try
{
string duoduoid = BaseRegex.GetMatchRegexString(ref BaseClass.duoduojinbaoURL, "goods_id=([\\s\\S]+?)&");
webUrl = BaseClass.duoduojinbaoURL.Replace(duoduoid, goodsId.ToString());
}
catch (Exception)
{
webUrl = webUrl + goodsId;
}
}
else
{
webUrl = webUrl + goodsId;
}
}
else // 拼多多批发拍单
{
this.Width = 1380;
var area = Screen.GetWorkingArea(this);
this.Location = new Point(area.Width / 2 - 1380 / 2, this.Location.Y);
string urlTemp = "https://pifa.pinduoduo.com/pifa/goods/queryGoodsPropertyInfo";
string refererTemp = "https://pifa.pinduoduo.com";
string data = "{\"goodsId\":" + goodsId + "}";
string htmldetail = AllBase.Helper.HttpHelper.Request_pifa_pinduoduo_com(urlTemp, refererTemp, data, "");
if (htmldetail.Contains("此商品不存在"))
{
BaseMsgForm.ShowInfo("此商品不存在。请指定同款自定义ID", "提示");
this.Close();
return;
}
pddPifaUser = GlobalConfig.LstPddPifaShop.Find(s => s.PddId == mainform.cmbPddPifaBuyUser.Text || s.PddShopName == mainform.cmbPddPifaBuyUser.Text);
if (pddPifaUser == null)
{
BaseMsgForm.ShowInfo("请指定拼多多批发买手号", "提示");
this.Close();
return;
}
webUrl = "https://pifa.pinduoduo.com/goods/detail/?gid=" + goodsId;
pddPifaCookieList = JsonHelper.DeserializeJsonToList<Cookie>(pddPifaUser.CookiesJson);
var cookieManager = Cef.GetGlobalCookieManager();
foreach (var cook in pddPifaCookieList)
{
bool status = cookieManager.SetCookie("https://pifa.pinduoduo.com", new Cookie
{
Name = cook.Name,
Value = cook.Value,
});
}
}
}
userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36";
if (cefWebBrowser1 == null)
{
cefWebBrowser1 = new ChromiumWebBrowser(webUrl);
//requestHandler = new NaiBa.CefHelper.RequestHandler();
resourceRequestHandler = new Helper.CustomResourceRequestHandler();
if (!string.IsNullOrEmpty(userAgent))
{
resourceRequestHandler.UserAgent = userAgent;
}
cefWebBrowser1.RequestHandler = new NaiBa.CefHelper.Handler.CustomRequestHandler(resourceRequestHandler);
resourceRequestHandler.ResourceLoadCompleteEvent += RequestHandler_ResourceLoadComplete;
cefWebBrowser1.FrameLoadStart += CefWebBrowser_FrameLoadStart;
cefWebBrowser1.FrameLoadEnd += cefWebBrowser1_FrameLoadEnd;
cefWebBrowser1.Dock = DockStyle.Fill;
// cefWebBrowser1.RegisterJsObject("bound", new BoundObject(), BindingOptions.DefaultBinder); // CEF67
// 注册C#类为JS对象
//CefSharpSettings.LegacyJavascriptBindingEnabled = true;
CefSharpSettings.WcfEnabled = true;
cefWebBrowser1.JavascriptObjectRepository.Register("bound", new BoundObject(), isAsync: false, options: BindingOptions.DefaultBinder);
cefWebBrowser1.KeyboardHandler = new CEFKeyBoardHander();
plBrower.Controls.Add(cefWebBrowser1);
}
else
{
cefWebBrowser1.Load(webUrl);
cefWebBrowser1.Refresh();
}
textBoxXGoodPrice.Text = (orderDetail.price).ToString();//商品售价
buyCountTextBoxX.Text = orderDetail.count.ToString();//购买数量
txtRemark.Text = orderDetail.remark;
#region 更新订单
shop = GlobalConfig.ShopLoginList.FirstOrDefault(x => x.ShopId == orderDetail.shop_id.ToString());
this.buyOrderListForm.UpdateOrderStatusAndEncrypt(orderDetail);
#endregion
tbsku.Text = orderDetail.sku;
userNameTextBoxX.Text = bName = orderDetail.name;
mobileTextBoxX.Text = Mobile = orderDetail.mobile;
addressTextBoxX.Text = Address = orderDetail.address;
if (TransitAddressForm.TransitAddress != null)
{
userNameTextBoxX.Text = bName = TransitAddressForm.TransitAddress.Name;
mobileTextBoxX.Text = Mobile = TransitAddressForm.TransitAddress.Mobile;
addressTextBoxX.Text = Address = TransitAddressForm.TransitAddress.Address + " " + order_id;
}
}
private void RequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData)
{
try
{
if (url.Contains("user_verify") && responseData.Contains("\"result\":true"))
{
BaseClass.verify_auth_token = BaseRegex.GetStringJson(ref postData, "verify_auth_token");
//new Thread(GetTbOrder).Start();
}
}
catch (Exception e)
{
//throw;
}
}
private void CefWebBrowser_FrameLoadStart(object sender, FrameLoadStartEventArgs e)
{
try
{
if (!string.IsNullOrEmpty(userAgent))
{
// 使用JavaScript修改UserAgent
cefWebBrowser1.GetBrowser().MainFrame.ExecuteJavaScriptAsync("navigator.__defineGetter__('userAgent', function(){ return '" + userAgent + "'});navigator.userAgent;");
}
}
catch (Exception ex)
{
MessageBox.Show("" + ex.Message);
}
}
public bool isGetDetail = false;//是否获取过商品详情
public string PayAmount = ""; //拍单时支付金额
public string ProductAmount = ""; //商品价格
public string buyerName = ""; //买家姓名
public string buyerMobile = ""; //买家电话
public string buyerAddress = ""; //买家地址
public string order_id_buy = ""; //买家订单号
bool isbuysuccess = false;
private void cefWebBrowser1_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e)
{
string url = cefWebBrowser1.Address;
Task.Run(() =>
{
try
{
if (UpId.StartsWith("tb-"))
{
new Thread(StopAlertEvent).Start();//禁用alert
cefWebBrowser1.GetSourceAsync().ContinueWith(x =>
{
detailHtml = x.Result;
if (((url.Contains("item.taobao.com/item.htm") || url.Contains("detail.tmall.com/item.htm?id=") || url.Contains("h5.m.taobao.com/awp/core/detail.htm")) && !isGetDetail))
{
isGetDetail = true;
new Thread(GetTbOrder).Start();
}
// 支付成功页面
if (url.Contains("buyertrade.taobao.com/trade/batch_pay_success.htm")
|| url.Contains("buyertrade.taobao.com/trade/pay_success.htm")
|| url.Contains("buy.tmall.com/order/paySuccess.htm")
|| url.Contains("cashiergtj.alipay.com/standard/result/payResult.htm")
|| url.Contains("cmspromo.alipay.com/beitoukj/tripSpinLot.htm")
|| url.Contains("cashierem14.alipay.com/standard/result/payResult.htm")
|| url.Contains("market.m.taobao.com/apps/market/trade/success.html"))
{
if (!isbuysuccess)
{
isbuysuccess = true;
order_id_buy = HttpUtility.GetQueryString("order_sn", url);
if (string.IsNullOrEmpty(order_id_buy))
{
order_id_buy = HttpUtility.GetQueryString("bizOrderId", url);
}
if (string.IsNullOrEmpty(order_id_buy))
{
order_id_buy = HttpUtility.GetQueryString("orderIds", url);
}
if (string.IsNullOrEmpty(order_id_buy))
{
order_id_buy = HttpUtility.GetQueryString("biz_order_id", url);
}
if (string.IsNullOrEmpty(order_id_buy))
{
string html = GetCefHtml(cefWebBrowser1);
order_id_buy = BaseRegex.GetMatchRegexString(ref html, "biz_order_id=([\\d]+)");
if (string.IsNullOrEmpty(order_id_buy))
{
order_id_buy = BaseRegex.GetMatchRegexString(ref html, "&bizOrderId=([\\s\\S]+?)&");
}
if (string.IsNullOrEmpty(order_id_buy))
{
order_id_buy = BaseRegex.GetMatchRegexString(ref html, "&orderIds=([\\s\\S]+?)&");
}
if (string.IsNullOrEmpty(order_id_buy))
{
order_id_buy = BaseRegex.GetMatchRegexString(ref html, "pay_success.htm\\?biz_order_id=([\\s\\S]+?)&notify_id");
}
}
PayAmount = tbproductjj.Text;
new Thread(UpdateToServer).Start();
if (!string.IsNullOrEmpty(order_id_buy))
{
BaseMsgForm.ShowInfo("拍单成功", "拍单成功");
this.Close();
}
else
{
BaseMsgForm.ShowInfo("拍单成功,但拍单订单号抓取失败,请手动编辑拍单订单号!", "拍单成功");
Invoke(new Action(() => { pnlManualSaveBuyOrderId.Visible = true; }));
}
}
}
#region 测试
//if (url.Contains("yangkeduo.com/order_checkout.htm"))//获取收货人的姓名,电话,地址
//{
// var Profitx = BaseRegex.GetMatchRegexString(detailHtml, "实付款[\\S\\s]+?<i>¥</i>([\\s\\S]+?)</span>");
// buyerName = BaseRegex.GetMatchRegexString(ref detailHtml, "<span class=\"oc-address-receiver-name\">([\\s\\S]+)</span><span class=\"oc-address-receiver-mobile\">");
// if (string.IsNullOrEmpty(buyerName))
// {
// buyerName = BaseRegex.GetStringJson(ref detailHtml, "name");
// }
// buyerMobile = BaseRegex.GetMatchRegexString(ref detailHtml, "<span class=\"oc-address-receiver-mobile\">([\\s\\S]+)</span></div><div class=\"oc-address-detail\">");
// if (string.IsNullOrEmpty(buyerMobile))
// {
// buyerMobile = BaseRegex.GetStringJson(ref detailHtml, "mobile");
// }
// buyerAddress = BaseRegex.GetMatchRegexString(ref detailHtml, "<div class=\"oc-address-detail\">([\\S\\s]+)</div></div><div class=\"oc-address-right-arrow\">");
// string province = "";
// string city = "";
// string district = "";
// string address = "";
// if (string.IsNullOrEmpty(buyerAddress))
// {
// province = BaseRegex.GetStringJson(ref detailHtml, "province");
// city = BaseRegex.GetStringJson(ref detailHtml, "city");
// district = BaseRegex.GetStringJson(ref detailHtml, "district");
// address = BaseRegex.GetStringJson(ref detailHtml, "address");
// ProductAmount = textBoxXGoodPrice.Text.Trim();
// buyerAddress = province + city + district + address;
// }
// if (!string.IsNullOrEmpty(buyerAddress))
// {
// buyerAddress = buyerAddress.Replace("<!-- -->", "").Replace("&nbsp;", "");
// }
// //检查现拍单的订单收货人信息是否正确,防止拍单的时候收货人信息错误。
// if (!string.IsNullOrEmpty(province) && !orderDetail.address.Contains(province.Substring(0, 2))
// || !string.IsNullOrEmpty(city) && !orderDetail.address.Contains(city)
// || !string.IsNullOrEmpty(district) && !orderDetail.address.Contains(district))//|| !string.IsNullOrEmpty(buyerMobile) && Order.mobile != buyerMobile
// {
// if (InvokeRequired)
// {
// Invoke(new Action(() =>
// {
// BaseMsgForm.ShowInfo("请检查收货人地址是否匹配?若匹配,请忽略", "提示");
// }));
// }
// else
// {
// BaseMsgForm.ShowInfo("请检查收货人地址是否匹配?若匹配,请忽略", "提示");
// }
// }
//}
//商品加载完成
//if ((url.Contains("yangkeduo.com/goods.html?goods_id=") || url.Contains("mobile.yangkeduo.com/muti_coupon_rec.html")) && !isGetDetail)
//{
// if (!string.IsNullOrEmpty(detailHtml) && !isGetDetail)// && (detailHtml.Contains("groupOrderID") || detailHtml.Contains("groupID"))
// {
// if ((detailHtml.Contains("groupOrderID") || detailHtml.Contains("groupID")))
// {
// isGetDetail = true;
// detailHtml = GetHtml.UrlDecode(detailHtml);
// new Thread(GetOrder).Start();
// }
// }
//}
//else if (url.Contains("yangkeduo.com/duo_group.html")
// || url.Contains("yangkeduo.com/order.html") //|| url.Contains("yangkeduo.com/group")
// || url.Contains("yangkeduo.com/alipay_callback.html")
// || url.Contains("yangkeduo.com/transac_wappay_callback.html"))//拍单成功
//{
// order_id_buy = HttpUtility.GetQueryString("order_sn", url);
// PayAmount = tbproductjj.Text;
// new Thread(UpdateToServer).Start();
// MessageBox.Show("拍单成功");
// ////Order.status = "拍单成功";
// //new Thread(ShowMessagex).Start();
//}
#endregion
});
}
else if (UpId.StartsWith("pd-") || UpId.StartsWith("pdd-"))
{
cefWebBrowser1.GetSourceAsync().ContinueWith(t =>
{
detailHtml = t.Result;
if (t.Result != null && t.Result.Contains("一键领取"))
{
Thread.Sleep(Randomx.GetId(150, 250));
var jsCode =
clickJsElementStr +
"function pressToBuy() { " +
" var btn = getElement('<span>一键领取</span>');" +
" if (btn) { btn.click(); }" +
"}" +
"pressToBuy();";
cefWebBrowser1.GetMainFrame().ExecuteJavaScriptAsync(jsCode);
}
else if (t.Result != null && t.Result.Contains("一键购买"))
{
Thread.Sleep(Randomx.GetId(150, 250));
var jsCode =
clickJsElementStr +
"function pressToBuy() { " +
" var btn = getElement('一键购买');" +
" if (btn) { btn.click(); }" +
"}" +
"pressToBuy();";
cefWebBrowser1.GetMainFrame().ExecuteJavaScriptAsync(jsCode);
}
if (url.Contains("yangkeduo.com/order_checkout.htm"))//获取收货人的姓名,电话,地址
{
var Profitx = BaseRegex.GetMatchRegexString(detailHtml, "实付款[\\S\\s]+?<i>¥</i>([\\s\\S]+?)</span>");
buyerName = BaseRegex.GetMatchRegexString(ref detailHtml, "<span class=\"oc-address-receiver-name\">([\\s\\S]+)</span><span class=\"oc-address-receiver-mobile\">");
if (string.IsNullOrEmpty(buyerName))
{
buyerName = BaseRegex.GetStringJson(ref detailHtml, "name");
}
buyerMobile = BaseRegex.GetMatchRegexString(ref detailHtml, "<span class=\"oc-address-receiver-mobile\">([\\s\\S]+)</span></div><div class=\"oc-address-detail\">");
if (string.IsNullOrEmpty(buyerMobile))
{
buyerMobile = BaseRegex.GetStringJson(ref detailHtml, "mobile");
}
buyerAddress = BaseRegex.GetMatchRegexString(ref detailHtml, "<div class=\"oc-address-detail\">([\\S\\s]+)</div></div><div class=\"oc-address-right-arrow\">");
string province = "";
string city = "";
string district = "";
string address = "";
string jinjia = BaseRegex.GetStringJson(ref detailHtml, "orderAmount");
if (!string.IsNullOrEmpty(jinjia))
{
Invoke(new Action(() =>
{
try
{
tbproductjj.Text = (Convert.ToInt32(jinjia) * 0.01).ToString();
textBoxXProfit.Text = (Convert.ToDouble(textBoxXGoodPrice.Text.Replace(" ", "")) - Convert.ToDouble(tbproductjj.Text.Replace(" ", ""))).ToString();
}
catch (Exception ex)
{
}
}));
}
if (string.IsNullOrEmpty(buyerAddress))
{
province = BaseRegex.GetStringJson(ref detailHtml, "province");
city = BaseRegex.GetStringJson(ref detailHtml, "city");
district = BaseRegex.GetStringJson(ref detailHtml, "district");
address = BaseRegex.GetStringJson(ref detailHtml, "address");
ProductAmount = (textBoxXGoodPrice.Text.Trim().ParseToDecimal() * 100).ToString(); // 服务端修改价格时会 * 0.01。
buyerAddress = province + city + district + address;
}
if (!string.IsNullOrEmpty(buyerAddress))
{
Invoke(new Action(() =>
{
buyerAddress = buyerAddress.Replace("<!-- -->", "").Replace("&nbsp;", "");
}));
}
//检查现拍单的订单收货人信息是否正确,防止拍单的时候收货人信息错误。
if (!string.IsNullOrEmpty(province) && !orderDetail.address.Contains(province.Substring(0, 2))
|| !string.IsNullOrEmpty(city) && !orderDetail.address.Contains(city)
|| !string.IsNullOrEmpty(district) && !orderDetail.address.Contains(district))//|| !string.IsNullOrEmpty(buyerMobile) && Order.mobile != buyerMobile
{
if (InvokeRequired)
{
Invoke(new Action(() =>
{
BaseMsgForm.ShowInfo("请检查收货人地址是否匹配?若匹配,请忽略", "提示");
}));
}
else
{
BaseMsgForm.ShowInfo("请检查收货人地址是否匹配?若匹配,请忽略", "提示");
}
}
}
#region 拼多多批发拍单页面及拍单完成逻辑
if (url.Contains("pifa.pinduoduo.com/goods/detail/?gid=") && !isGetDetail)
{
if (!string.IsNullOrEmpty(detailHtml) && !isGetDetail)
{
isGetDetail = true;
Thread.Sleep(3000);
new Thread(GetOrderPddPifa).Start();
}
}
//if (url.Contains("cashier.pinduoduo.com/main/fast-pay"))
//{
// Task.Run(() =>
// {
// string clickjs = "document.querySelectorAll('button').forEach((item)=>{if(item.outerText=='立即跳转'){item.click();}})";
// cefWebBrowser1.GetBrowser().MainFrame.ExecuteJavaScriptAsync(clickjs);
// // clickjs = "document.querySelectorAll('button').forEach((item)=>{if(item.outerText=='返回'){item.click();}})";
// //Browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync(clickjs);
// });
//}
//拼多多批发支付完成获取支付结果
if (url.Contains("pifa.pinduoduo.com/order"))
{
Task.Run(() =>
{
Invoke((Action)(() =>
{
BuyOrderPifaSelectForm pifaSelectForm = new BuyOrderPifaSelectForm();
pifaSelectForm.cookies = pddPifaCookies;
pifaSelectForm.sku = SkuLite;
//piFaVerify.Closed += PiFaVerify_Closed;
//piFaVerify.btsaveorder.Click += Btsaveorder_Click;
pifaSelectForm.ShowDialog();
if (!string.IsNullOrEmpty(pifaSelectForm.order_sn))
{
order_id_buy = HttpUtility.GetQueryString("order_sn", url);
order_id_buy = pifaSelectForm.order_sn;
PayAmount = pifaSelectForm.pay_amount.ToString();
new Thread(UpdateToServer).Start();
isbuysuccess = true;
BaseMsgForm.ShowInfo("拍单成功", "拍单成功");
this.Close();
}
}));
});
}
#endregion
#region 多账号拍单逻辑 切换买手
if (GlobalConfig.SystemSettings.IsUseMultiBuyer && !changeuser && url.Contains("yangkeduo.com/order_checkout.html"))
{
changeuser = true;
var html = t.Result;
//https://mobile.yangkeduo.com/order_checkout.html?_oc_rank_id=6771010201&sku_id=1201923029944&group_id=50701136492&goods_id=233758780277&goods_number=1&page_from=0&refer_page_element=single_buy&source_channel=0&refer_page_name=goods_detail&refer_page_id=10014_1661482338012_9oizjt40xu&refer_page_sn=10014
string group_id = BaseRegex.GetURLParams(url, "group_id");
string mall_id = BaseRegex.GetStringJson(ref html, "mall_id");
string goods_id = BaseRegex.GetURLParams(url, "goods_id");
string sku_id = BaseRegex.GetURLParams(url, "sku_id");
string price = BaseRegex.GetIntJson(ref html, "goodsAmount").ToString();
string shop_discount = BaseRegex.GetStringJson(ref html, "shop_discount");
string create_order_token = BaseRegex.GetStringJson(ref html, "create_order_token");
string create_order_msg = BaseRegex.GetStringJson(ref html, "create_order_msg");
string rank_id = BaseRegex.GetStringJson(ref html, "rank_id");
string page_from = BaseRegex.GetStringJson(ref html, "page_from");
string biz_type = BaseRegex.GetStringJson(ref html, "biz_type");
string promotion_type = BaseRegex.GetStringJson(ref html, "promotion_type");
string promotion_id = BaseRegex.GetStringJson(ref html, "promotion_id");
string sku_ids = BaseRegex.MidStrEx(html, "\"sku_ids\":", ",\"");
string biz_sn = BaseRegex.GetStringJson(ref html, "biz_sn");
string discount_amount = BaseRegex.GetStringJson(ref html, "discount_amount");
//https://mobile.yangkeduo.com/proxy/api/api/germany/consult_merchant_promotion?pdduid=4191813477420
//string datajsons = "{\"anti_content\":\"0aoanti_content\",\"front_supports\":{\"prom\":[\"mctpi\",\"pctpi\",\"gp\",\"rpchs\",\"brandvip\",\"gbc\",\"uupc\"],\"pay\":[\"wxc\",\"ci\",\"cicn\"],\"fulf\":[\"safs\",\"ct\"]},\"address_id\":0,\"group_id\":" + group_id + ",\"group_order_id\":\"\",\"mall_id\":" + mall_id + ",\"merchant_tag\":5,\"promotion_status\":1," +
//"\"cell_type\":0,\"goods_info\":{\"goods_id\":\""+ goods_id + "\",\"sku_id\":"+ sku_id + ",\"number\":1,\"sku_limit\":999999,\"price\":"+ price + "," +
//"\"cat_id\":17399,\"cat_id1\":17285,\"cat_id2\":17297,\"cat_id3\":17399,\"goods_type\":1,\"event_type\":0,\"activity_type\":null,\"oversea_type\":0," +
//"\"activity_id\":null},\"promotion_identity_vos\":[{\"promotion_type\":22,\"sku_ids\":[1201923029944],\"extension\":{\"shop_discount\":\"500\",\"mall_id\":\"439123\"},\"mall_id\":439123}]}";
//.yangkeduo.com/order_checkout.html
datajsons = "{\"anti_content\":\"0aoanti_content\",\"front_supports\":{\"prom\":[\"mctpi\",\"pctpi\",\"gp\",\"rpchs\",\"brandvip\",\"gbc\",\"uupc\"],\"pay\":[\"wxc\",\"ci\",\"cicn\"],\"fulf\":[\"safs\",\"ct\"]},"
+ "\"address_id\":0,\"group_id\":" + group_id + ",\"group_order_id\":\"\",\"mall_id\":" + mall_id + ",\"merchant_tag\":5,\"promotion_status\":1,\"cell_type\":0,"
+ "\"goods_info\":{\"goods_id\":\"" + goods_id + "\",\"sku_id\":" + sku_id + ",\"number\":1,\"sku_limit\":999999,\"price\":" + price + ","
+ "\"goods_type\":1,\"event_type\":0,\"activity_type\":null,\"oversea_type\":0,\"activity_id\":null},\"extend_map\":{\"create_order_token\":\"" + create_order_token + "\","
+ "\"create_order_msg\":\"" + create_order_msg + "\",\"rank_id\":\"" + rank_id + "\",\"page_from\":" + /*page_from*/"36" + ",\"biz_type\":" + biz_type + ",\"original_front_env\":0,\"current_front_env\":1,"
+ "\"lite_contract_code\":null,\"use_v2_gray\":1},\"promotion_identity_vos\":[{\"promotion_type\":" + promotion_type + ",\"promotion_id\":\"" + promotion_id + "\","
+ "\"sku_ids\":[" + sku_id + "],\"extension\":{\"shop_discount\":\"" + shop_discount + "\",\"mall_id\":\"" + mall_id + "\"},\"mall_id\":" + mall_id + "}]}";
change_pddbuyuser(url, this.datajsons);
}
#endregion
// 拼多多商品加载完成
if ((url.Contains("yangkeduo.com/goods.html?goods_id=") || url.Contains("mobile.yangkeduo.com/muti_coupon_rec.html")) && !isGetDetail)
{
if (!string.IsNullOrEmpty(detailHtml) && !isGetDetail)// && (detailHtml.Contains("groupOrderID") || detailHtml.Contains("groupID"))
{
if ((detailHtml.Contains("groupOrderID") || detailHtml.Contains("groupID")))
{
isGetDetail = true;
detailHtml = GetHtml.UrlDecode(detailHtml);
new Thread(GetOrderPdd).Start();
}
}
}
// 拼多多拍单成功
else if (url.Contains("yangkeduo.com/duo_group.html")
//|| url.Contains("yangkeduo.com/order.html") 商品详情urlhttps://mclient.alipay.com/h5/cashierPay.htm支付完成
|| url.Contains("yangkeduo.com/alipay_callback.html")
|| url.Contains("yangkeduo.com/transac_wappay_callback.html"))//拍单成功
{
if (!isbuysuccess)
{
if (GlobalConfig.SystemSettings.IsUseMultiBuyer)
{
multiUserCookie.times = multiUserCookie.times - 1;
string url1 = BaseClass.Build29WxObjString("pdd_user_cookies&act=update");
string param = UserLogin.GetSignaturex() + "&pdd_user_id=" + multiUserCookie.pdd_user_id + "&times=" + multiUserCookie.times;
string html = GetHtml.PostUtf8(url1, param);
}
order_id_buy = HttpUtility.GetQueryString("order_sn", url);
PayAmount = tbproductjj.Text;
new Thread(UpdateToServer).Start();
isbuysuccess = true;
BaseMsgForm.ShowInfo("拍单成功", "拍单成功");
Invoke(new Action(() =>
{
this.Close();
}));
}
}
//https://mobile.yangkeduo.com/transac_wechat_wapcallback.html?option_json=%7B%22url%22%3A%22order%2Fprepay%22%2C%22orderSn%22%3A%22220614-236738354201552%22%2C%22params%22%3A%7B%22order_sn%22%3A%22220614-236738354201552%22%7D%7D&order_sn=220614-236738354201552&order_amount=118&goods_id=7139438999&refer_page_name=order_checkout&refer_page_id=10004_1655203526853_mjvcf0awbk&refer_page_sn=10004
//拼多多 微信支付完成
if (url.Contains("yangkeduo.com/transac_wechat_wapcallback.html") && BaseClass.IsCloudBuyOrder)
{
lock (new object())
{
//ICookieManager cookieManager = cefWebBrowser1.GetCookieManager();
//var listcookie = cookieManager.VisitAllCookiesAsync().Result;
//listcookie.RemoveAll(x => x.Name != "pdd_user_id");
//if (listcookie.Count > 0)
//{
// pdd_user_id = listcookie[0].Value;
//}
Thread.Sleep(500);
if (!string.IsNullOrEmpty(BaseClass.PddUid) && !wechatpay)
{
wechatpay = true;
string order_sn = BaseRegex.GetURLParams(url, "order_sn");
string buyerCookie = "";
if (GlobalConfig.SystemSettings.IsUseMultiBuyer)
{
BaseClass.PddUid = multiUserCookie.pdd_user_id;
buyerCookie = "PDDAccessToken=" + multiUserCookie.cookies + ";";
}
else
{
buyerCookie = GetPostTaobaoHtml.GetCookies(BaseClass.PddMobileUrl, "");
}
// {"pay_app_id":38,"version":3,"attribute_fields":{"paid_times":0},"order_sn":"220614-383860151961552","pap_pay":1}
string postdata = " {\"pay_app_id\":38,\"version\":3,\"attribute_fields\":{\"paid_times\":0},\"order_sn\":\"" + order_sn + "\",\"pap_pay\":1}";
url = BaseClass.PddMobileUrl + "proxy/api/order/prepay?pdduid=" + BaseClass.PddUid;
//string abc = HttpHelper.GetJsonPost("https://mobile.yangkeduo.com/proxy/api/order/prepay?pdduid=" + pdd_user_id, "", true, postdata, buyerCookie);
string html = GetPostTaobaoHtml.UploadTaobaoPost(url, "", true, postdata, false, buyerCookie);
if (!string.IsNullOrEmpty(html))
{
string murl = BaseRegex.GetStringJson(ref html, "mweb_url");
string prepayid = BaseRegex.GetStringJson(ref html, "prepayid");
//https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx14151714273419304d428adcac45a30000&package=1598889355&refer_page_name=transac_wechat_wapcallback&refer_page_id=10154_1655191035448_0s7pvhfr3d&refer_page_sn=10154
string paycodeurl = murl + "&refer_page_name=transac_wechat_wapcallback&refer_page_id=10004_1655200470715_uqsu0p46oz&refer_page_sn=10004";
//string qrcodehtml = HttpHelper.GetPddUrl(paycodeurl, "https://mobile.yangkeduo.com", paicookie);
string qrcodehtml = GetPostTaobaoHtml.UploadTaobao(paycodeurl, "https://yangkeduo.com", true, buyerCookie);
string qrcodes = BaseRegex.GetMatchRegexString(ref qrcodehtml, "deeplink.+?\"(?<url>weixin://wap/pay.+?)\"");
Invoke((Action)(() =>
{
WechatPaymentForm wp = new WechatPaymentForm(qrcodes, order_sn, buyerCookie);
wp.Closing += (oo, ee) =>
{
if (!string.IsNullOrEmpty(order_sn) && (wp.chatStatusPrompt == "待发货" || wp.chatStatusPrompt == "待分享"))
{
// 多拍单次数-1
if (GlobalConfig.SystemSettings.IsUseMultiBuyer)
{
multiUserCookie.times = multiUserCookie.times - 1;
var url1 = BaseClass.Build29WxObjString("pdd_user_cookies&act=update");
var param = UserLogin.GetSignaturex() + "&pdd_user_id=" + multiUserCookie.pdd_user_id + "&times=" + multiUserCookie.times;
var html1 = GetHtml.PostUtf8(url1, param);
}
order_id_buy = order_sn;
PayAmount = tbproductjj.Text;
new Thread(UpdateToServer).Start();
isbuysuccess = true;
BaseMsgForm.ShowInfo("拍单成功", "拍单成功");
if (Created)
Invoke(new Action(() =>
{
this.Close();
}));
}
else if (isbuysuccess == false)
{
//手动设置订单号 转移订单
BaseMsgForm.ShowInfo("拍单完成,未获得拍单订单号,请手动设置订单号!!!,请手动设置订单号!!!", "提示");
//addlog("拍单完成" + Environment.NewLine + "未获得拍单订单号" + Environment.NewLine + "请手动设置订单号!!!", "Red");
isbuysuccess = false;
}
string clickjs = "document.querySelectorAll('div').forEach((item)=>{if(item.outerText=='已完成支付'){item.click();}})";
try
{
cefWebBrowser1.GetBrowser().MainFrame.ExecuteJavaScriptAsync(clickjs);
}
catch { }
};
wp.TopMost = true;
wp.ShowDialog();
}));
}
Thread.Sleep(1000);
}
}
}
});
}
else if (UpId.StartsWith("al-") || UpId.StartsWith("1688-"))
{
new Thread(AddTaoBaoAddress).Start();
cefWebBrowser1.GetSourceAsync().ContinueWith(x =>
{
detailHtml = x.Result;
if (url.Contains("order.1688.com/order/smart_make_order.htm?p=detail"))
{
string jinjia = BaseRegex.GetMatchRegexString(ref detailHtml, "<em class=\"due-total text-stress\">(?<money>\\d+\\.\\d+)</em>");
buyerAddress = BaseRegex.GetStringInput(ref detailHtml, "_fm.smarta._0.ad");
buyerMobile = BaseRegex.GetStringInput(ref detailHtml, "_fm.smarta._0.m");
buyerName = BaseRegex.GetStringInput(ref detailHtml, "_fm.smarta._0.f");
if (!string.IsNullOrEmpty(jinjia))
{
Invoke(new Action(() =>
{
try
{
tbproductjj.Text = jinjia;
textBoxXProfit.Text = (Convert.ToDouble(textBoxXGoodPrice.Text.Replace(" ", "")) - Convert.ToDouble(tbproductjj.Text.Replace(" ", ""))).ToString();
}
catch (Exception ex)
{
}
}));
}
}
else if (url.Contains("https://trade.1688.com/order/unify_pay_success.htm") || url.Contains("https://cashiergtj.alipay.com/standard/result/payResult.htm") || url.Contains("cashierem14.alipay.com/standard/result/payResult.htm"))//支付成功页面
{
if (!isbuysuccess)
{
order_id_buy = HttpUtility.GetQueryString("orderId", url);
PayAmount = tbproductjj.Text;
new Thread(UpdateToServer).Start();
isbuysuccess = true;
BaseMsgForm.ShowInfo("拍单成功", "拍单成功");
this.Close();
}
}
});
}
}
catch (Exception)
{
}
});
}
#region 初始化地址
public static void IniAddress()
{
string path = "temp/province";
if (!Directory.Exists("temp"))
Directory.CreateDirectory("temp");
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
string mainDomain = "yangkeduo.com";
if (string.IsNullOrEmpty(PddUid))
{
BaseMsgForm.ShowError("请选择买手号!");
}
while (string.IsNullOrEmpty(PddUid))
{
Thread.Sleep(100);
if (BaseClass.CookiesAll.ContainsKey("yangkeduo.com") && BaseClass.CookiesAll[mainDomain].ContainsKey("pdd_user_id"))
PddUid = BaseClass.CookiesAll[mainDomain]["pdd_user_id"];
}
string html = GetProvince("1");
var m = BaseRegex.GetMatchRegex(ref html, @"\{(.+?)\}");
for (int i = 0; m != null && i < m.Count; i++)
{
string list = m[i].Groups[0].Value;
ProvinceBase p = new ProvinceBase();
p.name = BaseRegex.GetStringJson(ref list, "region_name");
if (CollectionClass.Province.ContainsKey(p.name))
continue;
p.id = BaseRegex.GetStringJson(ref list, "region_id");
p.parent_id = BaseRegex.GetStringJson(ref list, "parent_id");
html = GetProvince(p.id);
var mm = BaseRegex.GetMatchRegex(ref html, @"\{(.+?)\}");
for (int j = 0; mm != null && j < mm.Count; j++)
{
list = mm[j].Groups[0].Value;
ProvinceBase pp = new ProvinceBase();
pp.name = BaseRegex.GetStringJson(ref list, "region_name");
pp.id = BaseRegex.GetStringJson(ref list, "region_id");
pp.parent_id = BaseRegex.GetStringJson(ref list, "parent_id");
if (p.city.ContainsKey(pp.name))
continue;
html = GetProvince(pp.id);
var mmm = BaseRegex.GetMatchRegex(ref html, @"\{(.+?)\}");
for (int k = 0; mmm != null && k < mmm.Count; k++)
{
list = mmm[k].Groups[0].Value;
ProvinceBase ppp = new ProvinceBase();
ppp.name = BaseRegex.GetStringJson(ref list, "region_name");
ppp.id = BaseRegex.GetStringJson(ref list, "region_id");
ppp.parent_id = BaseRegex.GetStringJson(ref list, "parent_id");
if (pp.city.ContainsKey(ppp.name))
continue;
pp.city[ppp.name] = ppp;
}
p.city[pp.name] = pp;
}
CollectionClass.Province[p.name] = p;
}
}
public static string GetProvince(string pid)
{
string path = "temp/province";
string url = "http://apiv4.yangkeduo.com/api/galen/v2/regions/" + pid + "?pdduid=" + PddUid;
string refere = BaseClass.PddMobileUrlx + "addresses.html";
string html = "", file = path + "/" + pid + ".king";
if (FileBase.Exists(file))
html = FileBase.ReadAllText(file, Encoding.UTF8);
if (string.IsNullOrEmpty(html) || (!string.IsNullOrEmpty(html) && html.Contains("错误")))
{
html = GetPostTaobaoHtml.UploadTaobao(url, refere, true);
if (html.Contains("错误"))
{
Thread.Sleep(5 * 1000);
html = GetPostTaobaoHtml.UploadTaobao(url, refere, true);
}
FileBase.WriteAllText(file, html, Encoding.UTF8);
Thread.Sleep(200);
}
return html;
}
#endregion
#region 更新订单
private KeyValuePair<BuyNumber, UserCookies> GetBuyerUser()
{
KeyValuePair<BuyNumber, UserCookies> buyuser;
if (UpId.StartsWith("tb-"))
{
buyuser = TaoBaoBuyUser.buyUserCookies.First(x => x.Value.uid == BaseClass.TaoBaoUid);
}
else if (UpId.StartsWith("pdd-") || UpId.StartsWith("pd-"))
{
if (GlobalConfig.SystemSettings.IsUsePddPifa)
{
buyuser = new KeyValuePair<BuyNumber, UserCookies>();
Invoke(new Action(() =>
{
var user = GlobalConfig.LstPddPifaShop.FirstOrDefault(s => s.PddId == mainform.cmbPddPifaBuyUser.Text || s.PddShopName == mainform.cmbPddPifaBuyUser.Text);
BuyNumber bn = new BuyNumber(8, user?.PddId, user?.PddId);
UserCookies uc = new UserCookies() { UserName = user?.PddId, SiteId = 8, uid = user?.PddId, Cookies = JsonHelper.DeserializeJsonToList<Cookie>(user?.CookiesJson) };
buyuser = new KeyValuePair<BuyNumber, UserCookies>(bn, uc);
}));
}
else if (GlobalConfig.SystemSettings.IsUseMultiBuyer)
{
buyuser = new KeyValuePair<BuyNumber, UserCookies>();
if (multiUserCookie != null)
{
Cookie c = new Cookie()
{
Domain = "yangkeduo.com",
Name = "PDDAccessToken",
Value = multiUserCookie.cookies,
Expires = DateTime.Now.AddYears(1),
Path = "/",
};
BuyNumber bn = new BuyNumber(8, "plbuy_" + multiUserCookie.pdd_user_id, "plbuy_" + multiUserCookie.pdd_user_id);
UserCookies uc = new UserCookies()
{
UserName = "plbuy_" + multiUserCookie.pdd_user_id,
SiteId = 8,
uid = "plbuy_" + multiUserCookie.pdd_user_id,
Cookies = new List<Cookie>() { c },
};
buyuser = new KeyValuePair<BuyNumber, UserCookies>(bn, uc);
}
}
else
{
buyuser = PddBuyUser.buyUserCookies.First(x => x.Value.uid == BaseClass.PddUid);
}
}
else
{
buyuser = ALBuyUser.buyUserCookies.First(x => x.Value.uid == BaseClass.ALUid);
}
return buyuser;
}
private void UpdateToServer()
{
try
{
//KeyValuePair<BuyNumber, UserCookies> buyuser = new KeyValuePair<BuyNumber, UserCookies>(null, null);
//if (GlobalConfig.SystemSettings.IsUseMultiBuyer)
//{
//}
var buyuser = GetBuyerUser();
string buyusername = "";
string buyuserid = "";
if (buyuser.Value != null)
{
buyusername = buyuser.Key.name;
buyuserid = buyuser.Value.uid;
}
StringBuilder sb = new StringBuilder();
sb.Append("&order_id=" + orderDetail.order_id);
sb.Append("&price=" + ProductAmount);
sb.Append("&name=" + buyerName);
sb.Append("&mobile=" + buyerMobile);
sb.Append("&up_product_id=" + UpId);
sb.Append("&address=" + buyerAddress);
sb.Append("&order_id_buy=" + order_id_buy); // 拍单订单号
sb.Append("&order_status_buy=2"); // 0已完成 1待拍单 2等待上家发货
sb.Append("&buy_price=" + PayAmount);
sb.Append("&buy_time=" + BaseClass.GetServerTimeString());
sb.Append("&buyer_mobile=" + buyusername);
sb.Append("&buyer_mobile_uid=" + buyuserid);
sb.Append("&remark=");
sb.Append("&is_update_order=1"); // 1修改状态 0不修改状态
orderDetail.price = "0"; // (Convert.ToDouble(ProductAmount) * 100).ToString();
orderDetail.name = buyerName;
orderDetail.mobile = buyerMobile;
orderDetail.address = buyerAddress;
orderDetail.order_id_buy = order_id_buy;
orderDetail.order_status_buy = 2;
orderDetail.buy_price = PayAmount;
orderDetail.buyer_mobile = buyusername;
orderDetail.buyer_mobile_uid = buyuserid;
CollectionClass.orderDataList.RemoveAll(x => x.order_id == orderDetail.order_id);
CollectionClass.orderSenderDataList.Add(orderDetail);
string url = BaseClass.Build29WxObjString("order&act=update");
string param = UserLogin.GetSignaturex() + sb.ToString();
string html = GetHtml.PostUtf8(url, param);
for (int i = 0; i < 10 && (html == null || !html.Contains("\"code\":200")); i++)
{
Thread.Sleep(1500 + Randomx.GetId(1000));
param = UserLogin.GetSignaturex() + sb.ToString();
html = GetHtml.PostUtf8(url, param);
}
if (html == null || !html.Contains("\"code\":200"))
{
BaseMsgForm.ShowError("订单状态更新失败,请手动编辑!");
}
buyOrderListForm.SetOrderEditShowInDgvRows(orderDetail, 2);
sendOrderForms.SetOrderEditShowInDgvRows(orderDetail, 1);
}
catch (Exception)
{
}
}
#endregion
#region 拼多多 多买手 切换买手号
/// <summary>
/// 替换买手
/// </summary>
/// <param name="_weburl"></param>
void change_pddbuyuser(string _weburl, string dataJson)
{
var cookieManager = Cef.GetGlobalCookieManager();
NaiBa.CefHelper.CEFBrowser.DeleteCookie(cookieManager);
string[] arrcookies;
string cookie = "PDDAccessToken=" + multiUserCookie.cookies;
arrcookies = cookie.Split(';');
int intEachCookPartsCount = arrcookies.Length;
for (int i = 0; i < intEachCookPartsCount; i++)
{
if (!string.IsNullOrEmpty(arrcookies[i]))
{
if (arrcookies[i].Contains("pdd_user_id="))
{
BaseClass.PddUid = arrcookies[i].Replace("pdd_user_id=", "");
}
int IndexofA = arrcookies[i].IndexOf('=');
bool status = cookieManager.SetCookie(BaseClass.PddMobileUrl, new Cookie
{
Name = arrcookies[i].Substring(0, IndexofA),
Value = arrcookies[i].Substring(IndexofA + 1),
});
cookieManager.SetCookie("https://mobile.yangkeduo.com", new Cookie
{
Name = arrcookies[i].Substring(0, IndexofA),
Value = arrcookies[i].Substring(IndexofA + 1),
});
cookieManager.SetCookie("https://mobile.pinduoduo.com", new Cookie
{
Name = arrcookies[i].Substring(0, IndexofA),
Value = arrcookies[i].Substring(IndexofA + 1),
});
cookieManager.SetCookie("https://yangkeduo.com", new Cookie
{
Name = arrcookies[i].Substring(0, IndexofA),
Value = arrcookies[i].Substring(IndexofA + 1),
});
cookieManager.SetCookie("https://pinduoduo.com", new Cookie
{
Name = arrcookies[i].Substring(0, IndexofA),
Value = arrcookies[i].Substring(IndexofA + 1),
});
}
}
if (!string.IsNullOrEmpty(dataJson))
{
var basePddUid = "";
Invoke(new Action(() =>
{
basePddUid = (MainForm.instance.cbpddBuyUser.SelectedItem as ComboboxItem).Value.ToString();
}));
var baseUser = PddBuyUser.buyUserCookies.FirstOrDefault(u => u.Value.uid == basePddUid);
string url = BaseClass.PddMobileUrl + "proxy/api/api/germany/consult_merchant_promotion?pdduid=" + basePddUid;
string htmljson = HttpHelper.Request_mobile_yangkeduo_com(url, _weburl, dataJson, true, baseUser.Value?.CookiesStr);
var jObj = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(htmljson);
var batch_list = jObj?["candidate_batch"]?["batch_list"];
//https://mobile.yangkeduo.com/proxy/api/api/promotion/take_merchant_coupon?pdduid=4191813477420
//{"batch_sn":"A0221VC-648799868143830548","merchant_tag":5,"anti_content":"","page_from":36}
if (batch_list != null)
{
foreach (var item in batch_list)
{
string batch_sn = item["batch_sn"].ToString();
dataJson = "{\"batch_sn\":\"" + batch_sn + "\",\"merchant_tag\":5,\"anti_content\":\"0aoanti_content\",\"page_from\":36}";
string ykddata = HttpHelper.Request_mobile_yangkeduo_com(BaseClass.PddMobileUrl + "proxy/api/api/promotion/take_merchant_coupon?pdduid=" + multiUserCookie.pdd_user_id, _weburl, dataJson, true, "PDDAccessToken=" + multiUserCookie.cookies + ";");
}
}
}
cefWebBrowser1.Load(_weburl);
}
#endregion
#region 拼多多批发匹配规格 地址
private void GetOrderPddPifa()
{
PifaSkuMatch();
AsycAutoMatchPddPifaAddress();
}
bool setpfsku = false;
// 匹配sku
private void PifaSkuMatch()
{
try
{
SkuLite = "";
string skuBefor = orderDetail.sku; //ordermodel.goods_spec;//Order.sku;
for (int i = 0; !string.IsNullOrEmpty(skuBefor) && i < SignWordBase.Length; i++)
{
skuBefor = skuBefor.Replace(SignWordBase[i].ToString(), "");
}
List<string> skulist = skuBefor.Split(new string[] { ",", ";" }, StringSplitOptions.RemoveEmptyEntries).ToList();
skulist = skulist.Select(s => s = s.Split(':').LastOrDefault()).ToList();
SkuLite = string.Join(";", skulist);
foreach (string item in skulist)
{
string clickjs = "document.querySelectorAll('div').forEach((item)=>{if(item.outerText=='" + item + "'){item.click();}})";
cefWebBrowser1.GetBrowser().MainFrame.ExecuteJavaScriptAsync(clickjs);
}
cefWebBrowser1.GetBrowser().MainFrame.ExecuteJavaScriptAsync("document.querySelector(\"i[data-testid='beast-core-icon-plus']\").click();");
}
catch (Exception)
{
}
}
private async void AsycAutoMatchPddPifaAddress()
{
await Task.Run(() =>
{
AutoMatchPddPifaAddress();
});
}
#endregion
#region 拼多多匹配规格 地址
string SalesVolume = "";
string ShopProductNum = "";
public static string SignWordBase = ".`~^*_| -#$%&?+";
public ProductCollectBase Pb;
public string Html;
public string productsku = "";
public List<SkuMapBase> Skumaps = new List<SkuMapBase>();
private void GetOrderPdd()
{
if (string.IsNullOrEmpty(BaseClass.PddUid))
{
if (goodsId > 0)
{
//SetMessage("没有登录,请先登录");
//Thread.Sleep(2000);
//Invoke(new delegateBool(mainNForm.loginPdd), isPinBuyer);
}
return;
}
if (goodsId == 0)
return;
if (detailHtml.Contains("已达购买上限"))
{
return;
}
if (detailHtml.Contains("商品已下架"))
{
return;
}
ProductDtailBase t = new ProductDtailBase();
t.FromId = goodsId;
PinduoduoProductCollect pro = new PinduoduoProductCollect(bName, t);
pro.TempHtml = detailHtml;
pro.Get();
var pb = pro.pb;
//取销量
SalesVolume = BaseRegex.GetStringJson(ref detailHtml, "salesTip");
ShopProductNum = BaseRegex.GetStringJson(ref detailHtml, "goodsNumDesc");
if (!string.IsNullOrEmpty(ShopProductNum))
{
ShopProductNum = ShopProductNum.Replace("商品数量:", "");
}
Invoke(new delegateView(LoadSales));
long sku = 0;
decimal minPrice = int.MaxValue;
string skuBefor = productsku;//Order.sku;
for (int i = 0; !string.IsNullOrEmpty(skuBefor) && i < SignWordBase.Length; i++)
{
skuBefor = skuBefor.Replace(SignWordBase[i].ToString(), "");
}
if (string.IsNullOrEmpty(skuBefor))
skuBefor = "";
skuBefor = skuBefor.Replace("(", "(").Replace(")", ")").ToLower();
decimal noGroupPrice = 0;
decimal buyPrice = 0;
string[] l = skuBefor.Split(':');
bool hadSku = false;
if (pb.SkuMaps.Count != 0)
{
Skumaps = pb.SkuMaps;
}
#region 拍单时匹配规格
for (int i = 0; i < pb.SkuMaps.Count; i++)
{
for (int j = 0; !string.IsNullOrEmpty(pb.SkuMaps[i].name) && j < SignWordBase.Length; j++)
{
pb.SkuMaps[i].name = pb.SkuMaps[i].name.Replace(SignWordBase[j].ToString(), "");
}
if (pb.SkuMaps[i].price < minPrice)
{
minPrice = pb.SkuMaps[i].price;
//sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
}
pb.SkuMaps[i].name = pb.SkuMaps[i].name.Replace("(", "(").Replace(")", ")").ToLower();
pb.SkuMaps[i].name = pb.SkuMaps[i].name.Replace("\"", "").Replace(";", "");
bool had = false;
//先精准匹配在模糊匹配
bool isMatch0 = false;//匹配标识1
bool isMatch1 = false;//匹配标识2 匹配标识都为true时,则精准匹配 匹配成功,否则进行模糊匹配
var skuArr = pb.SkuMaps[i].name.Split(';');
if (skuArr.Length > 0)
{
for (int k = 0; k < skuArr.Length; k++)
{
string skus = skuArr[k];
if (string.IsNullOrEmpty(skus))
{
continue;
}
string[] skuL = skus.Split(':');
if (skuL.Length == 2 && l.Length == 2)
{
if (skuL[0] == l[0])
{
isMatch0 = true;
}
if (skuL[1] == l[1].Remove(l[1].Length - 1, 1))
{
isMatch1 = true;
}
}
}
if (isMatch0 && isMatch1)//精准匹配 匹配成功
{
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
noGroupPrice = pb.SkuMaps[i].no_group_price;
//SkuImg = pb.SkuMaps[i].prop_image;
hadSku = true;
break;
}
}
////精准匹配未匹配成功则进行模糊匹配
//if (!isMatch0 && !isMatch1)
//{
// if (l.Length == 1 && !string.IsNullOrEmpty(skuBefor) && pb.SkuMaps[i].name.Contains(":" + skuBefor) || l.Length == 2 && !string.IsNullOrEmpty(skuBefor) && pb.SkuMaps[i].name.Contains(":" + l[0]) && pb.SkuMaps[i].name.Contains(":" + l[1]))
// {
// sku = pb.SkuMaps[i].id;
// buyPrice = pb.SkuMaps[i].price;
// noGroupPrice = pb.SkuMaps[i].no_group_price;
// //SkuImg = pb.SkuMaps[i].pinduoduo_image;
// //SkuImg = pb.SkuMaps[i].prop_image;
// hadSku = true;
// break;
// }
//}
if (pb.SkuMaps.Count == 1 && pb.SkuMaps[0].name == "")//没有规格
{
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
noGroupPrice = pb.SkuMaps[i].no_group_price;
//SkuImg = pb.SkuMaps[i].prop_image;
hadSku = true;
break;
}
}
#endregion
Pb = pb;
Html = detailHtml;
Invoke(new delegateView(SetSku));
DelPddAddress(); // 获取所有地址并删除
AsycAutoMatchPddAddress(); // 导入当前买家地址
Thread.Sleep(1000);
if (sku > 0)
{
PutToBuy(sku, noGroupPrice, buyPrice);
}
else
{
}
MethodInvoker invoker = () =>
{
tbproductjj.Text = buyPrice.ToString();
textBoxXProfit.Text = ((Convert.ToDecimal(textBoxXGoodPrice.Text) - buyPrice) * Convert.ToInt32(buyCountTextBoxX.Text)).ToString();//本单利润
};
try
{
Invoke(invoker);
}
catch (Exception)
{
}
}
public void PutToBuy(long sku, decimal noGroupPrice, decimal buyPrice)
{
var pb = Pb;
string html = Html.Replace("\\\"", "\"");
long groupOrderId = BaseRegex.GetLongJson(ref html, "groupOrderID");
var m = BaseRegex.GetMatchRegex(ref html, @"""groupID"":([\d]+)");
string groupId = "0";
groupId = m[1].Groups[1].Value;
string url = "";
if (groupOrderId > 0)//如果有拼单则拼单没有则发起拼单
{
if (Html.Contains(">插队拼单<"))//去插队拍单
{
url = BaseClass.PddMobileUrl + "order_checkout.html?sku_id=" + sku + "&group_id=" + groupId + "&goods_id=" + goodsId
+ "&goods_number=" + buyCountTextBoxX.Text + "&page_from=101&group_order_id=" + groupOrderId + "&is_history_group=1&refer_page_element=local_group&source_channel=1&refer_page_name=goods_detail&refer_page_id=10014_1551245727564_aVHD85yY7M&refer_page_sn=10014";
}
else//去拼单
{
url = BaseClass.PddMobileUrlx + "order_checkout.html?sku_id=" + sku + "&group_id=" + groupId + "&goods_id=" + goodsId
+ "&goods_number=" + buyCountTextBoxX.Text + "&page_from=0&group_order_id=" + groupOrderId + "&refer_page_name=goods_detail&refer_page_element=local_group&source_channel=1&refer_page_id=10014_1541588923442_zoqqqvwXER&refer_page_sn=10014";
}
}
else//发起拼单
{
url = BaseClass.PddMobileUrlx + "order_checkout.html?sku_id=" + sku + "&group_id=" + groupId + "&goods_id=" + goodsId
+ "&goods_number=" + buyCountTextBoxX.Text + "&page_from=0&refer_page_name=goods_detail&refer_page_element=open_btn&source_channel=0&refer_page_id=10014_1541588885673_tEooDdiR3n&refer_page_sn=10014";
}
Thread.Sleep(500);
//if (!string.IsNullOrEmpty(BaseClass.duoduojinbaoURL))
//{
// string duoduoid = BaseRegex.GetMatchRegexString(ref BaseClass.duoduojinbaoURL, "goods_id=([\\s\\S]+?)&");
// webUrl = BaseClass.duoduojinbaoURL.Replace(duoduoid, goodsId.ToString())+ "&sku_id=" + sku;
//}
//else
//{
webUrl = url;
//}
try
{
Invoke(new delegateView(SetUrl));
}
catch (Exception)
{
}
}
private void SetUrl()
{
try
{
cefWebBrowser1.GetBrowser().MainFrame.ExecuteJavaScriptAsync("window.location.href='" + webUrl + "';", "", 1);
}
catch
{
}
//cefWebBrowser1.Load(WebUrl);
}
Dictionary<string, string> skuIdSpec = new Dictionary<string, string>();
List<SkuDetail> skuList = new List<SkuDetail>();
private async void AsycAutoMatchPddAddress()
{
await Task.Run(() =>
{
AutoMatchPddAddress();
});
}
public void SetSku()
{
combSkuList.Items.Clear();
if (Skumaps.Count > 0)
{
for (int i = 0; i < Skumaps.Count; i++)
{
combSkuList.Items.Add(Skumaps[i].name);
}
}
else
{
skuIdSpec.Clear();
for (int i = 0; i < skuList.Count; i++)
{
var item = skuList[i];
string skuSpec = string.Empty;
for (int j = 0; j < item.skuSpecs.Count; j++)
{
if (j + 1 == item.skuSpecs.Count)
{
skuSpec += item.skuSpecs[j].spec_value;
}
else
{
skuSpec += item.skuSpecs[j].spec_value + ",";
}
}
if (skuIdSpec.ContainsKey(item.sku_id))
{
continue;
}
skuIdSpec.Add(item.sku_id, skuSpec);
combSkuList.Items.Add(skuSpec);
}
}
}
public bool AutoMatchPddAddress()
{
string buyerCookie = "";
if (GlobalConfig.SystemSettings.IsUseMultiBuyer)
{
BaseClass.PddUid = multiUserCookie.pdd_user_id;
buyerCookie = "PDDAccessToken=" + multiUserCookie.cookies + ";";
}
else
{
buyerCookie = GetPostTaobaoHtml.GetCookies(BaseClass.PddMobileUrl, "");
}
bool flag = false;
string name = bName;
string address = Address.Replace("\n", "");
string province = "";
string provinceId = "";
string city = "";
string cityId = "";
string district = "";
string districtId = "";
if (string.IsNullOrEmpty(address_zdy) || string.IsNullOrEmpty(mobile_zdy) || string.IsNullOrEmpty(mobile_zdy))
{
address_zdy = address;
mobile_zdy = Mobile;
name_zdy = name;
}
else
{
address_zdy = addressTextBoxX.Text;
mobile_zdy = mobileTextBoxX.Text;
name_zdy = userNameTextBoxX.Text;
}
// 匹配地址
MatchAddress(ref address, ref province, ref provinceId, ref city, ref cityId, ref district, ref districtId);
if (address.Length > 3 && !address.Contains("95278"))
{
int c = Randomx.GetId(1, address.Length - 1);
address = address.Substring(0, c) + " " + address.Substring(c);
}
string data = "{\"name\":\"" + name_zdy + "\",\"mobile\":\"" + mobile_zdy + "\",\"province_id\":" + provinceId +
",\"city_id\":" + cityId + ",\"district_id\":" + districtId + ",\"address\":\"" + address_zdy +
"\",\"is_default\":\"1\"}";
//url = "http://apiv4.yangkeduo.com/address?pdduid=" + PddUid;
//url = "https://api.pinduoduo.com/api/origenes/address?pdduid=" + PddUid;
string url = BaseClass.PddMobileUrl + "proxy/api/api/origenes/address?pdduid=" + BaseClass.PddUid;//1635501584
string refere = "https://yangkeduo.com";
string html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, false, buyerCookie);
string address_id = BaseRegex.GetStringJson(ref html, "address_id");//地址ID
string default_id = BaseRegex.GetStringJson(ref html, "address_id");//地址ID
if (!(!string.IsNullOrEmpty(address_id) && address_id == default_id))
{
//url = "https://api.pinduoduo.com/api/origenes/address?pdduid=" + PddUid;
url = BaseClass.PddMobileUrl + "proxy/api/api/origenes/address?pdduid=" + BaseClass.PddUid;
html = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data, false, buyerCookie);
}
address_id = BaseRegex.GetStringJson(ref html, "address_id");//地址ID
default_id = BaseRegex.GetStringJson(ref html, "default_id");//地址ID
if (!(!string.IsNullOrEmpty(address_id) && address_id == default_id))
{
NaiBa.Util.Helper.LogHelper.WriteWithTime("提交地址失败:" + html);
BaseMsgForm.ShowInfo("提交地址失败,请检查地址和网络情况\r\n\r\n" /*+ Express.address*/, "提示");
return false;
}
//判断提交的地址是否和界面上地址一致
//url = "http://apiv4.yangkeduo.com/addresses?pdduid=" + PddUid;
//url = "https://api.pinduoduo.com/api/origenes/address/" + address_id + "?pdduid=" + PddUid;
url = BaseClass.PddMobileUrlx + "proxy/api/api/origenes/address/" + address_id + "?pdduid=" + BaseClass.PddUid;
refere = BaseClass.PddMobileUrl;
html = GetPostTaobaoHtml.UploadTaobao(url, refere, true, buyerCookie);
string pddprovince = BaseRegex.GetStringJson(ref html, "province");//省
string pddcity = BaseRegex.GetStringJson(ref html, "city");//市
string pdddistrict = BaseRegex.GetStringJson(ref html, "district");//地区
string pddaddress = BaseRegex.GetStringJson(ref html, "address");//剩余地址
try
{
//flag = MatchAddress(Address, pddprovince, pddcity, pdddistrict, pddaddress);//匹配地址
//if (!flag)
//{
// BaseMsgForm.ShowInfo("检查地址发现可能有错误\r\n可继续拍单,手动修改为正确地址\r\n", "提示");
//}
}
catch (Exception)
{
//throw;
}
BaseMsgForm.ShowInfo("已提交地址\r\n\r\n" /*+ Express.address*/, "提示");
return flag;
}
/// <summary>
/// 匹配地址信息
/// </summary>
/// <param name="address"></param>
/// <param name="province"></param>
/// <param name="provinceId"></param>
/// <param name="city"></param>
/// <param name="cityId"></param>
/// <param name="district"></param>
/// <param name="districtId"></param>
public static void MatchAddress(ref string address,
ref string province, ref string provinceId, ref string city, ref string cityId, ref string district, ref string districtId)
{
foreach (KeyValuePair<string, ProvinceBase> p in CollectionClass.Province)
{
bool had = p.Key.Length >= 2 && address.Length >= 3 &&
address.Substring(0, 3).Contains(p.Key.Substring(0, 2));
had = had ||
address.Length >= p.Key.Length + 2 && address.Substring(0, p.Key.Length + 2).Contains(p.Key);
if (!had)
continue;
province = p.Key;
provinceId = p.Value.id;
address = address.Substring(province.Length);
if (address.IndexOf("自治区") > -1 & address.IndexOf("自治区") < 5)
address = address.Substring(address.IndexOf("自治区") + 3);
if (address.Contains(province) && province != "北京市" && province != "上海市" && province != "天津市" && province != "重庆市")//去掉地址后面多余的省份(直辖市除外)
{
address = address.Replace(province, "");
}
foreach (KeyValuePair<string, ProvinceBase> pp in p.Value.city)
{
bool ok = pp.Key.Length >= 2 && address.Length >= 3 && address.Substring(0, 3).Contains(pp.Key.Substring(0, 2));
if (!ok)
ok = address.Length >= pp.Key.Length + 3 && address.Substring(0, pp.Key.Length + 3).Contains(pp.Key);
if (!ok)
ok = address.StartsWith("市辖区") && (province == "北京市" || province == "上海市" || province == "天津市" || province == "重庆市") && pp.Key == province;
if (!ok)
continue;
city = pp.Key;
cityId = pp.Value.id;
address = address.Substring(city.Length > 3 ? 3 : city.Length);
if (address.Contains(city))//去掉地址后面多余的城市
{
address = address.Replace(city, "");
}
foreach (var ppp in pp.Value.city)
{
if (!address.Contains(ppp.Key) && !ppp.Key.Contains(address))
continue;
district = ppp.Key;
districtId = ppp.Value.id;
address = address.Substring(address.IndexOf(district) + district.Length);
//if (address.Contains(district))//去掉地址后面多余的县、区
//{
// address = address.Replace(district, "");
//}
break;
}
if (string.IsNullOrEmpty(districtId))
{
foreach (var ppp in pp.Value.city)
{
if (ppp.Key.Length < 2)
continue;
string k = ppp.Key.Substring(0, 2);
if (!address.Contains(k))
continue;
district = ppp.Key;
districtId = ppp.Value.id;
if (address.LastIndexOf(k) + district.Length > address.Length)
address = address.Substring(address.LastIndexOf(k) + k.Length);
else
address = address.Substring(address.LastIndexOf(k) + district.Length);
break;
}
}
//如果地址没有对应的区,则选择其他区
if (string.IsNullOrEmpty(districtId))
{
foreach (var ppp in pp.Value.city)
{
if (ppp.Key.Length < 2)
continue;
string k = ppp.Key;
if ("其他区" != k)
continue;
district = ppp.Key;
districtId = ppp.Value.id;
break;
}
}
address = address.Trim();
break;
}
break;
}
}
private void AutoMatchPddPifaAddress()
{
bool flag = false;
string name = bName;
string address = Address.Replace("\n", "");
string province = "";
string provinceId = "";
string city = "";
string cityId = "";
string district = "";
string districtId = "";
if (string.IsNullOrEmpty(address_zdy) || string.IsNullOrEmpty(mobile_zdy) || string.IsNullOrEmpty(mobile_zdy))
{
address_zdy = address;
mobile_zdy = Mobile;
name_zdy = name;
}
else
{
address_zdy = addressTextBoxX.Text;
mobile_zdy = mobileTextBoxX.Text;
name_zdy = userNameTextBoxX.Text;
}
// 匹配地址
MatchAddress(ref address, ref province, ref provinceId, ref city, ref cityId, ref district, ref districtId);
if (string.IsNullOrEmpty(districtId))
{
BaseMsgForm.ShowInfo("自动填写地址可能未成功,请检查\r\n如需要请手动修改正确\r\n\r\n ", "提示");
return;
}
Task.Run(() =>
{
//地址列表
// https://pifa.pinduoduo.com/api/jacob/tob/addr/query/list
//{"scene_id":"80002"}
// 删除地址
//https://pifa.pinduoduo.com/api/jacob/tob/addr/delete
//{ "address_id":"29126614499","scene_id":"80002"}
//设为默认
//https://pifa.pinduoduo.com/api/jacob/tob/addr/set_default
//{ "address_id":"27072316452","scene_id":"80002"}
string jsondata = "";
string htmldata = "";
jsondata = "{\"scene_id\":\"80002\"}";
htmldata = HttpHelper.Request_pifa_pinduoduo_com("https://pifa.pinduoduo.com/api/jacob/tob/addr/query/list", "https://pifa.pinduoduo.com", jsondata, pddPifaCookies);
if (htmldata.Contains("\"success\":true"))
{
var jObj = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(htmldata);
var addr_list = jObj?["result"]?["addr_list"];
if (addr_list.Count() > 2)
{
foreach (var item in addr_list)
{
if (item["is_default"].ToString() != "1")
{
jsondata = "{ \"address_id\":\"" + item["address_id"] + "\",\"scene_id\":\"80002\"}";
HttpHelper.Request_pifa_pinduoduo_com("https://pifa.pinduoduo.com/api/jacob/tob/addr/delete", "https://pifa.pinduoduo.com", jsondata, pddPifaCookies);
}
}
}
}
else
{
BaseMsgForm.ShowInfo("自动填写地址可能未成功,请检查\r\n如需要请手动修改正确\r\n\r\n ", "提示");
}
jsondata = "{\"address\":\"" + address.Replace("\n", "").Replace("\r", "").Replace("\t", "").Replace("\"", "”").Replace(",", ",") + "" + "\",\"mobile\":\"" + mobile_zdy + "\",\"name\":\"" + name_zdy + "\",\"province_id\":" + provinceId + ",\"city_id\":" + cityId + ",\"district_id\":" + districtId + ",\"scene_id\":\"80002\"}";
htmldata = HttpHelper.Request_pifa_pinduoduo_com("https://pifa.pinduoduo.com/api/jacob/tob/addr/create", "https://pifa.pinduoduo.com", jsondata, pddPifaCookies);
if (htmldata.Contains("\"success\":true"))
{
jsondata = "{ \"address_id\":\"" + BaseRegex.GetStringJson(ref htmldata, "address_id") + "\",\"scene_id\":\"80002\"}";
htmldata = HttpHelper.Request_pifa_pinduoduo_com("https://pifa.pinduoduo.com/api/jacob/tob/addr/set_default", "https://pifa.pinduoduo.com", jsondata, pddPifaCookies);
if (!htmldata.Contains("\"success\":true"))
BaseMsgForm.ShowInfo("自动填写地址可能未成功,请检查\r\n如需要请手动修改正确\r\n\r\n ", "提示");
}
else
{
BaseMsgForm.ShowInfo("自动填写地址可能未成功,请检查\r\n如需要请手动修改正确\r\n\r\n ", "提示");
}
});
}
#endregion
#region 淘宝获取上家sku,并与之匹配
private void GetTbOrder()
{
#region
//string wwName = GetWwName(Id.ToString());
#endregion
#region 设置sku图
//if (!string.IsNullOrEmpty(orderDetail.sku_img))
//{
// SkuImg = orderDetail.sku_img;
//}
//else
//{
// SkuImg = PayGroupOrder.GetSkuImg(Order.product_id, Order.sku);
//}
//if (!string.IsNullOrEmpty(SkuImg))
//{
// SetSkuImg();
//}
#endregion
AutoMatchTbAddress();
//添加地址后,提交订单
//AddTaoBaoAddress();
//if (Order.buy_type == 2)
//{
// Mobile = Order.buy_mobile;
//}
//if (string.IsNullOrEmpty(PddUid))
//{
// if (goodsId > 0)
// {
// //SetMessage("没有登录,请先登录");
// Thread.Sleep(2000);
// Invoke(new delegateClick(payOrderForm.LoginTbBuyerButton_Click), null, null);
// }
// return;
//}
if (goodsId == 0)
return;
//if (BaseClass.PhonePay)
//{
// return;
//}
string url = "https://item.taobao.com/item.htm?id=" + goodsId;
string refere = "";
//string html = GetPostTaobaoHtml.UploadTaobao(url, refere, true);
ProductCollectBase t = new ProductCollectBase();
t.from_id = goodsId;
TaobaoMobileCollect mob = new TaobaoMobileCollect(t);
mob.Get();
var pb = mob.Product;
long sku = 0;
decimal minPrice = int.MaxValue;
//Order.sku = "颜色分类:1【200只】";
string skuBefor = orderDetail.sku;
for (int i = 0; !string.IsNullOrEmpty(skuBefor) && i < SignWordBase.Length; i++)
{
skuBefor = skuBefor.Replace(SignWordBase[i].ToString(), "");
}
if (string.IsNullOrEmpty(skuBefor))
skuBefor = "";
skuBefor = skuBefor.Replace("(", "(").Replace(")", ")").ToLower();
decimal noGroupPrice = 0;
decimal buyPrice = 0;
bool hadSku = false;
//Skumaps.Clear();
string[] tempSkuBeforList = skuBefor.Split(';');//处理混乱的sku
string[] skul = skuBefor.Split(':');
for (int i = 0; i < pb.SkuMaps.Count; i++)
{
for (int j = 0; !string.IsNullOrEmpty(pb.SkuMaps[i].name) && j < SignWordBase.Length; j++)
{
pb.SkuMaps[i].name = pb.SkuMaps[i].name.Replace(SignWordBase[j].ToString(), "");
}
Skumaps.Add(pb.SkuMaps[i]);
//if (pb.SkuMaps[i].price < minPrice)
//{
// minPrice = pb.SkuMaps[i].price;
// sku = pb.SkuMaps[i].id;
// buyPrice = pb.SkuMaps[i].price;
//}
pb.SkuMaps[i].name = pb.SkuMaps[i].name.Replace("(", "(").Replace(")", ")").ToLower();
pb.SkuMaps[i].name = pb.SkuMaps[i].name.Replace("\"", "");//.Replace(";", "");
#region 精准匹配
var tempOrderSkuArr = skuBefor.Split(';');
var tempskuArrx = pb.SkuMaps[i].name.Split(';');//多个规格;例如:颜色;尺寸
if (tempOrderSkuArr.Length == 2 && tempskuArrx.Length == 2)
{
if (tempskuArrx[0].Contains(tempOrderSkuArr[0]) && tempskuArrx[1].Contains(tempOrderSkuArr[1]))
{
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
noGroupPrice = pb.SkuMaps[i].no_group_price;
//SkuImg = pb.SkuMaps[i].pinduoduo_image;
//SkuImg = pb.SkuMaps[i].prop_image;
hadSku = true;
break;
}
}
#endregion
pb.SkuMaps[i].name = pb.SkuMaps[i].name.Replace(";", "");
//先精准匹配在模糊匹配
#region 先精准匹配在模糊匹配
bool isMatch0 = true;//匹配标识1,默认匹配成功
bool isMatch1 = false;//匹配标识2 匹配标识都为true时,则精准匹配 匹配成功,否则进行模糊匹配
var skuArrx = pb.SkuMaps[i].name.Split(';');//多个规格;例如:颜色;尺寸
if (skuArrx.Length > 0)
{
for (int k = 0; k < skuArrx.Length; k++)
{
string skus = skuArrx[k];
if (string.IsNullOrEmpty(skus))
{
continue;
}
string[] skuL = skus.Split(':');
if (skuL.Length == 2 && skul.Length == 2)
{
if (skuL[1] == skul[0])
{
isMatch0 = true;
}
if (skuL[1] == skul[1])
{
isMatch1 = true;
}
}
}
if (isMatch0 && isMatch1)//精准匹配 匹配成功
{
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
noGroupPrice = pb.SkuMaps[i].no_group_price;
//SkuImg = pb.SkuMaps[i].pinduoduo_image;
//SkuImg = pb.SkuMaps[i].prop_image;
hadSku = true;
break;
}
}
//单个规格例如只有颜色--英文冒号分割
var skuAr = pb.SkuMaps[i].name.Split(':');//英文冒号分割
if (skuAr.Length > 0)
{
if (skuAr.Length == skul.Length)
{
isMatch0 = true;//匹配标识1,默认匹配成功
for (int k = 0; k < skuAr.Length; k++)
{
if (skuAr[k] != skul[k])
{
isMatch0 = false;
break;
}
}
if (isMatch0)//精准匹配 匹配成功
{
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
noGroupPrice = pb.SkuMaps[i].no_group_price;
//SkuImg = pb.SkuMaps[i].pinduoduo_image;
hadSku = true;
break;
}
}
}
#endregion
if ((!string.IsNullOrEmpty(pb.SkuMaps[i].name)) && (!string.IsNullOrEmpty(skuBefor)) && (skuBefor.Contains(pb.SkuMaps[i].name) || pb.SkuMaps[i].name.Contains(skuBefor)))
{
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
noGroupPrice = pb.SkuMaps[i].no_group_price;
hadSku = true;
break;
}
string[] l = pb.SkuMaps[i].name.Split(';');//分号分割
if (l.Length == 1)
{
if ((!string.IsNullOrEmpty(pb.SkuMaps[i].name)) && (!string.IsNullOrEmpty(skuBefor)) && (skuBefor.Contains(l[0]) && l[0].Contains(skuBefor)))
{
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
noGroupPrice = pb.SkuMaps[i].no_group_price;
hadSku = true;
break;
}
}
if (l.Length > 1)
{
if ((!string.IsNullOrEmpty(pb.SkuMaps[i].name)) && (!string.IsNullOrEmpty(skuBefor)) && (skuBefor.Contains(l[0]) && skuBefor.Contains(l[1])))
{
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
noGroupPrice = pb.SkuMaps[i].no_group_price;
hadSku = true;
break;
}
}
string[] skuArr = pb.SkuMaps[i].name.Split(':');//冒号分割
if (skuArr.Length == 1)
{
if ((!string.IsNullOrEmpty(pb.SkuMaps[i].name)) && (!string.IsNullOrEmpty(skuBefor)) && (skuBefor.Contains(skuArr[0]) || skuArr[0].Contains(skuBefor)))
{
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
noGroupPrice = pb.SkuMaps[i].no_group_price;
hadSku = true;
break;
}
}
if (skuArr.Length > 1)
{
if (skuArr.Length == 3)
{
if ((!string.IsNullOrEmpty(pb.SkuMaps[i].name)) && (!string.IsNullOrEmpty(skuBefor)) && (skuBefor.Contains(skuArr[0]) || skuBefor.Contains(skuArr[1])) && skuBefor.Contains(skuArr[2]))
{
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
noGroupPrice = pb.SkuMaps[i].no_group_price;
hadSku = true;
break;
}
}
else
{
if ((!string.IsNullOrEmpty(pb.SkuMaps[i].name)) && (!string.IsNullOrEmpty(skuBefor)) && (skuBefor.Contains(skuArr[0]) && skuBefor.Contains(skuArr[1])))
{
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
noGroupPrice = pb.SkuMaps[i].no_group_price;
hadSku = true;
break;
}
}
}
if (tempSkuBeforList.Length == 1)
{
if ((!string.IsNullOrEmpty(pb.SkuMaps[i].name)) && (!string.IsNullOrEmpty(skuBefor)) && (pb.SkuMaps[i].name.Contains(tempSkuBeforList[0]) || tempSkuBeforList[0].Contains(pb.SkuMaps[i].name)))
{
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
noGroupPrice = pb.SkuMaps[i].no_group_price;
hadSku = true;
break;
}
}
if (tempSkuBeforList.Length > 1)
{
if ((!string.IsNullOrEmpty(pb.SkuMaps[i].name)) && (!string.IsNullOrEmpty(skuBefor)) && (pb.SkuMaps[i].name.Contains(tempSkuBeforList[0]) && pb.SkuMaps[i].name.Contains(tempSkuBeforList[1])))
{
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
noGroupPrice = pb.SkuMaps[i].no_group_price;
hadSku = true;
break;
}
}
}
Pb = pb;
//orderDetail.sku = skuBefor;
//if (!hadSku && Order.buy_type == 2 && !string.IsNullOrEmpty(orderDetail.sku) || Order.buy_type == 2 && string.IsNullOrEmpty(Order.sku) && pb.SkuMaps.Count > 1)
//{
// if (InvokeRequired)
// {
// Invoke(new Action(() =>
// {
// BaseMsgForm.ShowInfo("未匹配成功sku,请手动下单", "提示");
// }));
// }
// else
// {
// BaseMsgForm.ShowInfo("未匹配成功sku,请手动下单", "提示");
// }
// if (!string.IsNullOrEmpty(tkRateUrl))
// {
// cefWebBrowser1.Load(tkRateUrl);
// }
// else
// {
// cefWebBrowser1.Load(WebUrl);
// }
// return;
//}
//Invoke(new delegateView(SetSku));
try
{
TbPutToBuy(sku, noGroupPrice, buyPrice);
}
catch
{
}
}
#endregion
#region 修改淘宝地址
string address_zdy = "", mobile_zdy = "", name_zdy = "";
public void AutoMatchTbAddress()
{
if (string.IsNullOrEmpty(address_zdy) || string.IsNullOrEmpty(mobile_zdy) || string.IsNullOrEmpty(mobile_zdy))
{
address_zdy = orderDetail.address;
mobile_zdy = orderDetail.mobile;
name_zdy = orderDetail.name;
}
else
{
address_zdy = addressTextBoxX.Text;
mobile_zdy = mobileTextBoxX.Text;
name_zdy = userNameTextBoxX.Text;
}
string url = "";
string htmlxt = "";
string data = "";
long time;
data = "{\"isSec\":0}";
string sign = GetSign("", data, out time);
//url = "https://api.m.taobao.com/h5/mtop.user.getusersimple/1.0/?appKey=12574478&t=" + time + "&sign=" + sign +
//"&api=mtop.user.getUserSimple&v=1.0&H5Request=true&type=jsonp&dataType=jsonp&callback=mtopjsonp1&data=" + GetHtml.UrlEncodeUtf8(data);
url = "https://h5api.m.taobao.com/h5/mtop.cainiao.address.ua.global.area.list/1.0/?appKey=12574478&t=" + time + "&sign=" + sign +
"&api=mtop.user.getUserSimple&v=1.0&H5Request=true&type=jsonp&dataType=jsonp&callback=mtopjsonp1&data=" + GetHtml.UrlEncodeUtf8(data);
//获取用户的所有地址编号
htmlxt = GetPostTaobaoHtml.UploadTaobao(url, url, true);
if (string.IsNullOrEmpty(htmlxt) || !htmlxt.Contains("_m_h5_tk"))//没有登录获取token获取失败
{
return;
}
string h5Tkt = BaseRegex.GetMatchRegexString(ref htmlxt, "_m_h5_tk=([^_]+?)_");
string addCookies = BaseRegex.GetMatchRegexString(ref htmlxt, "(_m_h5_tk=[^;]+?;)") + " " +
BaseRegex.GetMatchRegexString(ref htmlxt, "(_m_h5_tk_enc=[^;]+?;)");
string cookies = GetPostTaobaoHtml.GetCookies(url, "");
cookies = BaseRegex.Relpace(cookies, "(_m_h5_tk=[^;]+?;)", "");
cookies = BaseRegex.Relpace(cookies, "(_m_h5_tk_enc=[^;]+?;)", "");
cookies += addCookies;
data = "{}";
sign = GetSignx(h5Tkt, data, out time);
url = "https://h5api.m.taobao.com/h5/mtop.taobao.mbis.getdeliveraddrlist/1.0/?jsv=2.5.1&appKey=27769795&t=" + time + "&sign=" + sign + "&api=mtop.taobao.mbis.getDeliverAddrList&v=1.0&ecode=1&needLogin=true&dataType=jsonp&type=jsonp&callback=mtopjsonp4&data=%7B%7D";
//获取到所有地址
htmlxt = GetPostTaobaoHtml.UploadTaobaoPost(url, url, true, "", cookies);
htmlxt = htmlxt.Replace("\\", "");
string addrHtml = htmlxt;
string pattern = @"""deliverId"":""([\d]+?)""";
var mx = BaseRegex.GetMatchRegex(htmlxt, pattern);
bool isUpdAddress = true;
if (mx.Count == 0)
{
pattern = "\"deliverId\":([\\d]+?),";
mx = BaseRegex.GetMatchRegex(htmlxt, pattern);
}
if (mx.Count == 0)
{
isUpdAddress = false;
//AddTaoBaoAddress();
//return;
}
List<string> Ids = new List<string>();
for (int i = 0; mx != null && i < mx.Count; i++)
{
string id = mx[i].Groups[1].Value;
if (!Ids.Contains(id))
{
Ids.Add(id);
}
}
#region 匹配地址--获取省市区编码
string addressstr = address_zdy;
#region 匹配省市区镇
string patternProv = @"([\w]+?省|[\w]+?自治区)";
var mc = BaseRegex.GetMatchRegex(addressstr, patternProv);
string prov = string.Empty;
if (mc != null && mc.Count > 0)
{
prov = mc[0].Groups[1].ToString();
}
else if (addressstr.Contains("上海") | addressstr.Contains("北京") | addressstr.Contains("天津") | addressstr.Contains("重庆"))
{
patternProv = @"(上海|北京|天津|重庆)";
mc = BaseRegex.GetMatchRegex(addressstr, patternProv);
prov = mc[0].Groups[1].ToString();
}
if (string.IsNullOrEmpty(prov)) return;
addressstr = addressstr.Substring(addressstr.IndexOf(prov) + prov.Length);
//匹配市
string city = "";
if (prov == "上海" || prov == "北京" || prov == "天津" || prov == "重庆")
{
city = prov + "市";
}
//string patternCity = @"(?<city>[^市|^省|^县|^区]+?[市])";
string patternCity = @"([^市|^省|^自治区|^县|^区]+?(市|自治州))";
//mc = Regex.Matches(addressstr, patternCity, RegexOptions.IgnoreCase);
mc = BaseRegex.GetMatchRegex(addressstr, patternCity);
if (string.IsNullOrEmpty(city) && mc.Count > 0)
{
city = mc[0].Groups[1].ToString();
}
if (string.IsNullOrEmpty(city) && !string.IsNullOrEmpty(address_zdy))
{
string temoAddress = address_zdy;
city = BaseRegex.GetMatchRegexString(ref temoAddress, "省([\\W\\w]+?市)");
}
if (!string.IsNullOrEmpty(city))
{
addressstr = addressstr.Substring(addressstr.IndexOf(city) + city.Length);
if (addressstr.StartsWith("市"))
addressstr = addressstr.Substring("市".Length);
if (addressstr.StartsWith("辖区"))
addressstr = addressstr.Substring("辖区".Length);
}
if (string.IsNullOrEmpty(city))
{
if (InvokeRequired)
{
Invoke(new Action(() =>
{
BaseMsgForm.ShowInfo("城市识别失败,请手动填写地址", "提示");
}));
}
else
{
BaseMsgForm.ShowInfo("城市识别失败,请手动填写地址", "提示");
}
return;
}
//匹配区
string patternArea = @"([^县|^区|^省|^自治区|^自治县]+?[市|县|区|自治县])";
//mc = Regex.Matches(addressstr, patternArea, RegexOptions.IgnoreCase);
mc = BaseRegex.GetMatchRegex(addressstr, patternArea);
string area = "";
if (mc.Count > 0)
{
area = mc[0].Groups[1].ToString();
}
addressstr = addressstr.Substring(addressstr.IndexOf(area) + area.Length);
//匹配镇
//string patternTown = @"([^镇|^省|^自治区|^市|^县|^区]+?(镇|路|街道))";
string patternTown = @"([^镇|^乡|^省|^自治区|^市|^县|^区|^团]+?(镇|乡|路|街道|团))";
//mc = Regex.Matches(addressstr, patternTown, RegexOptions.IgnoreCase);
mc = BaseRegex.GetMatchRegex(addressstr, patternTown);
string town = "";
if (mc.Count > 0)
{
town = mc[0].Groups[1].ToString();
}
#endregion
//获取省、市、县名称
if (prov.Contains("自治区"))
{
if (prov.Contains("内蒙古"))
{
prov = "内蒙古";
}
else
{
prov = prov.Substring(0, 2);
}
}
if (prov.Contains("省"))
{
prov = prov.Remove(prov.Length - 1, 1);
}
//city = city == "" ? "" : city.Remove(city.Length - 1, 1);
//area = area == "" ? "" : area.Remove(area.Length - 1, 1);
//定义省、市、县、区编号
int provid = 0;
int cityid = 0;
int areaid = 0;
//获取省的编号
foreach (AddressBase item in AddressSetIni.AddressList)
{
if (item.Name.Equals(prov))
{
provid = item.Id;
break;
}
}
if (provid == 0)
{
if (InvokeRequired)
{
Invoke(new Action(() =>
{
BaseMsgForm.ShowInfo("城市识别失败,请手动填写地址", "提示");
}));
}
else
{
BaseMsgForm.ShowInfo("城市识别失败,请手动填写地址", "提示");
}
return;
}
//获取市的编号
var citys = AddressSetIni.Addresses[provid];
AddressBase cityAddress = citys.Find(c => c != null && city.Contains(c.Name));
if (cityAddress != null)
{
cityid = cityAddress.Id;
}
if (citys.Count > 0 && (city.Equals("上海") || city.Equals("北京") || city.Equals("天津") || city.Equals("重庆")))
{
cityid = citys[0].Id;
}
if (cityid == 0)
{
if (InvokeRequired)
{
Invoke(new Action(() =>
{
BaseMsgForm.ShowInfo("城市识别失败,请手动填写地址", "提示");
}));
}
else
{
BaseMsgForm.ShowInfo("城市识别失败,请手动填写地址", "提示");
}
return;
}
//获取区的编号
var areas = AddressSetIni.Addresses[cityid];
AddressBase areaAddress = areas.Find(a => a != null && area.Contains(a.Name));
if (areaAddress == null)
{
areaAddress = areas.Find(a => a != null && a.Name.Contains(area));
}
if (areaAddress == null)
{
areaAddress = areas.Find(a => a != null && area.Contains(a.Name));
}
if (areaAddress != null) areaid = areaAddress.Id;
List<KeyValueBase> towns = new List<KeyValueBase>();
//if (!BaseClass.PhonePay)
//{
if (areaid == 0)
{
BaseMsgForm.ShowError("地址添加失败,在淘宝找不到对应的区,请手动添加", "提示");
return;
}
//获取镇的编号
url = "https://lsp.wuliu.taobao.com/locationservice/addr/output_address_town_array.do?l1=" + provid + "&l2=" + cityid + "&l3=" + areaid + "&lang=zh-S";
if (town.Contains("团"))
{
url = "https://lsp.wuliu.taobao.com/locationservice/addr/output_address_town_array.do?l1=" + provid + "&l2=" + cityid + "&lang=zh-S";
}
htmlxt = GetPostTaobaoHtml.UploadTaobao(url, "", true);
var mm = BaseRegex.GetMatchRegex(htmlxt, @"\[['""]([\d]+)['""],['""]([^""]+?)['""]");
for (int i = 0; mm != null && i < mm.Count; i++)
{
string id = mm[i].Groups[1].Value;
string t = mm[i].Groups[2].Value;
if (string.IsNullOrEmpty(id) || string.IsNullOrEmpty(t))
{
continue;
}
towns.Add(new KeyValueBase(id, t));
}
// }
//镇编号
string townid = matchingMethod(town, towns);
if (string.IsNullOrEmpty(townid))
{
townid = areaid.ToString();
if (areaid == 0 || string.IsNullOrEmpty(areaid.ToString()))
{
townid = cityid.ToString();
if (cityid == 0 || string.IsNullOrEmpty(cityid.ToString()))
{
townid = provid.ToString();
}
}
}
#endregion
string deliverId = "";
if (isUpdAddress)
{
#region 获取最近的地址
data = "{}";
sign = GetSign(h5Tkt, data, out time);
url = "https://h5api.m.taobao.com/h5/mtop.taobao.mbis.getdeliveraddrlist/1.0/?jsv=2.5.1&appKey=12574478&t=" + time + "&sign=" + sign + "&api=mtop.taobao.mbis.getDeliverAddrList&v=1.0&ecode=1&needLogin=true&dataType=jsonp&type=jsonp&callback=mtopjsonp4&data=%7B%7D";
htmlxt = GetPostTaobaoHtml.UploadTaobaoPost(url, url, true, "", cookies);
htmlxt = htmlxt.Replace("\\", "");
string detailDivisionCode = BaseRegex.GetStringJson(ref htmlxt, "detailDivisionCode");
deliverId = BaseRegex.GetStringJson(ref htmlxt, "deliverId");
if (string.IsNullOrEmpty(deliverId))
{
if (Ids.Count > 0)
{
deliverId = Ids[0];
}
}
if (string.IsNullOrEmpty(deliverId))
{
isUpdAddress = false;
}
#endregion
if (!string.IsNullOrEmpty(deliverId))
{
#region 修改地址
data = "{\"divisionCode\":\"" + townid + "\",\"townDivisionCode\":\"" + townid + "\",\"detailDivisionCode\":\"" + detailDivisionCode + "\",\"addressDetail\":\"" + addressstr + "\",\"postCode\":\"000000\",\"overseaAddress\":false,\"fullName\":\"" + name_zdy + "\",\"mobileCode\":\"86\",\"mobile\":\"" + mobile_zdy + "\",\"phoneInternationalCode\":86,\"phoneAreaCode\":\"\",\"phoneNumber\":\"\",\"phoneExtension\":\"\",\"defaultDeliverAddress\":false,\"acceptAddressName\":false,\"province\":\"" + prov + "\",\"city\":\"" + city + "\",\"area\":\"" + area + "\",\"town\":\"" + town + "\",\"deliverId\":\"" + deliverId + "\"}";
sign = GetSign(h5Tkt, data, out time);
StringBuilder buffer = new StringBuilder();
buffer.AppendFormat("jsv={0}", "2.4.2");
buffer.AppendFormat("&appKey={0}", 12574478);
buffer.AppendFormat("&t={0}", time);
buffer.AppendFormat("&sign={0}", sign);
buffer.AppendFormat("&api={0}", "mtop.taobao.mbis.updateDeliverAddress");
buffer.AppendFormat("&v={0}", "1.0");
buffer.AppendFormat("&ecode={0}", "1");
buffer.AppendFormat("&needLogin={0}", true);
buffer.AppendFormat("&timeout={0}", 3000);
buffer.AppendFormat("&dataType={0}", "jsonp");
buffer.AppendFormat("&type={0}", "jsonp");
buffer.AppendFormat("&callback={0}", "mtopjsonp14");
buffer.AppendFormat("&data={0}", GetHtml.UrlEncodeUtf8(data));
url = "https://h5api.m.taobao.com/h5/mtop.taobao.mbis.updatedeliveraddress/1.0/?" + buffer.ToString();
string htmlx = GetPostTaobaoHtml.UploadTaobaoPost(url, url, true, "", cookies);
if (!htmlx.Contains("操作成功"))
{
isUpdAddress = false;
}
#endregion
}
}
if (!isUpdAddress)
{
#region 增加新地址
//增加新地址
StringBuilder buffer = new StringBuilder();
buffer.AppendFormat("jsv={0}", "2.4.2");
buffer.AppendFormat("&appKey={0}", 12574478);
buffer.AppendFormat("&api={0}", "mtop.taobao.mbis.insertDeliverAddress");
buffer.AppendFormat("&v={0}", "1.0");
buffer.AppendFormat("&ecode={0}", "1");
buffer.AppendFormat("&needLogin={0}", true);
buffer.AppendFormat("&timeout={0}", 3000);
buffer.AppendFormat("&dataType={0}", "jsonp");
buffer.AppendFormat("&type={0}", "jsonp");
buffer.AppendFormat("&callback={0}", "mtopjsonp14");
data = "{\"divisionCode\":\"" + townid + "\",\"townDivisionCode\":\"" + townid +
"\",\"addressDetail\":\"" + addressstr + "\",\"longitude\":\"117.242306\",\"latitude\":\"31.826987\",\"postCode\":\"000000\",\"overseaAddress\":false,\"fullName\":\"" + name_zdy + "\",\"mobileCode\":86,\"mobile\":\"" + mobile_zdy + "\",\"phoneInternationalCode\":86,\"phoneAreaCode\":\"\",\"phoneNumber\":\"\",\"phoneExtension\":\"\",\"defaultDeliverAddress\":false}";
sign = GetSign(h5Tkt, data, out time);
buffer.AppendFormat("&sign={0}", sign);
buffer.AppendFormat("&t={0}", time);
buffer.AppendFormat("&data={0}", GetHtml.UrlEncodeUtf8(data));
url = "https://h5api.m.taobao.com/h5/mtop.taobao.mbis.insertdeliveraddress/1.0/?" + buffer.ToString();
//string refere = "https://member1.taobao.com/member/fresh/deliver_address.htm";
//string htmlx = GetPostTaobaoHtml.UploadTaobao(url, url, true);
string htmlx = GetPostTaobaoHtml.UploadTaobaoPost(url, url, true, "", cookies);
var m = BaseRegex.GetMatchRegex(htmlx, @"{\\""deliverId\\"":([\d]+?)}");
if (m == null || m.Count <= 0)
{
if (Ids.Count == 19)
{
AsycDelTbAddress(Ids, h5Tkt, cookies);
}
if (!htmlx.Contains("操作成功"))
{
GetAdressFail(addrHtml);//若地址添加失败,需判断是否出现滑块
string msg = BaseRegex.GetStringJson(ref htmlx, "message");
if (!string.IsNullOrEmpty(msg))
{
BaseMsgForm.ShowError(msg, "提示");
}
else
{
BaseMsgForm.ShowError("地址添加失败,添加收货地址被限制请手动添加地址。", "提示");
}
return;
}
return;
}
deliverId = m[0].Groups[1].Value;
#endregion
}
#region 设置默认地址
//设置默认地址
StringBuilder bufferdefault = new StringBuilder();
bufferdefault.AppendFormat("jsv={0}", "2.4.2");
bufferdefault.AppendFormat("&appKey={0}", 12574478);
bufferdefault.AppendFormat("&api={0}", "mtop.taobao.mbis.setDefultAddress");
bufferdefault.AppendFormat("&v={0}", "1.0");
bufferdefault.AppendFormat("&ecode={0}", "1");
bufferdefault.AppendFormat("&needLogin={0}", true);
bufferdefault.AppendFormat("&dataType={0}", "jsonp");
bufferdefault.AppendFormat("&type={0}", "jsonp");
bufferdefault.AppendFormat("&callback={0}", "mtopjsonp14");
data = "{\"deliverId\":" + deliverId + "}";
sign = GetSign(h5Tkt, data, out time);
bufferdefault.AppendFormat("&sign={0}", sign);
bufferdefault.AppendFormat("&t={0}", time);
bufferdefault.AppendFormat("&data={0}", GetHtml.UrlEncodeUtf8(data));
url = "https://h5api.m.taobao.com/h5/mtop.taobao.mbis.setdefultaddress/1.0/?" + bufferdefault.ToString();
//refere = "https://member1.taobao.com/member/fresh/deliver_address.htm";
string htmlxd = GetPostTaobaoHtml.UploadTaobaoPost(url, url, true, "", cookies);
#endregion
if (!htmlxd.Contains("操作成功"))
{
MessageBox.Show("地址添加失败,添加收货地址被限制请手动添加地址。", "提示");
return;
}
if (Ids.Count == 19)
{
AsycDelTbAddress(Ids, h5Tkt, cookies);
}
}
public void GetAdressFail(string htmlxt)
{
if (htmlxt.Contains("被挤爆啦,请稍后重试"))
{
long time;
//GetHtml.OpenUrl(BaseRegex.GetStringJson(ref htmlxt, "url"));
BaseClass.SlideUrl = BaseRegex.GetStringJson(ref htmlxt, "url");
BaseClass.SlideIsClose = true;
int count = 0;
while (true)
{
if (count == 30)
{
break;
}
count++;
Thread.Sleep(1000);
if (!BaseClass.SlideIsClose)
{
string data = "{\"isSec\":0}";
string sign = GetSign("", data, out time);
string url = "https://api.m.taobao.com/h5/mtop.user.getusersimple/1.0/?appKey=12574478&t=" + time + "&sign=" + sign +
"&api=mtop.user.getUserSimple&v=1.0&H5Request=true&type=jsonp&dataType=jsonp&callback=mtopjsonp1&data=" + GetHtml.UrlEncodeUtf8(data);
//获取用户的所有地址编号
htmlxt = GetPostTaobaoHtml.UploadTaobao(url, url, true);
if (string.IsNullOrEmpty(htmlxt) || !htmlxt.Contains("_m_h5_tk"))//没有登录获取token获取失败
{
return;
}
string h5Tkt = BaseRegex.GetMatchRegexString(ref htmlxt, "_m_h5_tk=([^_]+?)_");
string addCookies = BaseRegex.GetMatchRegexString(ref htmlxt, "(_m_h5_tk=[^;]+?;)") + " " +
BaseRegex.GetMatchRegexString(ref htmlxt, "(_m_h5_tk_enc=[^;]+?;)");
string cookies = GetPostTaobaoHtml.GetCookies(url, "");
cookies = BaseRegex.Relpace(cookies, "(_m_h5_tk=[^;]+?;)", "");
cookies = BaseRegex.Relpace(cookies, "(_m_h5_tk_enc=[^;]+?;)", "");
cookies += addCookies;
data = "{}";
sign = GetSignx(h5Tkt, data, out time);
url = "https://h5api.m.taobao.com/h5/mtop.taobao.mbis.getdeliveraddrlist/1.0/?jsv=2.5.1&appKey=27769795&t=" + time + "&sign=" + sign + "&api=mtop.taobao.mbis.getDeliverAddrList&v=1.0&ecode=1&needLogin=true&dataType=jsonp&type=jsonp&callback=mtopjsonp4&data=%7B%7D";
htmlxt = GetPostTaobaoHtml.UploadTaobaoPost(url, url, true, "", cookies);
htmlxt = htmlxt.Replace("\\", "");
break;
}
}
//if (htmlxt.Contains("被挤爆啦,请稍后重试"))
//{
// MessageBox.Show("地址修改失败,添加收货地址被限制请手动添加地址。", "提示");
// return;
//}
}
}
/// <summary>
/// 匹配集合中的镇编号
/// </summary>
/// <param name="town"></param>
/// <param name="towns"></param>
public string matchingMethod(string town, List<KeyValueBase> towns)
{
if (string.IsNullOrEmpty(town))
return "";
char[] ll = town.ToCharArray();
string maxId = ""; string maxName = "";
int maxPercent = 0;
foreach (var item in towns)
{
char[] t = item.Value.Replace("镇", "").Replace("开发区", "").Replace("经济开发区", "").Replace("区", "").ToCharArray();
if (t.Length == 0)
continue;
int hadCount = 0;
foreach (var i in t)
{
bool had = false;
foreach (var l in ll)
{
if (l == i)
{
had = true;
break;
}
}
if (had)
{
hadCount++;
}
}
double hadPercent = hadCount * 100 / t.Length;
if (hadPercent > maxPercent)
{
maxPercent = hadCount * 100 / t.Length;
maxId = item.Key;
maxName = item.Value;
}
}
return maxId;
}
#endregion
#region 匹配成功sku后到支付页面
public void TbPutToBuy(long sku, decimal noGroupPrice, decimal buyPrice)
{
if (BaseClass.LoseMoneyNoBuy && buyPrice > Convert.ToDecimal(orderDetail.price))
{
MessageBox.Show("出售价低于进货价,如要拍单请在设置关闭即可");
return;
}
var pb = Pb;
//string html = Html;
if (string.IsNullOrEmpty(Mobile))
Mobile = orderDetail.mobile;
string mobile = BaseRegex.GetMatchRegexString(ref Mobile, @"(1[\d]{2}[- ]{0,1}[\d]{4}[- ]{0,1}[\d]{4})");
if (string.IsNullOrEmpty(mobile))
{
MessageBox.Show("没有识别到手机号");
return;
}
if (sku == 0)
{
return;
}
//long stime = BaseClass.GetTime(DateTime.Now);
string urlstr = "https://buy.taobao.com/auction/buy_now.jhtml?spm=2013.1.20140002.d1.undefined";
string datastr = "onekey=&gmtCreate=&checkCodeIds=&secStrNoCCode=&tb_token=5e13b43681fe1&item_url_refer=https%3A%2F%2Fbschina.taobao.com%2Fcategory-673031679.htm%3Fspm%3Da1z10.10426-c-s.w5001-14477384681.8.28824bb63K47lF%26mid%3Dw-702831136-0%26catName%3D%25C4%25D0%25D7%25B0%26catId%3D673031679%26orderType%3Dhotsell_desc%26v%3D1%26scene%3Dtaobao_shop&item_id=" + pb.from_id + "&item_id_num=" + pb.from_id + "&auction_type=b&from=item_detail&frm=undefined&current_price=" + buyPrice + "&auto_post1=&quantity=" + orderDetail.count + "&skuId=" + sku + "&skuInfo=&buyer_from=undefined&chargeTypeId=&root_refer=undefined&source_time=1541671626768&ybhpss=undefined";
string referstr = "https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-14477384761.13.36c858e69m8xer&id=" + pb.from_id + "";
string htmlstr = GetPostTaobaoHtml.UploadTaobaoPost(urlstr, referstr, true, datastr);
string tokenstr = BaseRegex.GetStringInput(ref htmlstr, "_tb_token_");
datastr = "onekey=&gmtCreate=&checkCodeIds=&secStrNoCCode=&tb_token=" + tokenstr + "&item_id=" + pb.from_id + "&item_id_num=" + pb.from_id + "&auction_type=b&from=item_detail&frm=undefined&current_price=" + buyPrice + "&auto_post1=&quantity=" + orderDetail.count + "&skuId=" + sku + "&skuInfo=&buyer_from=undefined&chargeTypeId=&root_refer=undefined&source_time=1541671626768&ybhpss=undefined";
urlstr = "https://buy.taobao.com/auction/buy_now.jhtml";
referstr = "https://item.taobao.com/item.htm?id=" + pb.from_id + "";
htmlstr = GetPostTaobaoHtml.UploadTaobaoPost(urlstr, referstr, true, datastr);
//cefWebBrowser1.GetBrowser().MainFrame.LoadStringForUrl(htmlstr, urlstr);
cefWebBrowser1.GetBrowser().MainFrame.LoadHtml(htmlstr);
}
#endregion
/// <summary>
/// 淘宝签名算法
/// </summary>
/// <param name="h5Tk"></param>
/// <param name="data"></param>
/// <returns></returns>
public string GetSign(string h5Tk, string data, out long time)
{
string appkey = "12574478";
System.DateTime starttime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
DateTime datetime = DateTime.Now;
time = (long)(datetime - starttime).TotalMilliseconds; // 相差毫秒数
string code = h5Tk + "&" + time + "&" + appkey + "&" + data;
return Md5Base.GetMd5(code).ToLower();
}
public string GetSignx(string h5Tk, string data, out long time)
{
string appkey = "27769795";
System.DateTime starttime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
DateTime datetime = DateTime.Now;
time = (long)(datetime - starttime).TotalMilliseconds; // 相差毫秒数
string code = h5Tk + "&" + time + "&" + appkey + "&" + data;
return Md5Base.GetMd5(code).ToLower();
}
#region 删除淘宝地址
private async void AsycDelTbAddress(List<string> Ids, string h5Tkt, string cookies)
{
await Task.Run(() =>
{
DelTbAddress(Ids, h5Tkt, cookies);
});
}
public void DelTbAddress(List<string> Ids, string h5Tkt, string cookies)
{
//删除地址
for (int j = 0; j < Ids.Count; j++)
{
long time;
StringBuilder bufferdelete = new StringBuilder();
bufferdelete.AppendFormat("jsv={0}", "2.4.2");
bufferdelete.AppendFormat("&appKey={0}", 12574478);
bufferdelete.AppendFormat("&api={0}", "mtop.taobao.mbis.deleteDeliverAddressById");
bufferdelete.AppendFormat("&v={0}", "1.0");
bufferdelete.AppendFormat("&ecode={0}", "1");
bufferdelete.AppendFormat("&needLogin={0}", true);
bufferdelete.AppendFormat("&dataType={0}", "jsonp");
bufferdelete.AppendFormat("&type={0}", "jsonp");
bufferdelete.AppendFormat("&callback={0}", "mtopjsonp14");
string data = "{\"deliverId\":" + Ids[j] + "}";
string sign = GetSign(h5Tkt, data, out time);
bufferdelete.AppendFormat("&sign={0}", sign);
bufferdelete.AppendFormat("&t={0}", time);
bufferdelete.AppendFormat("&data={0}", GetHtml.UrlEncodeUtf8(data));
string url = "https://h5api.m.taobao.com/h5/mtop.taobao.mbis.deletedeliveraddressbyid/1.0/?" + bufferdelete.ToString();
string htmlxt = GetPostTaobaoHtml.UploadTaobaoPost(url, "https://member1.taobao.com/member/fresh/deliver_address.htm", true, "", cookies);
Thread.Sleep(1000);
}
}
private void btGoProduct_Click(object sender, EventArgs e)
{
if (UpId.Contains("tb-"))
{
cefWebBrowser1.Load("https://item.taobao.com/item.htm?id=" + goodsId);
}
else if (UpId.Contains("al-"))
{
cefWebBrowser1.Load("https://detail.1688.com/offer/" + goodsId + ".html");
}
else if (UpId.Contains("dy-"))
{
cefWebBrowser1.Load("https://haohuo.jinritemai.com/views/product/item2?id=" + goodsId);
}
else
{
cefWebBrowser1.Load("https://yangkeduo.com/goods.html?goods_id=" + goodsId);
}
cefWebBrowser1.Refresh();
}
private void btbuySku_Click(object sender, EventArgs e)
{
ProductDtailBase t = new ProductDtailBase();
t.FromId = goodsId;
PinduoduoProductCollect pro = new PinduoduoProductCollect(bName, t);
pro.TempHtml = detailHtml;
pro.Get();
var pb = pro.pb;
long sku = 0;
decimal minPrice = int.MaxValue;
string skuBefor = combSkuList.Text;//Order.sku;
for (int i = 0; !string.IsNullOrEmpty(skuBefor) && i < SignWordBase.Length; i++)
{
skuBefor = skuBefor.Replace(SignWordBase[i].ToString(), "");
}
if (string.IsNullOrEmpty(skuBefor))
skuBefor = "";
skuBefor = skuBefor.Replace("(", "(").Replace(")", ")").ToLower();
decimal noGroupPrice = 0;
decimal buyPrice = 0;
string[] l = skuBefor.Split(':');
bool hadSku = false;
if (pb.SkuMaps.Count != 0)
{
Skumaps = pb.SkuMaps;
}
#region 拍单时匹配规格
for (int i = 0; i < pb.SkuMaps.Count; i++)
{
for (int j = 0; !string.IsNullOrEmpty(pb.SkuMaps[i].name) && j < SignWordBase.Length; j++)
{
pb.SkuMaps[i].name = pb.SkuMaps[i].name.Replace(SignWordBase[j].ToString(), "");
}
if (pb.SkuMaps[i].price < minPrice)
{
minPrice = pb.SkuMaps[i].price;
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
}
pb.SkuMaps[i].name = pb.SkuMaps[i].name.Replace("(", "(").Replace(")", ")").ToLower();
pb.SkuMaps[i].name = pb.SkuMaps[i].name.Replace("\"", "").Replace(";", "");
bool had = false;
//先精准匹配在模糊匹配
bool isMatch0 = false;//匹配标识1
bool isMatch1 = false;//匹配标识2 匹配标识都为true时,则精准匹配 匹配成功,否则进行模糊匹配
var skuArr = pb.SkuMaps[i].name.Split(';');
if (skuArr.Length > 0)
{
for (int k = 0; k < skuArr.Length; k++)
{
string skus = skuArr[k];
if (string.IsNullOrEmpty(skus))
{
continue;
}
string[] skuL = skus.Split(':');
if (skuL.Length == 2 && l.Length == 2)
{
if (skuL[0] == l[0])
{
isMatch0 = true;
}
if (skuL[1] == l[1])
{
isMatch1 = true;
}
}
}
if (isMatch0 && isMatch1)//精准匹配 匹配成功
{
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
noGroupPrice = pb.SkuMaps[i].no_group_price;
//SkuImg = pb.SkuMaps[i].prop_image;
hadSku = true;
break;
}
}
//精准匹配未匹配成功则进行模糊匹配
if (!isMatch0 && !isMatch1)
{
if (l.Length == 1 && !string.IsNullOrEmpty(skuBefor) && pb.SkuMaps[i].name.Contains(":" + skuBefor) || l.Length == 2 && !string.IsNullOrEmpty(skuBefor) && pb.SkuMaps[i].name.Contains(":" + l[0]) && pb.SkuMaps[i].name.Contains(":" + l[1]))
{
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
noGroupPrice = pb.SkuMaps[i].no_group_price;
//SkuImg = pb.SkuMaps[i].pinduoduo_image;
//SkuImg = pb.SkuMaps[i].prop_image;
hadSku = true;
break;
}
}
if (pb.SkuMaps.Count == 1 && pb.SkuMaps[0].name == "")//没有规格
{
sku = pb.SkuMaps[i].id;
buyPrice = pb.SkuMaps[i].price;
noGroupPrice = pb.SkuMaps[i].no_group_price;
//SkuImg = pb.SkuMaps[i].prop_image;
hadSku = true;
break;
}
}
#endregion
Pb = pb;
Html = detailHtml;
Thread.Sleep(1000);
PutToBuy(sku, noGroupPrice, buyPrice);
}
private void textBoxXProfit_TextChanged(object sender, EventArgs e)
{
if (textBoxXProfit.Text.Contains("-"))
{
MessageBox.Show("本单亏本,请注意。");
}
}
#endregion
#region 删除并重新匹配地址
private void btupdateAddress_Click(object sender, EventArgs e)
{
if (UpId.StartsWith("tb-"))
{
AutoMatchTbAddress();
}
else if (UpId.StartsWith("pd-") || UpId.StartsWith("pdd-"))
{
// 拼多多批发
if (GlobalConfig.SystemSettings.IsUsePddPifa)
{
AsycAutoMatchPddPifaAddress();
}
else
{
//获取所有地址并删除
DelPddAddress();
AsycAutoMatchPddAddress();//导入当前买家地址
}
}
//MessageBox.Show("已提交地址");
//new Thread(()=>{
cefWebBrowser1.Load(webUrl);
cefWebBrowser1.Refresh();
//});
}
#endregion
private void BuyOrderForms_FormClosing(object sender, FormClosingEventArgs e)
{
if (string.IsNullOrEmpty(order_id_buy) && pnlManualSaveBuyOrderId.Visible == false)
{
BaseMsgForm.ShowInfo("未获取到拍单订单号,如果已完成拍单,请在下方手动填写。");
pnlManualSaveBuyOrderId.Visible = true;
e.Cancel = true;
}
}
private void btnManualSave_Click(object sender, EventArgs e)
{
// 手动设置拍单成功
PayAmount = tbproductjj.Text;
order_id_buy = txtManualBuyOrderId.Text;
try
{
if (!string.IsNullOrEmpty(order_id_buy))
{
if (cefWebBrowser1 != null)
{
var jsCode = "window.location.href;";
var task = cefWebBrowser1.GetMainFrame().EvaluateScriptAsync(jsCode, null);
var result = task.Result?.Result?.ToString();
if (!string.IsNullOrEmpty(result))
{
if (!Directory.Exists("logs"))
Directory.CreateDirectory("logs");
string buyUserNameForManual = "";
var buyuser = GetBuyerUser();
if (buyuser.Value != null)
{
buyUserNameForManual = buyuser.Key.name;
}
File.AppendAllText("logs\\buy_order_id_failed_" + DateTime.Now.ToString("yyyyMMdd"),
buyUserNameForManual + " " + order_id_buy + " " + result + "\r\n");
}
}
}
}
catch (Exception ex) { }
new Thread(UpdateToServer).Start();
this.Close();
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
private void DelPddAddress()
{
string buyerCookie = "";
if (GlobalConfig.SystemSettings.IsUseMultiBuyer)
{
BaseClass.PddUid = multiUserCookie.pdd_user_id;
buyerCookie = "PDDAccessToken=" + multiUserCookie.cookies + ";";
}
else
{
buyerCookie = GetPostTaobaoHtml.GetCookies(BaseClass.PddMobileUrl, "");
}
#region 删除之前的地址
string urlxx = BaseClass.PddMobileUrl + "addresses.html?refer_page_name=personal&refer_page_id=10001_1544426591116_hIkrp9qCEK&refer_page_sn=10001";
string referexx = "https://yangkeduo.com";
string htmx = GetPostTaobaoHtml.UploadTaobao(urlxx, referexx, true, buyerCookie);
if (!string.IsNullOrEmpty(BaseClass.PddUid) && htmx.Contains("远程服务器返回错误"))
{
if (goodsId > 0)
{
MessageBox.Show("服务器吃撑了,请重新登录");
//Thread.Sleep(1000);
//Invoke(new delegateBool(mainNForm.loginPdd), isPinBuyer);
}
return;
}
#endregion
htmx = BaseRegex.GetMatchRegexString(htmx, @"window.rawData=([^;]+)");
var mx = BaseRegex.GetMatchRegex(ref htmx, "{\"lineHeight\":[\\s\\S]+?\"addressId\":([\\s\\S]+?)}");
if (mx == null)
{
return;
}
if (mx.Count == 0)
{
mx = BaseRegex.GetMatchRegex(ref htmx, "(\"addressId\":[\\s\\S]+?\"invalidText\":\"[\\s\\S]*?\")");
}
if (mx != null)
{
string refere = "https://yangkeduo.com";
for (int i = 0; i < mx.Count; i++)
{
var mxItem = mx[i].Groups[0].Value;
string addressId = BaseRegex.GetStringJson(ref mxItem, "addressId");//地址ID
string url = BaseClass.PddMobileUrlx + "proxy/api/api/origenes/address/delete/" + addressId + "?pdduid=" + BaseClass.PddUid;
htmx = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, "", false, buyerCookie);
Thread.Sleep(500);
}
}
}
private void btnChangeMultiBuyer_Click(object sender, EventArgs e)
{
if (GlobalConfig.SystemSettings.IsUseMultiBuyer && GlobalConfig.LstMultiBuyer != null && multiUserCookie != null)
{
multiUserCookie.times = multiUserCookie.times - 1;
string url = BaseClass.Build29WxObjString("pdd_user_cookies&act=update");
string param = UserLogin.GetSignaturex() + "&pdd_user_id=" + multiUserCookie.pdd_user_id + "&times=" + multiUserCookie.times;
string html = GetHtml.PostUtf8(url, param);
multiUserCookie = null;
List<PddMultiBuyerInfo> userCookies = GlobalConfig.LstMultiBuyer.FindAll(x => x.times > 0);
if (userCookies.Count > 0)
{
multiUserCookie = userCookies[Randomx.GetId(0, userCookies.Count)];
}
if (multiUserCookie == null)
{
BaseMsgForm.ShowError("多买手模式调用失败,无法获取买手管理中的买手号", "错误");
this.Close();
return;
}
}
Task.Run(() =>
{
DelPddAddress(); //获取所有地址并删除
AsycAutoMatchPddAddress(); //导入当前买家地址
Thread.Sleep(2000);
var currentUrl = this.cefWebBrowser1.Address;
if (currentUrl.Contains("yangkeduo.com/order_checkout.html"))
{
change_pddbuyuser(currentUrl, this.datajsons);
}
});
}
#region 禁用alert事件
private void StopAlertEvent()
{
try
{
string js = "window.alert=function(){return false;};";
cefWebBrowser1.GetBrowser().MainFrame.ExecuteJavaScriptAsync(js);
js = "window.confirm = function(){return false;}";
cefWebBrowser1.GetBrowser().MainFrame.ExecuteJavaScriptAsync(js);
}
catch (Exception)
{
}
}
#endregion
#region 1688增加地址
public void AddTaoBaoAddress()
{
string urlx = "https://tradeconfig.1688.com/foundation/receive_address_manager.htm";
string refer = "https://member.1688.com/alipay/alipay_manager.htm";
string html = GetPostTaobaoHtml.UploadTaobao(urlx, refer, true);
string pattern = @"data-csrftoken=""([\w\W]+?)""";
var tokenMatch = BaseRegex.GetMatchRegex(html, pattern);
if (tokenMatch == null || tokenMatch.Count <= 0) return;
string token = tokenMatch[0].Groups[1].Value;
if (string.IsNullOrEmpty(token))//没有登录获取token获取失败
{
return;
}
string addressstr = Address;
#region 匹配省市区镇
string patternProv = @"([\w]+?省|[\w]+?自治区)";
var mc = BaseRegex.GetMatchRegex(addressstr, patternProv);
string prov = string.Empty;
if (mc.Count > 0)
{
prov = mc[0].Groups[1].ToString();
}
else if (addressstr.Contains("上海") | addressstr.Contains("北京") | addressstr.Contains("天津") | addressstr.Contains("重庆"))
{
patternProv = @"(上海|北京|天津|重庆)";
mc = BaseRegex.GetMatchRegex(addressstr, patternProv);
prov = mc[0].Groups[1].ToString();
}
if (string.IsNullOrEmpty(prov)) return;
//匹配市
//string patternCity = @"(?<city>[^市|^省|^县|^区]+?[市])";
string patternCity = @"([^市|^省|^自治区|^县|^区]+?(市|自治州))";
//mc = Regex.Matches(addressstr, patternCity, RegexOptions.IgnoreCase);
mc = BaseRegex.GetMatchRegex(addressstr, patternCity);
string city = "";
if (mc.Count > 0)
{
city = mc[0].Groups[1].ToString();
}
addressstr = addressstr.Substring(addressstr.IndexOf(city) + city.Length);
//匹配区
string patternArea = @"([^县|^区|^省|^自治区]+?[市|县|区])";
//mc = Regex.Matches(addressstr, patternArea, RegexOptions.IgnoreCase);
mc = BaseRegex.GetMatchRegex(addressstr, patternArea);
string area = "";
if (mc.Count > 0)
{
area = mc[0].Groups[1].ToString();
}
//匹配镇
string patternTown = @"([^镇|^省|^自治区|^市|^县|^区]+?(镇|路|街道))";
//mc = Regex.Matches(addressstr, patternTown, RegexOptions.IgnoreCase);
mc = BaseRegex.GetMatchRegex(addressstr, patternTown);
string town = "";
if (mc.Count > 0)
{
town = mc[0].Groups[1].ToString();
}
#endregion
//获取省、市、县名称
if (prov.Contains("自治区"))
{
if (prov.Contains("内蒙古"))
{
prov = "内蒙古";
}
else
{
prov = prov.Substring(0, 2);
}
}
if (prov.Contains("省"))
{
prov = prov.Remove(prov.Length - 1, 1);
}
//city = city == "" ? "" : city.Remove(city.Length - 1, 1);
//area = area == "" ? "" : area.Remove(area.Length - 1, 1);
//定义省、市、县、区编号
int provid = 0;
int cityid = 0;
int areaid = 0;
//获取省的编号
foreach (AddressBase item in AddressSetIni.AddressAllList)
{
if (item.Name.Contains(prov))
{
provid = item.Id;
break;
}
}
provid = AddressSetIni.AddressAllList.Find(x => x != null && x.Name.Contains(prov)).Id;
if (provid == 0)
{
MessageBox.Show("省份识别失败,请手动填写地址", "提示");
return;
}
//获取市的编号
var citys = AddressSetIni.Addressdic[provid];
AddressBase cityAddress = citys.Find(c => c != null && city.Contains(c.Name));
if (cityAddress != null)
{
cityid = cityAddress.Id;
}
if (citys.Count > 0 && (city.Equals("上海") || city.Equals("北京") || city.Equals("天津") || city.Equals("重庆")))
{
cityid = citys[0].Id;
}
if (cityid == 0)
{
MessageBox.Show("城市识别失败,请手动填写地址", "提示");
return;
}
//获取区的编号
var areas = AddressSetIni.Addressdic[cityid];
AddressBase areaAddress = areas.Find(a => a != null && area.Contains(a.Name));
if (areaAddress != null) areaid = areaAddress.Id;
//获取镇的编号
string url = "https://wuliu.1688.com/address/ajax/get_children_address_list.jsx?_input_charset=UTF-8&callback=jQuery172026174634437107835_1529388252300&code=" + areaid + "&_=1529388287945";
string htmlxt = GetPostTaobaoHtml.UploadTaobao(url, "", true);
var m = BaseRegex.GetMatchRegex(htmlxt, @"""a"":""([\d]+?)"",[\w\W]+?,""n"":""([\w\W]+?)""");
List<KeyValueBase> towns = new List<KeyValueBase>();
for (int i = 0; m != null && i < m.Count; i++)
{
string id = m[i].Groups[1].Value;
string t = m[i].Groups[2].Value;
if (string.IsNullOrEmpty(id) || string.IsNullOrEmpty(t))
{
continue;
}
towns.Add(new KeyValueBase(id, t));
}
//镇编号
string townid = matchingMethod(town, towns);
url = "https://tradeconfig.1688.com/foundation/receive_address_manager.htm";
string refere = "https://member.1688.com/alipay/alipay_manager.htm";
string htmlx = GetPostTaobaoHtml.UploadTaobao(url, refere, true);
pattern = @"<div\s*data-addressid=""([\d]+?)""\s*class=""oper-div"">";
var addressIDMatch = BaseRegex.GetMatchRegex(html, pattern);
if (addressIDMatch == null) return;
for (int i = 0; i < addressIDMatch.Count; i++)
{
string oldId = addressIDMatch[i].Groups[1].Value;
string urldel = "https://tradeconfig.1688.com/foundation/ajax/operate_receive_address.jsx?_input_charset=UTF-8";
string referedel = "https://tradeconfig.1688.com/foundation/receive_address_manager.htm";
StringBuilder bufferdel = new StringBuilder();
bufferdel.AppendFormat("addressIds={0}", GetHtml.UrlEncodeUtf8(oldId));
bufferdel.AppendFormat("&operateType={0}", GetHtml.UrlEncodeUtf8("batch_delete"));
bufferdel.AppendFormat("&_csrf_token={0}", GetHtml.UrlEncodeUtf8(token));
string datadel = bufferdel.ToString();
string htmldel = GetPostTaobaoHtml.UploadTaobaoPost(urldel, referedel, true, datadel);
}
string proName = prov;
if (proName.Contains("内蒙"))
{
proName = "内蒙古自治区";
}
else if (proName.Contains("广西"))
{
proName = "广西壮族自治区";
}
else if (proName.Contains("宁夏"))
{
proName = "宁夏回族自治区";
}
else if (proName.Contains("新疆"))
{
proName = "新疆维吾尔自治区";
}
else
{
proName = proName + "省";
}
url = "https://tradeconfig.1688.com/foundation/ajax/operate_receive_address.jsx?_input_charset=UTF-8";
string proCode = provid.ToString();
//string proName = prov;
int provlevel = 1;
string cityCode = cityid.ToString();
string cityName = city;
string cityparentcode = provid.ToString();
int citylevel = 2;
string areaCode = areaid.ToString();
string areaName = area;
string areaparentcode = cityid.ToString();
int arealevel = 3;
string townCode = townid.ToString();
string townName = town;
string townparentcode = areaid.ToString();
int townlevel = 4;
string postCode = "000000";
string fullName = bName;//Order.name;
string addressdetail = Address;//address.addressDetail;
string addressCode = areaid.ToString();
string mobile = Mobile;// Order.mobile;
string addressCodeText = proName + " " + cityName + " " + areaName; ;
string provinceCode = provid.ToString();
string cityCodedetail = cityid.ToString();
string areacodedetail = areaid.ToString();
string townCodedetail = townid.ToString();
string provinceNamedetial = prov;
string cityNamedetail = city;
string areaNamedetail = area;
string townNamedetail = town;
bool isDefault = false;
bool isInland = true;
string addressNamePath = proName + " " + cityName + " " + areaName + " " + townName; ;
string operateType = "add";
string _csrf_token = token;
StringBuilder buffer = new StringBuilder();
buffer.AppendFormat("isNew={0}", true);
buffer.AppendFormat("&" + GetHtml.UrlEncodeUtf8("addressPath[0][code]") + "={0}", GetHtml.UrlEncodeUtf8(proCode));
buffer.AppendFormat("&" + GetHtml.UrlEncodeUtf8("addressPath[0][name]") + "={0}", GetHtml.UrlEncodeUtf8(proName));
buffer.AppendFormat("&" + GetHtml.UrlEncodeUtf8("addressPath[0][level]") + "={0}", provlevel);
buffer.AppendFormat("&" + GetHtml.UrlEncodeUtf8("addressPath[1][code]") + "={0}", GetHtml.UrlEncodeUtf8(cityCode));
buffer.AppendFormat("&" + GetHtml.UrlEncodeUtf8("addressPath[1][parentCode]") + "={0}", GetHtml.UrlEncodeUtf8(cityparentcode));
buffer.AppendFormat("&" + GetHtml.UrlEncodeUtf8("addressPath[1][name]") + "={0}", GetHtml.UrlEncodeUtf8(cityName));
buffer.AppendFormat("&" + GetHtml.UrlEncodeUtf8("addressPath[1][level]") + "={0}", citylevel);
buffer.AppendFormat("&" + GetHtml.UrlEncodeUtf8("addressPath[2][code]") + "={0}", GetHtml.UrlEncodeUtf8(areaCode));
buffer.AppendFormat("&" + GetHtml.UrlEncodeUtf8("addressPath[2][parentCode]") + "={0}", GetHtml.UrlEncodeUtf8(areaparentcode));
buffer.AppendFormat("&" + GetHtml.UrlEncodeUtf8("addressPath[2][name]") + "={0}", GetHtml.UrlEncodeUtf8(areaName));
buffer.AppendFormat("&" + GetHtml.UrlEncodeUtf8("addressPath[2][level]") + "={0}", arealevel);
buffer.AppendFormat("&" + GetHtml.UrlEncodeUtf8("addressPath[3][code]") + "={0}", GetHtml.UrlEncodeUtf8(townCode));
buffer.AppendFormat("&" + GetHtml.UrlEncodeUtf8("addressPath[3][parentCode]") + "={0}", GetHtml.UrlEncodeUtf8(townparentcode));
buffer.AppendFormat("&" + GetHtml.UrlEncodeUtf8("addressPath[3][name]") + "={0}", GetHtml.UrlEncodeUtf8(townName));
buffer.AppendFormat("&" + GetHtml.UrlEncodeUtf8("addressPath[3][level]") + "={0}", townlevel);
buffer.AppendFormat("&fullName={0}", GetHtml.UrlEncodeUtf8(fullName));
buffer.AppendFormat("&address_={0}", GetHtml.UrlEncodeUtf8(addressdetail));
buffer.AppendFormat("&addressCode={0}", GetHtml.UrlEncodeUtf8(addressCode));
buffer.AppendFormat("&mobile={0}", GetHtml.UrlEncodeUtf8(mobile));
buffer.AppendFormat("&phone=&phoneCode=&phoneNumber=&phoneSubCode=&postCode={0}",
GetHtml.UrlEncodeUtf8(postCode));
buffer.AppendFormat("&addressCodeText={0}", GetHtml.UrlEncodeUtf8(addressCodeText));
buffer.AppendFormat("&provinceCode={0}", GetHtml.UrlEncodeUtf8(provinceCode));
buffer.AppendFormat("&cityCode={0}", GetHtml.UrlEncodeUtf8(cityCodedetail));
buffer.AppendFormat("&areaCode={0}", GetHtml.UrlEncodeUtf8(areacodedetail));
buffer.AppendFormat("&townCode={0}", GetHtml.UrlEncodeUtf8(townCodedetail));
buffer.AppendFormat("&provinceName={0}", GetHtml.UrlEncodeUtf8(provinceNamedetial));
buffer.AppendFormat("&cityName={0}", GetHtml.UrlEncodeUtf8(cityNamedetail));
buffer.AppendFormat("&areaName={0}", GetHtml.UrlEncodeUtf8(areaNamedetail));
buffer.AppendFormat("&townName={0}", GetHtml.UrlEncodeUtf8(townNamedetail));
buffer.AppendFormat("&isDefault={0}", isDefault);
buffer.AppendFormat("&isInland={0}", isInland);
buffer.AppendFormat("&addressNamePath={0}", GetHtml.UrlEncodeUtf8(addressNamePath));
buffer.AppendFormat("&operateType={0}", GetHtml.UrlEncodeUtf8(operateType));
buffer.AppendFormat("&_csrf_token={0}", GetHtml.UrlEncodeUtf8(_csrf_token));
refere = "https://tradeconfig.1688.com/foundation/receive_address_manager.htm";
string data = buffer.ToString();
htmlx = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data);
m = BaseRegex.GetMatchRegex(htmlx, @"""addressId"":""([\d]+?)""");
if (m == null || m.Count <= 0) return;
string addressId = m[0].Groups[1].Value;
data = "addressId=" + addressId + "&operateType=set_default&_csrf_token=" + _csrf_token + "";
url = "https://tradeconfig.1688.com/foundation/ajax/operate_receive_address.jsx?_input_charset=UTF-8";
refere = "https://tradeconfig.1688.com/foundation/receive_address_manager.htm";
htmlx = GetPostTaobaoHtml.UploadTaobaoPost(url, refere, true, data);
}
#endregion
public void LoadSales()
{
SalesAmountTextBox.Text = SalesVolume;
UpShopProNumTextBoxX.Text = ShopProductNum;
}
private string GetCefHtml(ChromiumWebBrowser cefBrowser)
{
try
{
Task<string> task = cefBrowser.GetBrowser().MainFrame.GetSourceAsync();
task.Wait();
return task.Result;
}
catch
{
return "";
}
}
public string clickJsElementStr = "function getElement(txt, elem) {\r\n" +
" var child = document.body.firstElementChild;\r\n" +
" if (elem) child = elem\r\n" +
" var element1 = null;\r\n" +
" while (child) {\r\n" +
" if (child.innerHTML.indexOf(txt) >= 0) {\r\n" +
" element1 = child;\r\n" +
" if (child.firstElementChild) {\r\n" +
" child = child.firstElementChild; continue;\r\n" +
" } else break;\r\n" +
" }\r\n" +
" child = child.nextElementSibling;\r\n" +
" }\r\n" +
" if (element1) {\r\n" +
" return element1;\r\n" +
" } else return false;\r\n" +
"}\r\n";
}
}