Как получить квадратный инвентарь по артикулу, используя PHP? - PullRequest
0 голосов
/ 11 июля 2020

Я хочу получить все товары из Square Catalog.

Вот код:

require 'vendor/autoload.php';

use Square\SquareClient;
use Square\LocationsApi;
use Square\Exceptions\ApiException;
use Square\Http\ApiResponse;
use Square\Models\ListLocationsResponse;
use Square\Environment;


$client = new SquareClient([
    'accessToken' => '{{access_token}}',
    'environment' => Environment::SANDBOX,
]);


//Providing SKU
$object_ids = ['GFLR20L', '232GGGD'];
$body = new \Square\Models\BatchRetrieveCatalogObjectsRequest($object_ids);
$body->setIncludeRelatedObjects(true);

$api_response = $client->getCatalogApi()->batchRetrieveCatalogObjects($body);

if ($api_response->isSuccess()) {
    $result = $api_response->getResult();
} else {
    $errors = $api_response->getErrors();
}

Вывод:

object(Square\Models\BatchRetrieveCatalogObjectsResponse)#13 (3) 
{
  ["errors":"Square\Models\BatchRetrieveCatalogObjectsResponse":private] => NULL
  ["objects":"Square\Models\BatchRetrieveCatalogObjectsResponse":private] => NULL
  ["relatedObjects":"Square\Models\BatchRetrieveCatalogObjectsResponse":private] => NULL 
}

**> Предложения по размещению sjosey:

Мой PHP Код:

Ищу товары с названием Paper. **

$object_types = ['ITEM'];
$prefix_query = new \Square\Models\CatalogQueryPrefix('name', 'paper');

$query = new \Square\Models\CatalogQuery();
$query->setPrefixQuery($prefix_query);

> Сохранение значений здесь

$body = new \Square\Models\SearchCatalogObjectsRequest();
$body->setObjectTypes($object_types);
$body->setQuery($query);
$body->setLimit(100);

$api_response = $client->getCatalogApi()->searchCatalogObjects($body);

> Получение ответа API здесь

if ($api_response->isSuccess()) {
    $result = $api_response->getResult();
} else {
    $errors = $api_response->getErrors();
}

> Результат эха

var_dump($result);

Вот результат:

object(Square\Models\SearchCatalogObjectsResponse)#15 (5) { ["errors":"Square\Models\SearchCatalogObjectsResponse":private]=> NULL ["cursor":"Square\Models\SearchCatalogObjectsResponse":private]=> NULL ["objects":"Square\Models\SearchCatalogObjectsResponse":private]=> NULL ["relatedObjects":"Square\Models\SearchCatalogObjectsResponse":private]=> NULL ["latestTime":"Square\Models\SearchCatalogObjectsResponse":private]=> string(20) "1776-07-04T00:00:00Z" }

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Разобрался с решением. Следующие коды извлекают список всех продуктов по идентификатору продукта. Массив можно использовать для установки данных в соответствии с требованиями (по артикулу или чему угодно)

require 'vendor/autoload.php';

use Square\SquareClient;
use Square\LocationsApi;
use Square\Exceptions\ApiException;
use Square\Http\ApiResponse;
use Square\Models\ListLocationsResponse;
use Square\Environment;

$client = new SquareClient([
    'accessToken' => '{{access_token}}',
    'environment' => Environment::PRODUCTION,
]);


$bag = [];
$cursor = null;
$ctr = 1;

$api_response = $client->getCatalogApi()->listCatalog($cursor, 'ITEM');

if ($api_response->isSuccess()) {
    $result = $api_response->getResult();
} else {
    $errors = $api_response->getErrors();
}

$g1 = $result;
$g2 = json_encode($g1);
$g3 = json_decode($g2);
$cursor = $g3->cursor;
$objects = $g3->objects;
$g4 = json_encode($objects);
$g5 = json_decode($g4);

foreach($g5 as $g51){
    $bag[$g51->id] = $g51;
}





while($cursor != null){

$api_response2 = $client->getCatalogApi()->listCatalog($cursor, 'ITEM');

if ($api_response2->isSuccess()) {
    $result2 = $api_response2->getResult();
} else {
    $errors2 = $api_response2->getErrors();
}

$g6 = $result2;
$g7 = json_encode($g6);
$g8 = json_decode($g7);
$cursor = $g8->cursor;
$objects2 = $g8->objects;
$g9 = json_encode($objects2);
$g10 = json_decode($g9);

foreach($g10 as $g101){
    $bag[$g101->id] = $g101;
}

}



var_dump(count($bag));
0 голосов
/ 13 июля 2020

object_id s - это не то же самое, что SKU; это уникальные сгенерированные идентификаторы на стороне Square. Вместо этого для поиска по артикулу вы можете использовать конечную точку SearchCatalogObjects (POST / v2 / catalog / search). Пример запроса с использованием одного из ваших SKU будет выглядеть следующим образом:

{
  "query": {
    "exact_query": {
      "attribute_name": "sku",
      "attribute_value": "GFLR20L"
    }
  }
}

Он получит идентификаторы ваших объектов каталога, но если вас интересует инвентарь, вам все равно потребуется использовать другую конечную точку для получения инвентаря, например, RetrieveInventoryCount (который принимает catalog_object_id в качестве параметра).

...