Skip to content

API リファレンス

外部プログラムはこの API を使って商品の取得、在庫確認、見積、発注、注文照会を行います。ストア連携機能自体もこの API の上に作られています。

コードを書かずに他店の商品を再販したいだけなら、管理画面のストア連携を使ってください。このページは自前で連携プログラムを書く人向けです。

始める前に:

  1. 相手の店舗で登録し、会員センター → マイページから加盟店 IDapp_id)と加盟店キーapp_key)を取得する
  2. 相手の商品で API 連携が有効になっている必要があります。無効だと取得できません
  3. 提示される価格は、その店舗でのあなたの会員ランクで決まります

基本

  • メソッド:POST
  • 形式:application/x-www-form-urlencoded 推奨
  • 認証:共通パラメータ app_id + sign
  • 成功:code = 200
  • 失敗:通常 code = 0。理由は msg

署名

php
/**
 * リクエストの署名を生成する
 * @param array $data
 * @param string $appKey
 * @return string
 */
public static function generateSignature(array $data, $appKey): string
{
    unset($data['sign']);
    ksort($data);
    foreach ($data as $key => $val) {
        if ($val === '') {
            unset($data[$key]);
        }
    }
    return md5(urldecode(http_build_query($data) . "&key=" . (string)$appKey));
}

共通リクエストパラメータ

名前必須説明
app_idはいstring/int加盟店 ID。会員センターのマイページで取得
signはいstringこのリクエストの全 POST パラメータを上記アルゴリズムで署名した値

app_key は加盟店キーです。署名をローカルで生成するためだけに使い、相手のサーバーへ送ってはいけません。

sku のような配列パラメータを含む場合、それらも署名の計算に含める必要があり、署名対象と実際の送信内容は完全に一致していなければなりません。

共通レスポンス形式

フィールド説明
codeintステータスコード。成功時は 200
msgstringメッセージ。任意項目で、コントローラが明示的に設定したときだけ返ります
datamixed本体データ

成功時:

json
{
  "code": 200,
  "data": {}
}

失敗時:

json
{
  "code": 0,
  "msg": "キーが正しくありません"
}

