ソフト開発 プログラミング 楽天RMS

RMS 商品API(ItemAPI)item.insertのPHPサンプル解説・使い方

更新日:

RMS APIは楽天市場の店舗管理、商品管理の自動化を実現するAPIです。あまりサンプルがまとまっていないので、APIの全パターンを下記記事でまとめています。

楽天 RMS APIのPHPサンプル集・使い方 ほぼ全パターン(随時更新中)

今回は商品登録の商品API(Item API)、item.insertを解説します。

APIを使用できる環境がない場合は、下記から出店申請をしてください。結構費用がかかるので資料請求しつつ、担当と色々相談しながらやってみてくださいね。APIを試すだけなら出店アカウントを持っている人に頼んでテスト店舗を使わせてもらうのも手です。

APIを使用するための出店手続き・資料請求はこちら

 

サンプルソースコードは下記です。

item.insertのサンプルソースコード

 

item.insertの概要

item.insertのRESTのエンドポイントにPOSTすると、RMS上に商品を新規登録できます。

登録できる設定項目例は下記です。

  • 商品の名前
  • 商品の価格
  • 在庫数
  • 納期管理番号(1-2日以内に届きます的なやつ)
  • 倉庫指定
  • ポイント倍率
  • ポイントキャンペーン実施期間
  • 店舗内カテゴリー
  • ディレクトリID
  • カタログID(JANコード)
  • 各画像のURL
  • PC用説明文
  • スマホ用説明文
  • 携帯用説明文
  • キャッチコピー
  • 送料

設定項目多すぎますね。無論これ以外にも設定できる項目があるため、詳しくはRMSのAPI仕様書を確認ください。

 

POST リクエスト例

リクエスト例さえ分かれば使えたようなものです。

 

 

リクエストBodyと共に、リクエストheaderにbase64エンコードしたサービスシークレットとライセンスキーを付与してPOSTすることで、APIが使用できます。

 

ソースコード解説

やることは、単純で

  • POSTリクエストする商品情報パラメータのクラスを作成
  • 商品情報クラスパラメータをxmlに変換
  • curlでPOST

です。

 

POSTリクエストする商品情報パラメータのクラスを作成

最終的に下記のようなXMLのリクエストを作れれば良いわけです。

 

つまりこれをクラスで定義して、値を設定した後、XMLに変換するような仕組みが必要です。そのためにまずはItemクラスを作成します。

class/item.php

<item></item>の中に入るものを記述しています。後ほどこのクラスオブジェクトをある関数にぶちこむと勝手にxml化してくれるようにします。当然、<item>配下には、<image>やら<point>やら在庫定義の<itemInventory>なんて要素がネストされているので、そのクラスも作ります。

class/image.php
class/point.php
class/itemInventory.php
class/inventory.php
class/categoryInfo.php

これはitem.insertのリクエストの仕様書を見ながら作りました。異常に設定項目が多いので、最低限必要なものしか定義していません。必要があれば、このクラスにメンバーを追加していく必要があります。注意して欲しいのが、仕様書の順番通りにxmlを作成しないと400が返却されてうまくいかないこと。例えば$catchCopyForPCと$catchCopyForMobileの順番を入れ替えると400エラーが返ってきます(2018/7/1時点)。こちらの知る限り、item.insertでしかそういう挙動は確認されていません。

Y平
messageに「Request data is wrong format」みたいなのが返ってくるんですが、Wrong formatなのはそちらなんじゃないでしょうか?(XMLは仕様的に順番を保証してないはず。つまり順番が違うということでサーバーが処理できないのであれば以下略)

僕のコーディング誤りかもしれませんので、何かあればこっそりご指摘ください。

 

クラスを作ったら、商品情報の値を入れていきます。

 

商品情報クラスパラメータをxmlに変換

ここが難しい。何か便利なライブラリをご存知の方がいたら教えて欲しいです。(AndroidのGSONみたいなやつ)

やることとしては、

  • クラスオブジェクトを一旦配列に変換
  • リクエストのXMLをarray情報から作成する
    • arrayをforeachで回し、keyとvalueを元にSimpleXMLElementに追加していく

 

なんというか、全部xmlを愚直にstringでつないで作ってもいいんですが、めんどくさ過ぎなので苦闘してみました。こんな感じにした方が楽だよというお話があれば、是非@yhei_heiまでご連絡いただくかisuueをあげて頂けると幸いです。

 

curlでPOST

Itemクラスが無事xmlに変換できたら、POSTしましょう。API申請時に発行したサービスシークレットとライセンスキーをヘッダーに付与する必要があります(★部分)ので注意ください。

 

レスポンスとして下記のようなのが返ってきたら成功です。

 

まとめ

item.insert APIを突っ込んで解説してみました。設定項目が多いので、クラス化して情報設定→xmlに変換するっていう工程が結構面倒でした。

「ここ間違ってるよ」や「ここがよく分からないのだけど」というところがあれば、isuueをあげて質問いただければと思います。

サンプルソースコードは下記です。基本的にconfig.phpだけ設定した後は、いじらずにphpファイルを開けばそのまま使えるようになってるので、改造前にオリジナルで試していただくと理解がスムーズです。

item.insertのサンプルソースコード

APIを使用するための出店手続き・資料請求はこちら

 

  • この記事の筆者

Y平

札幌のWebデザイナー。オモコロライターも。Webデザイン、Web集客、コーダーできます。最近7年勤めた富士通を退職しました。1歳の娘いるのに年収下がっちゃう。仕事ください。

-ソフト開発, プログラミング, 楽天RMS

Copyright© バイラシー , 2018 All Rights Reserved.