Shopify API возвращает пустую корзину - PullRequest
0 голосов
/ 11 ноября 2018

Используя этот API: https://help.shopify.com/en/themes/development/getting-started/using-ajax-api#add-to-cart

С моего бота-мессенджера я звоню cart/add.js несколько раз с variant id и quantity, и он возвращает сообщение об успехе, но я звоню cart.js, чтобы получить товары, корзина всегда пуста.

Я добавляю товары в корзину следующим образом:

$cartAPI = 'https://'.$shopKey.':'.$shopSecret.'@'.$shopUrl.'/cart/add.js';
$request = $client->request('POST', $cartAPI, [
      'form_params' => [
          'id'        => (int) $productID,
           'quantity' => 1
       ]
]);

И извлекаем корзину вот так:

$cartAPI = 'https://'.$shopKey.':'.$shopSecret.'@'.$shopUrl.'/cart.js';
$request = $client->get($cartAPI);

Я пытался включить куки в вызов Guzzle, вот так $this->client = new Client(['cookies' => true]); и оба вызова используют один и тот же экземпляр клиента, но он по-прежнему возвращает пустую корзину.

Я не использую CloudFlare или какой-либо механизм кэширования для этого.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Решение Я разобрался здесь для тех, у кого такая же проблема. Мне нужно было использовать печенье cart. Закончилось делать что-то вроде:

$cartCookie = Cache::tags(['user:' .$userId, 'cookies'])->get('cart');

if (!$cartCookie) {
    $client  = new Client(['cookies' => true]);
} else {
    $cookieJar = CookieJar::fromArray([
        'cart' => $cartCookie,
    ], conf('shop.url'));
    $client = new Client(['cookies' => $cookieJar]);
}

Cookie сохраняется в кеше, когда пользователь впервые добавляет товар в корзину и используется для периодических добавлений. Мне пришлось поместить его в Cache, так как я создаю чат-бота, но вы можете просто использовать куки из вашего браузера.

0 голосов
/ 12 ноября 2018

Вы делаете что-то не так. Зачем вам звонить в Shopify с ключом и секретом? Вы не продаете себя немного коротким здесь? Я имею в виду, если бы я изучил ваш исходный код и увидел ключ и секрет, я смог бы использовать это, чтобы делать все, что я хочу. Это цель здесь? Разрешить кому-нибудь в Интернете заставить вас выглядеть глупо? Shopify имеет кнопку, которую вы можете разместить в любом месте, чтобы добавить товары в корзину. Вы можете использовать это. Это безопасно.

...