【问题标题】:Cannot Create Variant with SquareConnect无法使用 SquareConnect 创建变体
【发布时间】:2018-10-18 03:32:20
【问题描述】:

使用 SquareConnect 的 PHP Sdk,我正在尝试使用他们的 API 创建一个非常基本的变体产品。

`

require('connect-php-sdk-master/autoload.php');
$access_token="SECRETACCESS TOKEN";
$location_id="LOCATION ID"; //only need the one
// Configure OAuth2 access token for authorization: oauth2
SquareConnect\Configuration::getDefaultConfiguration()->setAccessToken($access_token);

$api_instance = new SquareConnect\Api\CatalogApi();
$object_id = "OBJECTIDTHATWORKS"; // string 
$include_related_objects = true; // 

//print out the objectid.  Works perfectly!
try {
   $result = $api_instance->retrieveCatalogObject($object_id,$include_related_objects);
print_r($result);
} catch (Exception $e) {
echo 'Exception when calling CatalogApi->retrieveCatalogObject: ', $e->getMessage(), PHP_EOL;
}

//now create the variant and it will fail

    $var_api = new \SquareConnect\Api\V1ItemsApi();
    $variation = new \SquareConnect\Model\V1Variation(); // \SquareConnect\Model\V1Variation | An object containing the fields to POST for the request.  See the corresponding object definition for field details.
    $variation->setName("JERSUB");
    $variation->setSku("JERSUPPERSKU");



      try {
          $meresult = $var_api->createVariation($location_id, $object_id, $variation);
          print_r($meresult);
      } catch (Exception $e) {
          echo 'Exception when calling V1ItemsApi->createVariation: ', $e->getMessage(), PHP_EOL;
      }

`

无论我做什么,我总是收到 400 Bad 请求。 调用 V1ItemsApi->createVariation 时出现异常:[HTTP/1.1 400 Bad Request] {"type":"bad_request","message":"BadRequest"}

我尝试过像文档一样传入一个空白的变体对象,但它仍然不起作用。如何绕过或诊断错误?

【问题讨论】:

  • 您拨打了两次createVariation$id 似乎未定义。这是预期的行为吗?
  • 我已经修复了代码。这是我错误复制的测试代码的 sn-p。但是,错误仍然存​​在。

标签: php square-connect


【解决方案1】:

我使用的是较旧的 V1 版本的 API。我发现了一种实际上更聪明的 OO 方式。下面是一个希望对某人有所帮助的 sn-p。

require('connect-php-sdk-master/autoload.php');
$access_token="SECRETACCESS TOKEN";
$location_id="LOCATION ID"; //only need the one
// Configure OAuth2 access token for authorization: oauth2
SquareConnect\Configuration::getDefaultConfiguration()->setAccessToken($access_token);

$api_instance = new SquareConnect\Api\CatalogApi();
$object_id = "OBJECTIDTHATWORKS"; // string 
$include_related_objects = true; // 

try {
   $result = $api_instance->retrieveCatalogObject($object_id,$include_related_objects);
   print_r($result);
} catch (Exception $e) {
  echo 'Exception when calling CatalogApi->retrieveCatalogObject: ', $e->getMessage(), PHP_EOL;
}
$clone=$results[0];
$clone->setId("#TEMP123"); //change it to a temp id
$clone->setType("ITEM_VARIATION");
$id=$clone->getId();
$var_data=$clone->getItemVariationData();
//now clear/update the cloned object
$var_data->setName(UPC_FIELD_NAME);
$var_data->setSku("SUPPERSKU_TEST2"); //update sku
$var_data->setPricingType("VARIABLE_PRICING");
$var_data->setTrackInventory(null);
$var_data->setLocationOverrides(null); //got to remove location ovverides or it will track.
$var_data->setPriceMoney(null);
$clone->setItemVariationData($var_data);
//upsert it
$upsert=new \SquareConnect\Model\UpsertCatalogObjectRequest();
//set unique key
$upsert->setIdempotencyKey(md5(time()));
$upsert->setObject($clone);
//fire the update
$update_result=$api_instance->upsertCatalogObject($upsert);

【讨论】:

    猜你喜欢
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多