業務フィールド

  • race — 商品種別。商品設定の [category] のキーに対応します(例:月額年額
  • sku — SKU の組み合わせ。配列で送信します(例:sku[本体色]=ブラック&sku[ストレージ]=256GB
  • card_id — 事前選択カードの ID。商品詳細の draft_status=1 のときだけ意味を持ちます
  • widget — カスタム入力欄。商品詳細が widget を返した場合、発注時に各項目の name をパラメータとして送ります
  • request_no — 冪等キー。コード上は必須ではありませんが、重複注文を避けるため毎回一意の値を送ることを強く推奨します

全商品の取得

POST /shared/commodity/items

  • ボディ:業務パラメータなし。app_idsign のみ

data はカテゴリの配列で、各カテゴリの children が商品一覧です。

フィールド説明
idintカテゴリ ID または商品 ID
namestringカテゴリ名または商品名
childrenarrayそのカテゴリで連携可能な商品
codestring商品コード。詳細取得と発注で使います
pricestring/floatゲスト価格
user_pricestring/float会員/代理店価格
stockint在庫(自動発送商品の場合)
delivery_wayint発送方法
draft_statusint事前選択に対応しているか

商品詳細の取得

POST /shared/commodity/item

名前必須説明
codeはいstring商品コード

data の主なフィールド:

フィールド説明
idint商品 ID
namestring商品名
descriptionstring商品説明
codestring商品コード
pricestring/floatゲスト価格
user_pricestring/float会員/代理店価格
stockint/string現在の在庫
delivery_wayint発送方法
contact_typeint連絡先の種類:0=指定なし1=電話2=メール3=QQ
password_statusint照会パスワードの有無:0=なし1=あり
draft_statusint事前選択の可否:0=不可1=可
draft_premiumstring/float事前選択の追加料金
minimumint最低購入数。0 は制限なし
maximumint1 回あたりの最大購入数。0 は制限なし
configobject解析済みの商品設定。通常 categoryskuwholesale を含みます
widgetarray/nullカスタム入力欄の定義。発注時に各項目の name を送ります
seckill_statusintタイムセール商品かどうか
seckill_start_timestringタイムセール開始
seckill_end_timestringタイムセール終了
ownerobject仕入先の情報
service_urlstringサポートのリンク
service_qqstringサポートの QQ
share_urlstring商品の共有リンク

在庫が発注可能か確認

POST /shared/commodity/inventoryState

名前必須説明
shared_codeはいstring商品コード
numはいint購入数
card_idいいえint事前選択カード ID。使わない場合は 0 か省略
raceいいえstring商品種別

成功レスポンスは、現在の在庫(または事前選択カード)が発注条件を満たすことを意味します。

json
{
  "code": 200,
  "msg": "success",
  "data": []
}

在庫不足、商品が存在しない、販売停止、事前選択カードが既に確保済みといった場合は失敗が返ります。

在庫と基本設定の取得

POST /shared/commodity/inventory

名前必須説明
sharedCodeはいstring商品コード
raceいいえstring商品種別。省略時は既定の種別
フィールド説明
countint現在の在庫数
delivery_wayint発送方法
draft_statusint事前選択に対応しているか
pricestring/float基本価格
user_pricestring/float会員価格
configstring商品設定。INI テキストで返ります
factory_pricestring/float現在の連携主体における仕入れ値
is_categorybool種別を持つ商品かどうか

注意:ここでの config は設定のテキストで、item が返す解析済みオブジェクトとは異なります。

リアルタイム在庫

POST /shared/commodity/stock

名前必須説明
codeはいstring商品コード
raceいいえstring商品種別
skuいいえarraySKU の組み合わせ
json
{
  "code": 200,
  "data": {
    "stock": "15"
  }
}

見積

POST /shared/commodity/valuation

名前必須説明
codeはいstring商品コード
numはいint購入数
raceいいえstring商品種別
skuいいえarraySKU の組み合わせ
card_idいいえint事前選択カード ID
json
{
  "code": 200,
  "data": {
    "price": "99.00"
  }
}

事前選択カード一覧

POST /shared/commodity/draftCard

名前必須説明
codeはいstring商品コード
page推奨intページ番号。1 から
limitいいえint1 ページ件数。既定は 10
raceいいえstring商品種別
skuいいえarraySKU の組み合わせ
フィールド説明
listarrayカード一覧
totalint総件数
list[].idintカード ID
list[].draftstringプレビュー文字列
list[].draft_premiumstring/floatそのカードの追加料金

商品詳細の draft_status=1 のときだけ利用できます。

事前選択カードの詳細

POST /shared/commodity/draft

名前必須説明
codeはいstring商品コード
card_idはいintカード ID
フィールド説明
draft_premiumstring/floatそのカードの追加料金

発注

POST /shared/commodity/trade

このエンドポイントは常に残高で支払います。

名前必須説明
shared_codeはいstring商品コード
numはいint購入数
request_noいいえstring冪等キー。毎回一意の値を強く推奨
contactいいえstring連絡先。ダミー値で構いません
raceいいえstring商品種別
skuいいえarraySKU の組み合わせ
card_idいいえint事前選択カード ID
passwordいいえstring照会パスワード
couponいいえstringクーポンコード
deviceいいえint端末種別。区別しないなら 0

商品詳細が widget を返した場合は、各入力欄の name も追加パラメータとして送ってください。

フィールド説明
tradeNostring注文番号
amountstring/float実際に請求された金額
secretstring/null発送内容。手動発送の場合は待機中を示す文言のことがあります
stockstring/int発注後の残り在庫
json
{
  "code": 200,
  "msg": "success",
  "data": {
    "url": null,
    "amount": "10.00",
    "tradeNo": "123260422101010888",
    "secret": "カードの内容",
    "stock": "14"
  }
}

注文照会

POST /shared/commodity/query

名前必須説明
tradeNoはいstring注文番号。項目名は trade_no ではなく tradeNo です
フィールド説明
secretstring発送内容またはカードの内容
widgetobject/null発注時に送信した入力欄の値
statusint支払い状態:0=未払い1=支払い済み

推奨する連携フロー

  1. itemsitem で商品情報を取得する
  2. 商品に categorysku があれば、先に racesku を決める
  3. 事前選択に対応していれば、draftCard で候補を取得し、必要なら draft で追加料金を確認する
  4. 発注前に stockvaluationinventoryState のいずれかで在庫と価格を確認する
  5. trade で発注する
  6. 発送状況を追う必要があれば query を呼ぶ

補足

  • 認証だけ試したい場合は /shared/authentication/connect を呼んでください
  • 商品詳細の config は解析済みオブジェクト、inventoryconfig は INI テキストです。これはドキュメントの誤りではなく、現在のプログラムの実装がそうなっています
  • 同梱の連携クライアントと完全な互換性を保ちたい場合は、本ドキュメントのフィールド名とレスポンス構造に従ってください。tradeNotrade_no に変えるといった改変は避けてください

MIT ライセンスで公開