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を使う方法