会社行きたくなかったんです。

自由になりたくて会社辞めました

IT Tips Web API Yahoo!ショッピングWeb API プログラミング

VB.netでヤフーショッピングのストアカテゴリ編集APIを使う方法

投稿日:

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の中身にも入っていません。

WebRequest.GetResponseで401エラー、エラー内容を取得できない

解決策がわかりました。
VB.netでPOSTするときにエラー内容のレスポンスが取得できない問題の解決法

ストアカテゴリ編集APIで、カテゴリを新規追加した場合、自動で割り振られたカテゴリのページキーはレスポンスに含まれていません。

なので、ストアカテゴリ一覧APIを使って取得します。
VB.netでヤフーショッピングのストアカテゴリ一覧APIを使う方法

 

-IT, Tips, Web API, Yahoo!ショッピングWeb API, プログラミング

Copyright© 自由になりたくて会社辞めました , 2024 AllRights Reserved Powered by AFFINGER4.