3428 lines
164 KiB
C#
3428 lines
164 KiB
C#
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]+?)¬ify_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(" ", "");
|
||
// }
|
||
// //检查现拍单的订单收货人信息是否正确,防止拍单的时候收货人信息错误。
|
||
// 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(" ", "");
|
||
|
||
}));
|
||
}
|
||
//检查现拍单的订单收货人信息是否正确,防止拍单的时候收货人信息错误。
|
||
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 + "×=" + 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 + "×=" + 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¤t_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¤t_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 + "×=" + 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";
|
||
}
|
||
}
|