1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Yahooショッピング注文検索APIで403になる

Last updated at Posted at 2015-03-20

お世話になっております。

現在、YahooショッピングAPIを使った開発をしております。テスト環境での開発も大体終わり、本番用のアプリのIDを発行してもらいました。2015/03/20に発行となります。
もらったアプリIDを元に本番環境に接続を試みた所、注文検索、注文詳細取得等の注文系APIで403のレスポンスコードが返ってきました。

注文検索では以下のような内容を送っています(SellerIdは伏せています)

接続先URL
https://circus.shopping.yahooapis.jp/ShoppingWebService/V1/orderList

送る内容
<?xml version="1.0" encoding="UTF-8" ?>
<Req>
<SellerId>XXXXXXXX</SellerId>
<Search>
<Field>OrderId,OrderTime,LastUpdateTime,OrderStatus,StoreStatus</Field>
<Result>100</Result>
<Sort>+order_time</Sort>
<Condition>
<OrderTimeFrom>20150320000000</OrderTimeFrom>
<OrderTimeTo>20150321000000</OrderTimeTo>
</Condition>
</Search>
</Req>

authorizationヘッダに、本番環境用のトークンを設定しているつもりです。

何か間違い、あるいは申請で足らないところなどがありましたらご指摘いただけないでしょうか。
よろしくお願いいたします。

2015/04/03追記
コメントでのご指摘の通り、単純に申請していないのが原因でした。アプリケーションID発行画面の文面からアプリケーションIDが発行されるのに数日かかるのかと思いきや、すぐに発行されたので、古くからあるショップなこともあり、すぐに使えるものかと勘違いしていました。

注文検索系のAPIを使うには、アプリケーションID発行後にそれと一緒に接続元IPなども申請する必要があります。IPはサブネットマスクによる指定も可能らしい。これに関しては開発の都合もあってまだ一箇所からしか接続していないので未確認です。

ある程度申請関連が落ち着いてきたので、軽く感想を書かせていただきます。

まず申請にかかる日数ですが、5日以内とあれば5日かかる印象を受けました。やりとりによってはさらに長くなります。余裕をもっておかないとかなり危ないです。

必要な申請ですが、アプリケーションIDの発行は当然として、注文情報を扱うのなら本記事でもあったようにその旨を申請をしないと使えません。

API注文情報を使うなら、証明書認証もほぼ必要です。申請が必要になります。
ちなみに証明書がないとトークンが実質12時間で無効になります。人の手で12時間毎に発行するのは現実味のない話です。トークンを発行するようなボットを作れればいいのかもしれませんが、それは非推奨なのと、きちんとボット対策が入っています。

私はYahooのショップ開発は初ということもあり、APIベースで全ていけるのかと思っていましたが、FTPによるファイルアップでの更新もかなり有効です。というより、それでないと更新できない情報もあります(APIでないと更新できない情報もあります)。もっというのならデータのチェック仕様も微妙に違っていますので、使う使わないはともかくとしてFTPのアカウントも取得したほうが無難でしょう。これも申請が必要となります。

APIのヘルプに「利用制限」の項目があり、「※短い時間の間に同一URLに大量にアクセスを行った場合、一定時間利用できなくなることもございます。(1クエリー/秒) ※大規模なサイト構築やアプリ開発等にご利用いただけるデベロッパー様や、法人様向けに、クエリー数制限/秒を解除させていただきます。(無料)」とあるので、それなりの規模のサイトだしと軽い気持ちで申請したのですが、これが落とし穴でした。本申請では1つのアプリケーションIDに対して、特定のAPIを無制限に使用できるようにするものとなります。逆にいうと、申請したAPI以外のAPIは使えなくなります。全APIを列挙して申請しても、セキュリティ上の都合ということで却下されると思われます。

なので、制限未解除のアプリIDでAPIを使いつつ、特定の処理だけを制限解除済みアプリID&APIを使う形しかありません。要するに複数のアプリケーションIDを使い分ける事を求められるわけですが、複数使い分けるぐらいなら複数のアカウントをローテーションして使うぐらいでいい気がします。1アカウントで10個のアプリケーションIDを発行できますが、1つはテスト環境用アカウントとしても残り9個を使えます。つまりx9までいけます。制限解除済みならAPIを無制限(通常は1日5万回)、且つ秒間30回ほど叩けるらしいですが、さすがにそこまでを要求するショップはそうはないでしょう。

詳しくは書けませんし、それほどのノウハウを貯めたわけでもありませんが、なにそれ? と思ったら大体申請が必要になる雰囲気を感じられます。またそれで時間を取られます。時間がない場合はかなり厳しいことになるので、迷ったらすぐに連絡を入れたほうが無難でしょうか。もっともこの辺、売上があれば全く対応が変わってくるのかもしれません。いや、そういうものでしょう。

新規ショップ開店の方は早め早めの申請を心がけたほうがいいのではないでしょうか。

1
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?