无法使用SquareConnect创建变体

时间:2018-10-16 20:38:50

标签: php square-connect

我正在使用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错误的请求。 调用V1ItemsApi-> createVariation时发生异常:[HTTP / 1.1 400 Bad Request] {“ type”:“ bad_request”,“ message”:“ BadRequest”}

我已经尝试过像文档一样传入空白的变体对象,但是它仍然无法正常工作。如何解决或诊断错误?

1 个答案:

答案 0 :(得分:0)

我使用的API的V1版本较旧。我发现这样做的OO方法实际上更聪明。以下是希望能帮助某人的代码段。

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);