You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
763 lines
25 KiB
C#
763 lines
25 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using NetLibrary.OnlineTrade;
|
|
using NetLibrary;
|
|
using System.Web.Script.Serialization;
|
|
|
|
namespace TradeManageNew
|
|
{
|
|
public class ShopeeApi
|
|
{
|
|
/// <summary>
|
|
/// 是否测试 默认false正式 false正式 true测试
|
|
/// </summary>
|
|
private bool IsTest = false;
|
|
|
|
public int Partner_Id = 0;
|
|
public string Partner_Key = "";
|
|
public int shopid = 0;
|
|
/// <summary>
|
|
/// 域名
|
|
/// </summary>
|
|
public string HostUrl = "";
|
|
//public ShopeeApi(bool isTest = false)
|
|
//{
|
|
// IsTest = isTest;
|
|
// if (!IsTest) {
|
|
// HostUrl = "https://partner.shopeemobile.com";
|
|
// Partner_Id = 846936;
|
|
// Partner_Key = "660400cc224f0cfef1fcd409f9ccfe57c507c3be9bf173592fc8c9bc01e6b150";
|
|
// }
|
|
// else {
|
|
// HostUrl = "https://partner.uat.shopeemobile.com";//测试
|
|
// Partner_Id = 845572;
|
|
// Partner_Key = "e2ff57deae953f738a160f74bbe29f4c4c37f475c77ebe0228b216c9f354a6ae";
|
|
// }
|
|
//}
|
|
|
|
/// token计算
|
|
/// </summary>
|
|
/// <param name="strData"></param>
|
|
/// <returns></returns>
|
|
public static string GetSHA256HashFromString(string strData) {
|
|
byte[] bytValue = System.Text.Encoding.UTF8.GetBytes(strData);
|
|
SHA256 sha256 = new SHA256CryptoServiceProvider();
|
|
|
|
byte[] retVal = sha256.ComputeHash(bytValue);
|
|
StringBuilder sb = new StringBuilder();
|
|
for (int i = 0; i < retVal.Length; i++) {
|
|
sb.Append(retVal[i].ToString("x2"));
|
|
}
|
|
return sb.ToString();
|
|
}
|
|
public static string CreateToken(string message, string secret)
|
|
{
|
|
secret = secret ?? "";
|
|
var encoding = new System.Text.UTF8Encoding();
|
|
byte[] keyByte = encoding.GetBytes(secret);
|
|
byte[] messageBytes = encoding.GetBytes(message);
|
|
using (var hmacsha256 = new HMACSHA256(keyByte))
|
|
{
|
|
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
|
|
StringBuilder builder = new StringBuilder();
|
|
for (int i = 0; i < hashmessage.Length; i++)
|
|
{
|
|
builder.Append(hashmessage[i].ToString("x2"));
|
|
}
|
|
return builder.ToString();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 生成签名
|
|
/// </summary>
|
|
public static string CreateSignature(string url, string data, string signKey) {
|
|
var str = url + "|" + data;
|
|
return HmacSHA256(str, signKey).ToLower();
|
|
}
|
|
|
|
/// 加密算法HmacSHA256
|
|
/// </summary>
|
|
/// <param name="secret"></param>
|
|
/// <param name="signKey"></param>
|
|
/// <returns></returns>
|
|
public static string HmacSHA256(string secret, string signKey) {
|
|
string signRet = string.Empty;
|
|
using (HMACSHA256 mac = new HMACSHA256(Encoding.UTF8.GetBytes(signKey))) {
|
|
byte[] hash = mac.ComputeHash(Encoding.UTF8.GetBytes(secret));
|
|
signRet = ToHexString(hash);
|
|
}
|
|
return signRet;
|
|
}
|
|
/// <summary>
|
|
/// byte[]转16进制格式string
|
|
/// </summary>
|
|
public static string ToHexString(byte[] bytes) {
|
|
string hexString = string.Empty;
|
|
if (bytes != null) {
|
|
StringBuilder strB = new StringBuilder();
|
|
foreach (byte b in bytes) {
|
|
strB.AppendFormat("{0:x2}", b);
|
|
}
|
|
hexString = strB.ToString();
|
|
}
|
|
return hexString;
|
|
}
|
|
|
|
#region 读取订单
|
|
public List<OrderModel> GetOrders(out string ErrorMessage)
|
|
{
|
|
string Url = "https://partner.shopeemobile.com/api/v1/orders/basics";
|
|
|
|
List<OrderModel> ListModel = new List<OrderModel>();
|
|
|
|
#region 设置市场所在地借口地址
|
|
//switch (country)
|
|
//{
|
|
// case "印尼":
|
|
// Url = "https://api.sellercenter.lazada.co.id";
|
|
// break;
|
|
// case "马来":
|
|
// Url = "https://api.sellercenter.lazada.com.my";
|
|
// break;
|
|
// case "泰国":
|
|
// Url = "https://api.sellercenter.lazada.co.th";
|
|
// break;
|
|
// case "菲律宾":
|
|
// Url = "https://api.sellercenter.lazada.com.ph";
|
|
// break;
|
|
// case "新加坡":
|
|
// Url = "https://api.sellercenter.lazada.sg";
|
|
// break;
|
|
// case "越南":
|
|
// Url = "https://api.sellercenter.lazada.vn";
|
|
// break;
|
|
|
|
//}
|
|
|
|
|
|
#endregion
|
|
|
|
var param = new Dictionary<string, object>();
|
|
param.Add("partner_id",Partner_Id);
|
|
param.Add("update_time_to", GetTimeStamp(DateTime.Now));
|
|
param.Add("update_time_from", GetTimeStamp(DateTime.Now.AddDays(-7)));
|
|
//param.Add("Status", "pending");
|
|
param.Add("shopid",shopid);
|
|
param.Add("pagination_offset", 0);
|
|
param.Add("timestamp",GetTimeStamp(DateTime.Now));
|
|
param.Add("pagination_entries_per_page",50);
|
|
|
|
string surl ="";
|
|
if (param != null)
|
|
{
|
|
foreach (var item in param)
|
|
{
|
|
surl += item.Key + "=" + item.Value + "&";
|
|
|
|
}
|
|
}
|
|
surl = surl.TrimEnd('&');
|
|
var JsonConvert = new JavaScriptSerializer();
|
|
|
|
var sign = CreateSignature(Url, JsonConvert.Serialize(param), Partner_Key);
|
|
string postmessage = JsonConvert.Serialize(param);
|
|
List<string> ListHeader = new List<string>();
|
|
ListHeader.Add("Authorization:" + sign);
|
|
//string sss = postmessage.Substring(1087, 50);
|
|
UTF8Encoding encoding = new UTF8Encoding();
|
|
byte[] data = encoding.GetBytes(postmessage);
|
|
|
|
string XmlContent = CustomIO.HttpRequest2(Url, "Post", "application/json;charset=UTF-8", ListHeader, System.Net.HttpVersion.Version10, data, out ErrorMessage);
|
|
if (string.IsNullOrEmpty(ErrorMessage) == false)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
var smd = JsonConvert.Deserialize<ShopeeOrdersRoot>(XmlContent);
|
|
bool flag = false;
|
|
if(smd!=null&&smd.more==true)
|
|
flag = true;
|
|
if (smd != null && smd.orders!=null)
|
|
{
|
|
List<string> olist = new List<string>();
|
|
foreach (var omd in smd.orders)
|
|
{
|
|
if (omd.order_status == "READY_TO_SHIP")
|
|
{
|
|
olist.Add(omd.ordersn);
|
|
}
|
|
}
|
|
var dlist=GetOrdersdetail(olist, out ErrorMessage);
|
|
if (dlist != null)
|
|
{
|
|
foreach (var dmd in dlist)
|
|
{
|
|
ListModel.Add(dmd);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
int pagination_offset = 0;
|
|
while (flag)
|
|
{
|
|
pagination_offset += 50;
|
|
param = new Dictionary<string, object>();
|
|
param.Add("partner_id", Partner_Id);
|
|
param.Add("update_time_to", GetTimeStamp(DateTime.Now));
|
|
param.Add("update_time_from", GetTimeStamp(DateTime.Now.AddDays(-7)));
|
|
//param.Add("Status", "pending");
|
|
param.Add("shopid", shopid);
|
|
param.Add("pagination_offset", pagination_offset);
|
|
param.Add("timestamp", GetTimeStamp(DateTime.Now));
|
|
param.Add("pagination_entries_per_page", 50);
|
|
|
|
surl = "";
|
|
if (param != null)
|
|
{
|
|
foreach (var item in param)
|
|
{
|
|
surl += item.Key + "=" + item.Value + "&";
|
|
|
|
}
|
|
}
|
|
surl = surl.TrimEnd('&');
|
|
|
|
sign = CreateSignature(Url, JsonConvert.Serialize(param), Partner_Key);
|
|
postmessage = JsonConvert.Serialize(param);
|
|
ListHeader = new List<string>();
|
|
ListHeader.Add("Authorization:" + sign);
|
|
//string sss = postmessage.Substring(1087, 50);
|
|
|
|
data = encoding.GetBytes(postmessage);
|
|
|
|
XmlContent = CustomIO.HttpRequest2(Url, "Post", "application/json;charset=UTF-8", ListHeader, System.Net.HttpVersion.Version10, data, out ErrorMessage);
|
|
smd = JsonConvert.Deserialize<ShopeeOrdersRoot>(XmlContent);
|
|
flag = false;
|
|
if (smd != null && smd.more == true)
|
|
flag = true;
|
|
if (smd != null && smd.orders != null)
|
|
{
|
|
List<string> olist = new List<string>();
|
|
foreach (var omd in smd.orders)
|
|
{
|
|
if (omd.order_status == "READY_TO_SHIP")
|
|
{
|
|
olist.Add(omd.ordersn);
|
|
}
|
|
}
|
|
var dlist = GetOrdersdetail(olist, out ErrorMessage);
|
|
if (dlist != null)
|
|
{
|
|
foreach (var dmd in dlist)
|
|
{
|
|
ListModel.Add(dmd);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
return ListModel;
|
|
}
|
|
#endregion
|
|
/// <summary>
|
|
/// 时间戳转为C#格式时间
|
|
/// </summary>
|
|
/// <param name="timeStamp">Unix时间戳格式</param>
|
|
/// <returns>C#格式时间</returns>
|
|
public static DateTime GetStampTimeToDate(string timeStamp)
|
|
{
|
|
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
|
|
long lTime = long.Parse(timeStamp + "0000000");
|
|
TimeSpan toNow = new TimeSpan(lTime);
|
|
return dtStart.Add(toNow);
|
|
}
|
|
#region 读取订单
|
|
public List<OrderModel> GetOrdersdetail(List<string> olist,out string ErrorMessage)
|
|
{
|
|
string Url = "https://partner.shopeemobile.com/api/v1/orders/detail";
|
|
|
|
List<OrderModel> ListModel = new List<OrderModel>();
|
|
|
|
|
|
|
|
var param = new Dictionary<string, object>();
|
|
// List<string> os = new List<string>();
|
|
// os.Add("210225SWK6PJP8");
|
|
param.Add("ordersn_list", olist);
|
|
param.Add("partner_id", Partner_Id);
|
|
|
|
param.Add("shopid", shopid);
|
|
param.Add("timestamp", GetTimeStamp(DateTime.Now));
|
|
|
|
|
|
string surl = "";
|
|
if (param != null)
|
|
{
|
|
foreach (var item in param)
|
|
{
|
|
surl += item.Key + "=" + item.Value + "&";
|
|
|
|
}
|
|
}
|
|
surl = surl.TrimEnd('&');
|
|
var JsonConvert = new JavaScriptSerializer();
|
|
|
|
var sign = CreateSignature(Url, JsonConvert.Serialize(param), Partner_Key);
|
|
string postmessage = JsonConvert.Serialize(param);
|
|
List<string> ListHeader = new List<string>();
|
|
ListHeader.Add("Authorization:" + sign);
|
|
//string sss = postmessage.Substring(1087, 50);
|
|
UTF8Encoding encoding = new UTF8Encoding();
|
|
byte[] data = encoding.GetBytes(postmessage);
|
|
|
|
string XmlContent = CustomIO.HttpRequest2(Url, "Post", "application/json;charset=UTF-8", ListHeader, System.Net.HttpVersion.Version10, data, out ErrorMessage);
|
|
if (string.IsNullOrEmpty(ErrorMessage) == false)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
var smd = JsonConvert.Deserialize<ShopeeRoot>(XmlContent);
|
|
if (smd != null)
|
|
{
|
|
if (smd.orders != null)
|
|
{
|
|
foreach (var ordermd in smd.orders)
|
|
{
|
|
OrderModel model = new OrderModel();
|
|
model.OrderCode = ordermd.ordersn.ToString();
|
|
//if (model.OrderCode == "190206133129H0M")
|
|
//{
|
|
// string a = "1";
|
|
//}
|
|
model.TotalPrice = Convert.ToDecimal(ordermd.total_amount);
|
|
model.MoneyCode = ordermd.currency;
|
|
model.OrderDate = GetStampTimeToDate(ordermd.create_time.ToString());
|
|
model.BuyerID = "";
|
|
|
|
model.OrderState = 2;
|
|
if (ordermd.recipient_address != null)
|
|
model.BuyerName = ordermd.recipient_address.name;
|
|
if (ordermd.recipient_address != null)
|
|
model.BuyerCountry = ordermd.recipient_address.country;
|
|
if (model.BuyerCountry == null || model.BuyerCountry == "")
|
|
model.BuyerCountry = ordermd.country;
|
|
if (ordermd.recipient_address != null)
|
|
model.BuyerAddr = ordermd.recipient_address.full_address;
|
|
|
|
model.BuyerPhone = "";
|
|
|
|
model.BuyerPhone = ordermd.recipient_address.phone;
|
|
|
|
model.BuyerMobile = "";
|
|
|
|
model.BuyerMail = "";
|
|
//model.logisticsAmount =ordermd.buyerInfo.logisticsAmount;
|
|
if (ordermd.escrow_tax != null)
|
|
{
|
|
model.escrowFee = Convert.ToDecimal(ordermd.escrow_tax);
|
|
// model.TotalPrice = Convert.ToDecimal(ordermd.escrow_amount);
|
|
}
|
|
if (ordermd.escrow_amount != null && ordermd.escrow_amount != "")
|
|
model.TotalPrice = Convert.ToDecimal(ordermd.escrow_amount);
|
|
model.BuyerFax = "";
|
|
if (ordermd.recipient_address != null)
|
|
model.BuyerZip = ordermd.recipient_address.zipcode;
|
|
if (ordermd.recipient_address != null)
|
|
model.BuyerProvince = ordermd.recipient_address.state;
|
|
if (ordermd.recipient_address != null)
|
|
model.BuyerCity = ordermd.recipient_address.city;
|
|
if (ordermd.recipient_address != null)
|
|
model.BuyerArea = ordermd.recipient_address.district;
|
|
model.OrderRemark = ""; //memo
|
|
model.LeaveWord = ordermd.message_to_seller;
|
|
|
|
model.PayDate = model.OrderDate;
|
|
model.OutOrderDate = model.OrderDate.Value.AddDays(7);
|
|
if (ordermd.days_to_ship != null)
|
|
model.OutOrderDate = model.OrderDate.Value.AddDays(ordermd.days_to_ship.Value);
|
|
model.PostInfo = ordermd.shipping_carrier;
|
|
model.ListModel = new List<OrderDetailModel>();
|
|
|
|
if (ordermd.items != null)
|
|
{
|
|
foreach (var item2 in ordermd.items)
|
|
{
|
|
|
|
|
|
OrderDetailModel model2 = new OrderDetailModel();
|
|
// {"item_name":"Adjustable Kids Safety Harness Wrist Leash Anti-lost Link","item_sku":"\tZHI049","variation_discounted_price":"7.74","variation_id":320874188,"variation_name":"Blue, 250CM","item_id":418147192,
|
|
|
|
|
|
// "variation_quantity_purchased":1,"variation_sku":"\tZHI049","variation_original_price":"8.60"
|
|
model2.TypeDesc = item2.variation_sku;
|
|
model2.productImgUrl = "";
|
|
model2.GoodsNum = item2.variation_quantity_purchased;
|
|
if (item2.variation_original_price != null)
|
|
model2.GoodsPrice = Convert.ToDecimal(item2.variation_original_price);
|
|
model2.MoneyCode = "";
|
|
model2.GoodsName = item2.item_name + " " + item2.variation_name;
|
|
model2.GoodsSKU = item2.variation_sku;
|
|
model2.PostInfo = "";
|
|
model.ListModel.Add(model2);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
ListModel.Add(model);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return ListModel;
|
|
}
|
|
#endregion
|
|
|
|
private int GetTimeStamp(DateTime dt)
|
|
{
|
|
DateTime dateStart = new DateTime(1970, 1, 1, 8, 0, 0);
|
|
int timeStamp = Convert.ToInt32((dt - dateStart).TotalSeconds);
|
|
return timeStamp;
|
|
}
|
|
}
|
|
|
|
public class Recipient_address
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string town { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string city { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string name { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string district { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string country { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string zipcode { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string full_address { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string phone { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string state { get; set; }
|
|
}
|
|
|
|
public class Items
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string group_id { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public double weight { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string item_name { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public bool? is_wholesale { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string promotion_type { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string item_sku { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string variation_discounted_price { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string variation_id { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string variation_name { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public bool? is_set_item { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public bool? is_add_on_deal { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string item_id { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string promotion_id { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string add_on_deal_id { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public Int32? variation_quantity_purchased { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string variation_sku { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string variation_original_price { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public bool? is_main_item { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string order_item_id { get; set; }
|
|
}
|
|
|
|
public class ShopeeOrdersDeatil
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string estimated_shipping_fee { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string order_flag { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string payment_method { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public long? update_time { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string message_to_seller { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string shipping_carrier { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string currency { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public long? create_time { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public long? pay_time { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string note { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string credit_card_number { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public int? days_to_ship { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public bool? is_split_up { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public int? ship_by_date { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string escrow_tax { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string tracking_no { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string order_status { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public long? note_update_time { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string fm_tn { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string dropshipper_phone { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string cancel_reason { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string checkout_shipping_carrier { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public Recipient_address recipient_address { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string cancel_by { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string escrow_amount { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string buyer_cancel_reason { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public bool? goods_to_declare { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string lm_tn { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string total_amount { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string service_code { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public List<Items> items { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string actual_shipping_cost { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public bool? cod { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string country { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string ordersn { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string dropshipper { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public bool? is_actual_shipping_fee_confirmed { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string buyer_username { get; set; }
|
|
}
|
|
|
|
public class ShopeeRoot
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public List<string> errors { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public List<ShopeeOrdersDeatil> orders { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string request_id { get; set; }
|
|
}
|
|
public class ShopeeOrders
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string ordersn { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string order_status { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public int update_time { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public bool is_actual_shipping_fee_confirmed { get; set; }
|
|
}
|
|
|
|
public class ShopeeOrdersRoot
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public string request_id { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public List<ShopeeOrders> orders { get; set; }
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public bool more { get; set; }
|
|
}
|
|
|
|
} |