#shopify-api #shopifysharp
#shopify-api #shopifysharp
Вопрос:
Раньше я мог устанавливать compare_at_price в значение null после того, как продукт поступил в продажу, но теперь я получаю сообщение об ошибке. Для этого используется библиотека ShopifySharp C # от NozzleGear.
Пример:
Цена была: 1000, сравните с 1200
Я хочу сбросить цену до 1200, а сравнить с 0.
(422 необработанных объекта) compare_at_price: сравнение по цене должно быть выше цены
Я не могу ни установить для него значение 0, так как мне отключить compare_at_price равным 0 или нулю или удалить его?
var variant = await productVariantService.UpdateAsync(product.VariantId.Value, new ProductVariant()
{
Price = updatePrice,
CompareAtPrice = updateCompareAtPrice
});
Ответ №1:
Кажется, есть ошибка, вот обходной путь…
https://github.com/nozzlegear/ShopifySharp/issues/373
Создайте и используйте нижеприведенный сервис
using System;
using System.Net.Http;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using ShopifySharp;
using ShopifySharp.Infrastructure;
public class ProductVariantServiceEx : ProductVariantService
{
public ProductVariantServiceEx(string myShopifyUrl, string shopAccessToken) : base(myShopifyUrl, shopAccessToken) { }
public virtual async Task<ProductVariant> UpdateAsync(long productVariantId, ProductVariant variant)
{
try
{
// BUGFIX: If variant.CompareAtPrice is set to 0, then force it to empty
string json = new JsonContent(new { variant }).ReadAsStringAsync().Resu<
if (json.Contains(""compare_at_price":0.00}")
|| json.Contains(""compare_at_price":0.00,"))
{
json = json.Replace(""compare_at_price":0.00", ""compare_at_price":""");
var req = PrepareRequest($"variants/{productVariantId}.json");
using var content = new StringContent(json, Encoding.UTF8, "application/json");
await Task.Run(() => Thread.Sleep(500));
return (await ExecuteRequestAsync<ProductVariant>(req, HttpMethod.Put, default, content, "variant")
.ConfigureAwait(false)).Resu<
}
return await base.UpdateAsync(productVariantId, variant);
}
catch (Exception)
{
return null;
}
}
}