楽天API(楽天商品検索API)を使ってシステムからアフィリエイトリンクを取得して使用しているのですが、 ログを見ていたら正常にアフィリエイトリンクを取得できていないことがわかりました。解決に向けてたくさん試したので、確認事項と対処方法をまとめます。
レスポンスは正常に帰ってきているか ?
まずは、今のリクエストの結果の状態を確認しましょう。例えば、このようなリクエストを投げているとします。リクエストURLは楽天APIテストフォームからお借りしています。
https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706?format=json&keyword=%E6%A5%BD%E5%A4%A9&genreId=555086&elements=itemCode%2CaffiliateUrl&applicationId=xxxxxxxxxx
レスポンスが正常に返ってこない場合
自分のapplication_idの設定が抜けているとか、APIのパスが間違えているなど基本的な設定部分の確認が必要そうです。楽天APIのドキュメントを見ながら要素に過不足がないか確認してください。
レスポンスは正常に返り、他項目は取得できるがアフィリエイトリンクのみ取得できない場合
{
"Items": [
{
"Item": {
"affiliateUrl": "",
"itemCode": "shop:10000000"
}
},
{
"Item": {
"affiliateUrl": "",
"itemCode": "shop2:10000000"
}
}
]
}
上記のようなアフィリエイトリンクが空のレスポンスが届く場合、リクエストパラメータにaffiliate_idが入っていないかアフィリエイトリンクの取得できない商品である可能性を確認しましょう。
レスポンスは正常に返るがJsonの中身が空である場合
{}
私はこの状態でした。一緒に「店:商品」体系の商品コードを取得していませんか?商品コードと一緒にアフィリエイトリンクを取得をしないようにクエリパラメータを変更したら解決しました。楽天の「店:商品」体系の商品コードがPHPやJavaなどの処理で都合が悪く、正しくJson形式にデータを処理できないみたいです。
解決策:リクエストを2回に分ける
1度目に商品コードを取得するAPIリクエストを投げます。
https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706?format=json&keyword=%E6%A5%BD%E5%A4%A9&genreId=555086&elements=itemCode&applicationId=xxxxxxxxxx
こんなレスポンスが届きました。
{
"Items": [
{
"Item": {
"itemCode": "cube:10010899"
}
},
{
"Item": {
"itemCode": "urbene:10013041"
}
}
]
}
レスポンスから商品コードが取得できたので、2度目のAPIリクエストでは商品コードをキーとしてアフィリエイトリンクを取得します。2件取得できた商品コードのうち上のもののアフィリエイトリンクを取得しましょう。
https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706?format=json&itemCode=cube%3A10010899&elements=affiliateUrl&applicationId=xxxxxxxxxx
レスポンスが届きました。アフィリエイトリンクを取得できました!
{
"Items": [
{
"Item": {
"affiliateUrl": "http://hb.afl.rakuten.co.jp/hgc/xxxxxxxxxxx"
}
}
]
}
楽天APIはアマゾンAPIよりも親切!
問題は解決しましたか?楽天APIは登録のみで使用を開始することができ、アフィリエイト収益が多くないと使えないアマゾンのAPIよりもとても親切です。楽天APIをうまく使いこなしてアフィリエイトリンクを取得しましょう!
楽天APIドキュメントはこちら
困った時はまず公式ドキュメントを見ましょう!
コメント