LoginSignup
1
0

More than 5 years have passed since last update.

Squareの在庫を外部システムと連携させる

Posted at

Squareは元々カフェや美容院、雑貨屋などの小さな店舗で使えるレジを提供していたこともあり、リアル店舗とEコマースを連動させるオムニチャンネルが得意分野となっています。つまり店舗とWebサイトで在庫を調整し合わなければなりません。

それを可能にするのがWeb APIになります。今回はRubyを使ってSquareの在庫データを調整する方法を紹介します。

初期設定

利用するのはSquare Connectになります。RubyであればRubygemsでインストールできます。

$ gem install square_connect

そして初期化します。YOUR_ACCESS_TOKENは自分のものに読み替えてください。

require 'square_connect'

access_token = 'YOUR_ACCESS_TOKEN'

SquareConnect.configure do |config|
  config.access_token = access_token
end

在庫データの表示

まず在庫データを表示する方法です。これはv1のAPIを使う必要があります。店舗ID、商品IDがそれぞれ分かっていることとします。

location_id = 'YOUR_LOCATION_ID'

api = SquareConnect::V1ItemsApi.new

# 商品情報
item_response = api.retrieve_item(location_id, 'YOUR_ITEM_ID')

# 在庫情報
inventory_response = api.list_inventory(location_id)

# 引き合わせ
inventory_response.each {|i|
  item_response.variations.each {|v|
    next if v.id != i.variation_id
    puts "#{v.name} => #{i.quantity_on_hand}"
  }
}

このようなスクリプトで以下のような結果が返ってきます。それぞれのバリエーションに対する在庫数です。

バリエーション名 => 20.0
黒 => 20.0
白 => 20.0

在庫を調整する

そしてこの内の一つのバリエーションIDを指定して在庫調整を実行します。売れた場合はマイナスの数字で指定する(在庫を減らすという意味で)のがコツです。

response = api.adjust_inventory(location_id, 'YOUR_VALIATION_ID', {
  quantity_delta: -2,
  adjustment_type: 'SALE',
  memo: '他のシステムで販売'
})

この結果のレスポンスは次のようになります。quantity_on_handは新しい在庫数です。

{
  :variation_id=>"YOUR_VALIATION_ID",
  :quantity_on_hand=>18.0
}

あらかじめ外部システムにおける商品ID(またはSKUのID)とバリエーションIDを紐付けておかないといけないので注意してください。adjustment_typeはSALE(売れた場合)の他、RECEIVE_STOCK(在庫追加)、MANUAL_ADJUST(マニュアル調整)が用意されています。


このような操作で在庫数を調整できます。システム連携される際の参考にしてください。

Square Connect API Documentation

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0