VB.netでヤフーショッピングのストアカテゴリ編集APIを使ってみました。
Amazon.co.jpのFBA在庫をヤフーショッピングストアと連動させて、マルチチャンネルサービスで自動発送してしまいたいのです。
いろいろプログラムのパーツができあがってきたのですが、ヤフーショッピングストアへの出品が遅々として進みません。
とりあえず、最低限の情報で出品すれば良いのですが、その最低限の情報にストアカテゴリが含まれています。
スポンサーリンク
現在、FBA在庫のデータは、自作のツールでSQL serverで管理しています。
なので、このまま、適当にヤフーショッピング用の商品コードを割り振って、出品すれば良いです。
その時に、カテゴリも指定する必要があるので、SQL serverにカテゴリのデータテーブルを作り、ヤフーショッピングストアと同期してしまおうと考えました。
その第一歩として、今回は、ヤフーショッピングのストアカテゴリ編集APIを使かってみました。
VB.netでヤフーショッピングのストアカテゴリ編集APIを使う方法
ストアカテゴリ編集APIの仕様はこちらです。
Dim sURL As String Dim objEnc As System.Text.Encoding = System.Text.Encoding.UTF8 Dim objWC As System.Net.WebClient Dim byResult As Byte() Dim sRtn As String sURL = "https://circus.shopping.yahooapis.jp/ShoppingWebService/V1/editStCategory" Dim objPostData As New System.Collections.Specialized.NameValueCollection objPostData.Add("seller_id", "[ストアアカウント]") objPostData.Add("page_key", "[ページキー]") objPostData.Add("parent_page_key", "[ページキー]") objPostData.Add("name", "[カテゴリ名]") objPostData.Add("meta_desc", "[メタデスクリプション]") objPostData.Add("display", "1") objPostData.Add("freespace1", "[フリースペース1]") objPostData.Add("freespace2", "[フリースペース2]") objPostData.Add("side_navi_image", "[サイドナビ画像]") objPostData.Add("title_image", "[タイトル画像]") objPostData.Add("category_image", "[カテゴリイメージ画像]") objPostData.Add("relevant_links", "[おすすめ商品コード]") objPostData.Add("access_token", "[アクセストークン]") objWC = New System.Net.WebClient() 'POSTで送信します。 byResult = objWC.UploadValues(sURL, "POST", objPostData) '結果はXML形式で渡されます。 sRtn = System.Text.Encoding.UTF8.GetString(byResult) Dim xmlDoc As New XmlDocument() Dim xResultSetList As XmlNodeList Dim xStatusList As XmlNodeList 'XMLを読み込んでStatusを確認します。 xmlDoc.LoadXml(sRtn) xResultSetList = xmlDoc.GetElementsByTagName("ResultSet") For Each xResultSet As XmlElement In xResultSetList xStatusList = xResultSet.GetElementsByTagName("Status") For Each xStatus As XmlElement In xStatusList If xStatus.InnerText = "OK" Then MessageBox.Show("成功") Exit For End If Next Exit For Next
[ストアアカウント]、[カテゴリ名]だけを指定した場合、カテゴリを新規作成します。
名前を変えたい場合などは、さらに、[ページキー]を指定すると、更新されます。
[ページキー]を空欄にした場合は、新規登録なのですが、既に存在するカテゴリ名だとエラーが発生します。
発生するエラーはHTTPステータスコード400です。
本来であれば、エラーコード(この場合、sc-01005)が返ってくるはずなのですが、上のコードでは上手く行きませんでした。
レスポンスを取得する以前にUploadValuesでエラーが発生してしまいます。
HttpWebRequestを使う方法でもダメでした。
こちらの記事のように、WebException.Response.Headersの中身にも入っていません。
解決策がわかりました。
→VB.netでPOSTするときにエラー内容のレスポンスが取得できない問題の解決法
ストアカテゴリ編集APIで、カテゴリを新規追加した場合、自動で割り振られたカテゴリのページキーはレスポンスに含まれていません。
なので、ストアカテゴリ一覧APIを使って取得します。
→VB.netでヤフーショッピングのストアカテゴリ一覧APIを使う方法