Невозможно сбросить Shopify API сравнить по цене с помощью ShopifySharp

#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;
        }
    }
}