Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

goofmint
MOONGIFT CEO. ニフクラ mobile backend、hifiveエバンジェリスト
https://www.moongift.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした