【问题标题】:Adding item to Square via SquareConnect PHP API -- 'category' and 'fees' defs being excluded通过 SquareConnect PHP API 将项目添加到 Square - 'category' 和 'fees' defs 被排除在外
【发布时间】:2018-03-02 02:49:24
【问题描述】:

SquareConnect API 新手在这里。

我正在尝试使用 PHP 方法向 Square 添加一个项目:

$api_instance = new SquareConnect\Api\V1ItemsApi();
$body = new \SquareConnect\Model\V1Item($request_body);
$result = $api_instance->createItem($location_id, $body);

我的 request_body 定义:

$request_body = array( 
  "name" => "**ITEM NAME**",
  "description" => "**ITEM DESCRIPTION**",
  "category" => array(
      "id" => "**CATEGORY ID**",
      "name" => "**CATEGORY NAME**"
  ),
  "variations" => array( 
      array( 
          "name" => "**VARIATION NAME**", 
          "sku" => "**SKU**",
          "pricing_type" => "FIXED_PRICING", 
          "price_money" => array( 
              "currency_code" => "USD", 
              "amount" => "**AMOUNT**"
          ) 
      ) 
  ),
  "fees" => array(
    "enabled" => "1",
    "name" => "Sales Tax",
    "rate" => "0.0775",
    "calculation_phase" => "FEE_SUBTOTAL_PHASE",
    "adjustment_type" => "TAX",
    "inclusion_type" => "ADDITIVE",
    "type" => "US_SALES_TAX"
  )
);

商品和变体数据正在添加到 Square,但不包括“类别”和“费用”定义。结果,该项目最终出现在平面空间中,这需要我登录 Square 主界面,将项目添加到适当的类别并设置其税务信息。如果可以避免,我不想采取这些额外的步骤。

“费用”部分中的税务信息是从通过 Square 界面添加的项目中找到的定义逐字获取的。我已确认并再次确认类别 ID 和类别名称与所需类别的匹配。我还尝试用简单的“category_id”=>“CATEGORY ID”定义替换“category”数组。结果一样。

有人可以帮忙吗?另外,如果有更好的方法通过 API 将物品添加到 Square,请告诉我!

提前谢谢你。

【问题讨论】:

    标签: php square-connect


    【解决方案1】:

    第一部分,类别

    如果您查看docs 关于在项目创建期间指定项目类别:

    您正在指定一个数组:

      "category" => array(
          "id" => "**CATEGORY ID**",
          "name" => "**CATEGORY NAME**"
      ),
    

    你应该改用字符串:

      "category" => "**CATEGORY ID**",
    

    第二部分,费用

    如果您再次查看文档,您将不会在 V1 项目创建中看到任何关于费用的参考。那是因为您无法使用该端点创建费用。相反,您应该create a new fee。你可以在这里看到一些示例代码:https://github.com/square/connect-php-sdk/blob/master/docs/Api/V1ItemsApi.md#createfee

    【讨论】:

    • 感谢您的回复。正如我在最初的帖子中提到的,我尝试使用 category_id = (string)。我也尝试使用您在示例中的“类别”。没有运气。
    • 关于费用,我的位置的费用已经创建好了。我只需要将项目与费用相关联。或物品费用。
    • 您需要输入实际的类别ID。请根据您的确切要求编辑您的答案。
    • 另一个类似的问题。我无法将项目定义为 PUBLIC: "visibility" => "PUBLIC" 特别奇怪的是,当我 print_r createItem 命令的结果时,该项目显示为 PUBLIC ...但是当我执行随后的 listItems 它是 PRIVATE。
    • request_body 和上图一样,但是... "category" => array( "id" => "CATEGORY ID", "name" => " CATEGORY NAME" ),...已替换为... "category_id" => "CATEGORY ID" 不走运。它没有将项目与类别相关联。
    【解决方案2】:

    我将专注于 category_id,因为您似乎已经根据 cmets 找出了“费用”问题。

    我只是用这个作为测试代码,类别设置成功:

      $items_api = new \SquareConnect\Api\V1ItemsApi();
    
      $body = array(
        "name" => "Test Item",
        "category_id" => "YFIHMKYXNFJ7TE5FRBWQAGU6",
        "variations" => array(
            array(
            "name" => "Small",
            "pricing_type" => "FIXED_PRICING",
            "price_money" => array(
                "amount" => 100,
                "currency_code" => "USD"
            )
        ))
      );
    
      $result = $items_api->createItem($location_id, $body);
      echo $result;
    

    Location_id 是之前创建的,但其他所有内容都在那里。

    【讨论】:

    • 感谢您的回复。不幸的是,无论出于何种原因,我无法通过 V1ItemsApi 设置 category_id。但是,当我通过 CatalogApi 创建项目时,它确实有效,所以我改用该过程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2018-09-14
    • 2012-11-20
    相关资源
    最近更新 更多