Ruby
WebAPI
square

Square APIを使って商品を作成&削除する

More than 1 year has passed since last update.

Squareはデータをクラウドに持っていますので、APIを使って遠隔地にあるレジデータを操作できます。

今回は商品をAPIで作って、削除する流れを紹介します。言語はRubyを使います。

SDKの初期化

利用するのは square_connect というライブラリです。これはRubygemsでインストールできます。

$ gem install square_connect

そしてSquare Developer Portalで取得できるアクセストークンを使います。

access_token = 'YOUR_ACCESS_TOKEN'
require 'square_connect'
SquareConnect.configure do |config|
  config.access_token = access_token
end

店舗情報を取得する

商品を登録する際には店舗情報が必要です。そのため、まずは店舗情報を検索します。

locations_api = SquareConnect::LocationsApi.new
begin
  locations = locations_api.list_locations.locations
rescue SquareConnect::ApiError => e
  puts "店舗情報取得時にエラーが発生しました。 #{e.message}"
  return
end

location = locations.first

商品を登録する

店舗情報を取得したら、商品を登録します。この時、v2(バージョン2)のAPIにはカタログAPIが用意されていますが、v1(バージョン1)の商品APIで登録する方が確実です。v2で登録した商品を表示しようとすると、レジアプリが落ちてしまうことがあります。

基本的にはオプショナルなのですが、バリエーションデータは必要なようです。

api_instance = SquareConnect::V1ItemsApi.new

item = SquareConnect::V1Item.new(name: 'APIから追加')

variation = SquareConnect::V1Variation.new
variation.name = 'Black'
variation.price_money = SquareConnect::V1Money.new(amount: 100, currency_code: 'JPY')
item.variations = [variation]

begin
  item = api_instance.create_item(location.id, item)
rescue SquareConnect::ApiError => e
  puts "商品登録時にエラーです。 #{e}"
  exit
end

商品を削除する

商品を削除する場合は店舗のIDと商品IDの2つが必要になります。

api_instance.delete_item(location.id, item.id)

デモ

デモとして商品を登録後、20秒後に削除するというスクリプトを実行します。iPhoneのレジアプリの画面を出していますが、APIをコールして少しするとレジアプリの商品一覧にデータが反映されるのが分かります(動画は編集して待ち時間を省略しています)。

square-item-create-delete.mp4.gif

このように遠隔地にあるアプリを含めて情報をすばやく伝達できるのがSquare APIの良さではないでしょうか。更新ボタンを押したり、アプリを一度落としたりする必要もありません。

Square Connect API Documentation