Square APIでSquareの商品を登録するプログラムをPHPで作っています。
そのプログラムから商品を登録して、
ダッシュボードで確認すると在庫の追跡がオンになっていません。
ダッシュボードで商品を登録して在庫の追跡をオンにしてその商品をAPIで確認したところ、
[item_variation_data] => stdClass Object
(
[item_id] => XXXXXXXXXXXXXXXXXXXXXXXX
[name] => 商品A
[ordinal] => 1
[pricing_type] => FIXED_PRICING
[price_money] => stdClass Object
(
[amount] => 1000
[currency] => JPY
)
[location_overrides] => Array
(
[0] => stdClass Object
(
[location_id] => XXXXXXXXXXXXX
[track_inventory] => 1
)
)
[track_inventory] => 1
)
こちらのようになっていて、
item_variation_dataのtrack_inventoryをtrueにして、さらに
location_overridesのtrack_inventoryもtrueに設定すればいいとわかりました。
そこで以下のようなプログラムにしました。
[item_variation_data] => stdClass Object
(
[item_id] => XXXXXXXXXXXXXXXXXXXXXXXX
[name] => 商品A
[ordinal] => 1
[pricing_type] => FIXED_PRICING
[price_money] => stdClass Object
(
[amount] => 1000
[currency] => JPY
)
[location_overrides] => Array
(
[0] => stdClass Object
(
[location_id] => XXXXXXXXXXXXX
)
)
[track_inventory] => 1
)
のようになって、
item_variation_dataにはtrack_inventory属性が追加されてその値もtrueになりますが、
location_overridesのほうはlocation_idは自動で登録されるようですが
track_inventoryは属性名も値も何もありません。
ダッシュボードで商品を登録して在庫の追跡をオンにしたときと全く同じになるようにしたいので、
このlocation_overridesオブジェクトにtrack_inventoryが設定されるようにして
[location_overrides] => Array
(
[0] => stdClass Object
(
[location_id] => XXXXXXXXXXXXX
[track_inventory] => 1
)
)
となるようにしたいのです。
APIではこのlocation_overridesのtrack_inventoryの登録はできないのでしょうか。
APIで登録した商品がダッシュボードで在庫の追跡がオンになっていればいいのですが、
それにはitem_variation_dataのtrack_inventoryだけあればいいのでしょうか。
ショップは1つだけですのでlocation_overridesのほうは不要なのでしょうか。
どうぞよろしくお願いします。
本番環境では
location_overridesのtrack_inventoryはtrueになりました。
サンドボックスではlocation_overridesのsetTrackInventoryは有効ではないようです。
解決したようです。
何かお気付きになられたことなどありましたらご意見いただけると幸いです。
補足ですがAPIを動かしているのはサンドボックスです。
本番環境ではlocation_overridesのtrack_inventoryは登録されるかもしれないので試してみようと思いますが。
ItemVariationLocationOverrides.phpを見ると
public function setTrackInventory(?bool $trackInventory): void
{
$this->trackInventory = $trackInventory;
}
のようにtrackInventory設定のメソッドがあるようです。
本番環境では
location_overridesのtrack_inventoryはtrueになりました。
サンドボックスではlocation_overridesのsetTrackInventoryは有効ではないようです。
解決したようです。
何かお気付きになられたことなどありましたらご意見いただけると幸いです。
Square Community
Square Products