/// <summary> /// 修改还未标记为发货的订单的收货信息 (异步) /// </summary> /// <param name="accessToken"></param> /// <param name="orderId"></param> /// <param name="streetAddress1"></param> /// <param name="city"></param> /// <param name="zipCode"></param> /// <param name="country"></param> /// <param name="streetAddress2"></param> /// <param name="state"></param> /// <param name="phoneNumber"></param> /// <param name="sessionType"></param> /// <returns></returns> public static async Task <OrderResultBase> OrderNotShippedModifyShippingInformationAsync(string clientId, string accessToken, string orderId, string streetAddress1, string city, string zipCode, string country, string streetAddress2 = null, string state = null, string phoneNumber = null, SessionType sessionType = SessionType.Prod) { return(await ApiHandlerWrapper.TryCommonApiAsync(token => { var url = string.Format("{0}/api/v2/order/change-shipping", sessionType == SessionType.Sandbox ? Wl.Wish.Config.RequestUriRootSandbox : Wl.Wish.Config.RequestUriRoot); var data = new { id = orderId, street_address1 = streetAddress1, city = city, zipcode = zipCode, country = country, street_address2 = streetAddress2, state = state, phone_number = phoneNumber }; var result = CommonJsonSend.SendAsync <OrderResultBase>(token, url, data, CommonJsonSendType.POST); return result; }, clientId, accessToken, sessionType)); }
/// <summary> /// 添加一个商品规格 /// /// 原始文档 /// https://www.merchant.wish.com/documentation/api/v2#create-product-variation /// /// variant参数 => /// parent_sku, /// sku, /// inventory, /// price, /// shipping, /// color 可空, /// size 可空, /// msrp 可空, /// shipping_time 可空, /// main_image 可空 /// </summary> /// <param name="accessToken"></param> /// <param name="variant"></param> /// <param name="sessionType"></param> /// <returns></returns> public static VariantResult ProductVariantCreate(string clientId, string accessToken, Wl.Wish.Entities.Request.Variant variant, SessionType sessionType = SessionType.Prod) { return(ApiHandlerWrapper.TryCommonApi(token => { var url = string.Format("{0}/api/v2/variant/add", sessionType == SessionType.Sandbox ? Wl.Wish.Config.RequestUriRootSandbox : Wl.Wish.Config.RequestUriRoot); var result = CommonJsonSend.Send <VariantResult>(token, url, variant, CommonJsonSendType.POST); return result; }, clientId, accessToken, sessionType)); }
/// <summary> /// 取消商品下载任务 /// /// 原始文档 /// https://www.merchant.wish.com/documentation/api/v2#product-cancel-download-job /// </summary> /// <param name="accessToken"></param> /// <param name="jobId"></param> /// <param name="sessionType"></param> /// <returns></returns> public static ProductDownloadTask ProductDownloadTaskCancel(string clientId, string accessToken, string jobId, SessionType sessionType = SessionType.Prod) { return(ApiHandlerWrapper.TryCommonApi(token => { var url = string.Format("{0}/api/v2/product/cancel-download-job", sessionType == SessionType.Sandbox ? Wl.Wish.Config.RequestUriRootSandbox : Wl.Wish.Config.RequestUriRoot); var data = new { job_id = jobId }; var result = CommonJsonSend.Send <ProductDownloadTask>(token, url, data, CommonJsonSendType.POST); return result; }, clientId, accessToken, sessionType)); }
/// <summary> /// 查询商品下载任务的状态 (异步) /// </summary> /// <param name="accessToken"></param> /// <param name="jobId"></param> /// <param name="sessionType"></param> /// <returns></returns> public static async Task <ProductDownloadTask> ProductDownloadTaskStatusQueryAsync(string clientId, string accessToken, string jobId, SessionType sessionType = SessionType.Prod) { return(await ApiHandlerWrapper.TryCommonApiAsync(token => { var url = string.Format("{0}/api/v2/product/get-download-job-status", sessionType == SessionType.Sandbox ? Wl.Wish.Config.RequestUriRootSandbox : Wl.Wish.Config.RequestUriRoot); var data = new { job_id = jobId }; var result = CommonJsonSend.SendAsync <ProductDownloadTask>(token, url, data, CommonJsonSendType.POST); return result; }, clientId, accessToken, sessionType)); }
/// <summary> /// 获取订单(异步) /// </summary> /// <param name="accessToken"></param> /// <param name="orderId"></param> /// <param name="sessionType"></param> /// <returns></returns> public static async Task <OrderResult> OrderRetrieveAsync(string clientId, string accessToken, string orderId, SessionType sessionType = SessionType.Prod) { return(await ApiHandlerWrapper.TryCommonApiAsync(token => { var url = string.Format("{0}/api/v2/order", sessionType == SessionType.Sandbox ? Wl.Wish.Config.RequestUriRootSandbox : Wl.Wish.Config.RequestUriRoot); var data = new { id = orderId }; var result = CommonJsonSend.SendAsync <OrderResult>(token, url, data, CommonJsonSendType.GET); return result; }, clientId, accessToken, sessionType)); }
/// <summary> /// 禁用一个商品规格 (异步) /// </summary> /// <param name="accessToken"></param> /// <param name="sku"></param> /// <param name="sessionType"></param> /// <returns></returns> public static async Task <VariantResultBase> ProductVariantDisableAsync(string clientId, string accessToken, string sku, SessionType sessionType = SessionType.Prod) { return(await ApiHandlerWrapper.TryCommonApiAsync(token => { var url = string.Format("{0}/api/v2/variant/disable", sessionType == SessionType.Sandbox ? Wl.Wish.Config.RequestUriRootSandbox : Wl.Wish.Config.RequestUriRoot); var data = new { sku = sku }; var result = CommonJsonSend.SendAsync <VariantResultBase>(token, url, data, CommonJsonSendType.POST); return result; }, clientId, accessToken, sessionType)); }
/// <summary> /// 开始批量下载商品的任务 /// /// 原始文档 /// /// https://www.merchant.wish.com/documentation/api/v2#product-create-download-job /// /// </summary> /// <param name="accessToken"></param> /// <param name="sinceDate"></param> /// <param name="limitNum"></param> /// <param name="sortString"></param> /// <param name="sessionType"></param> /// <returns></returns> public static ProductDownloadTask ProductDownloadTaskStart(string clientId, string accessToken, string sinceDate, int?limitNum, string sortString, SessionType sessionType = SessionType.Prod) { return(ApiHandlerWrapper.TryCommonApi(token => { var url = string.Format("{0}/api/v2/product/create-download-job", sessionType == SessionType.Sandbox ? Wl.Wish.Config.RequestUriRootSandbox : Wl.Wish.Config.RequestUriRoot); var data = new { since = sinceDate, limit = limitNum }; var result = CommonJsonSend.Send <ProductDownloadTask>(token, url, data, CommonJsonSendType.POST); return result; }, clientId, accessToken, sessionType)); }
/// <summary> /// 获取所有商品规格数据 /// </summary> /// <param name="accessToken"></param> /// <param name="start">起始</param> /// <param name="limit">限制</param> /// <param name="sessionType"></param> /// <returns></returns> public static async Task <VariantList> ProductVariantListAllAsync(string clientId, string accessToken, int start = 0, int limit = 50, SessionType sessionType = SessionType.Prod) { return(await ApiHandlerWrapper.TryCommonApiAsync(token => { var url = string.Format("{0}/api/v2/variant/multi-get", sessionType == SessionType.Sandbox ? Wl.Wish.Config.RequestUriRootSandbox : Wl.Wish.Config.RequestUriRoot); var data = new { start = start, limit = limit }; var result = CommonJsonSend.SendAsync <VariantList>(token, url, data, CommonJsonSendType.GET); return result; }, clientId, accessToken, sessionType)); }
/// <summary> /// 更新商品规格的库存数量 /// 原始文档 /// https://www.merchant.wish.com/documentation/api/v2#update-product-variation-inventory /// </summary> /// <param name="accessToken"></param> /// <param name="sku"></param> /// <param name="inventory"></param> /// <param name="sessionType"></param> /// <returns></returns> public static VariantResultBase ProductVariantInventoryUpdate(string clientId, string accessToken, string sku, int inventory, SessionType sessionType = SessionType.Prod) { return(ApiHandlerWrapper.TryCommonApi(token => { var url = string.Format("{0}/api/v2/variant/update-inventory", sessionType == SessionType.Sandbox ? Wl.Wish.Config.RequestUriRootSandbox : Wl.Wish.Config.RequestUriRoot); var data = new { sku = sku, inventory = inventory }; var result = CommonJsonSend.Send <VariantResultBase>(token, url, data, CommonJsonSendType.POST); return result; }, clientId, accessToken, sessionType)); }