YahooStoreApi
Yahoo!ショッピング プロフェッショナル出店ストア向けAPIを簡単に叩けるrubyラッパーです。
現在開発中です🐛 まだ商品情報のCRUDと在庫情報の取得・更新、反映予約しかできません。順次機能追加をしていきたいと思います。
できること
- 商品に関連するAPI
- 商品参照API(
get_item
) - 商品登録API(
set_item
) - 商品削除API(
delete_item
)
- 商品参照API(
- 在庫に関連するAPI
- 在庫参照API(
get_stock
) - 在庫更新API(
set_stock
)
- 在庫参照API(
- 出品管理に関連するAPI
- 全反映予約API(
reserve_publish
)
- 全反映予約API(
Installation
Add this line to your application's Gemfile:
gem 'yahoo_store_api'
事前準備
事前にストア出品アカウントと連携した認証コードが必要になります。
まず、YahooデベロッパーネットワークのYahoo!ショッピングのストア運営をサポートするAPIを利用したアプリケーションにアプリケーションを登録します。
登録が終えたら、次に認可コードを取得する必要があります。ページに表示するかリダイレクトした時のパラメーターにある認証コードを取得します。
※シンプルにページ上に認証コードを表示させる例: https://auth.login.yahoo.co.jp/yconnect/v1/authorization?response_type=code+id_token&client_id=[上で登録したアプリケーションID]&state=foobar&redirect_uri=oob&nonce=hogehoge
stateやnonceなどはAuthorizationエンドポイントに詳細がありますので、適宜変更してください。
Initialize
ストアアカウント、上で登録したアプリケーションid、シークレット、取得した認証コードでインスタンスを生成します。
redirect_uriにはアプリケーション登録時に設定したフルURL(もしくはカスタムURIスキーム)を指定してください。登録済みの戻り先URLが1つしかない場合は省略可能です。戻り先URLがない場合はoobを指定してください。
client = YahooStoreApi::Client.new(
seller_id: YOUR_STORE_ID, # ストアアカウントid
application_id: YOUR_APPLICATION_ID, # アプリケーションid
application_secret: YOUR_SECRET, # シークレット
redirect_uri: 'oob', # 省略可能
authorization_code: AUTHORIZATION_CODE # 認証コード
)
なお、この認証コードは1回のみ使用可能で、次からはリフレッシュトークンを使用するか、再度認証コードを取得する必要があります。リフレッシュトークンは生成したインスタンスから取得する事ができます。
puts client.refresh_token
client = YahooStoreApi::Client.new(
seller_id: YOUR_STORE_ID, # ストアアカウントid
application_id: YOUR_APPLICATION_ID, # アプリケーションid
application_secret: YOUR_SECRET, # シークレット
refresh_token: YOUR_REFRESH_TOKEN # リフレッシュトークン
)
Usage
商品情報の参照
ストアに登録されている商品情報を取得できます。
item = client.get_item('test123')
# 商品名を取得
item.name
# 通常販売価格を取得
item.price
# 取得したすべての情報をhashで出力
item.all
商品情報の登録/更新
商品情報を登録・更新できます。
item = client.edit_item({
item_code: 'test1234',
name: 'test_item',
path: 'test_category',
price: 1000,
})
# 送信結果をhashで出力
item.all
在庫情報の参照
ストアに登録されている商品の在庫情報を取得できます。
stock = client.get_stock('test123')
# 在庫数の取得
stock.quantity
# 取得したすべての情報をhashで出力
stock.all
全反映予約
反映予約をします。
pub = client.reserve_publish
# 結果を取得
pub.status