SP-API(selling partner api)にPHPでアクセストークンを取得して署名付きでアクセスするソース

MWSが終了するので、自社システムをSP-APIへ切り替えを進めるとSP-APIへはリフレッシュトークンからアクセストークンを生成し、さらに署名バージョン4(署名V4,SignatureV4)のヘッダ付きでアクセスする必要があることが分かりました。

Yahooショッピングストアもリフレッシュトークンからアクセストークンを生成する仕組みでAPIアクセスするが、署名付きは初めて。

公式ドキュメントを参考にすると「AWS SDK または他の AWS ツールを使用して API リクエストを送信することをお勧めします」と記載しているが、素人なのでそもそもAWS SDKの使い方がわかりません。

仕方なく、公式ドキュメントをベースにいろんなサイトを見るも、そもそも日本語で提供された情報がほとんどなく「AWSのユーザ作成とロールの割り当てまで」「リフレッシュトークンとアクセストークンを生成する方法」「署名バージョンV4をPHPで実装する」等と、一部分のみの記載で、一貫してアクセストークンを生成してからSP-APIへアクセスし、結果を得るまでのPHPソースが見つかりません(あっても参考までにと記載されており、コピーして実行しても署名エラーになりました)。それほどSPI-APIでのアクセスが難しいからだと思います。

国内サイトだけでなく海外サイトを探し回り、Amazon公式ドキュメント英語を参考にして(Git-Hubの日本語ディレクトリはファイルが不足しています)、様々試行錯誤しました。

そして苦節一か月、ほぼ素人がついに、アクセストークンを生成してからSP-APIへアクセスし、結果を得るまでのPHPソースを作り上げることができました。

ソースでアクセスしたのは「/sellers/v1/marketplaceParticipations」と「/catalog/v0/items/」です。前者はQueryなし、後者はQueryありです。Order等は試しておりませんし、またOrderはPII(個人情報)へのアクセスが必要となる為、セラーセントラルからの開発者登録にてPIIへのアクセス制御可申請が必要となるだけなく、RDT(Restricted Data Token)と呼ばれる制限付きトークンが必要となります。

実力のある方ならば公式ドキュメントやいくつかのサイトを参考にすれば作ることができるでしょうが、ほぼ素人には難しすぎました。

ソースをご提供しますが、申し訳ありません、非常に苦労した為、有償とさせて戴きます。本ソースは主に海外サイトのソースを組み合わせ、日本語でコメントを付加しています。また本ソースのみで結果を得ることができますが、環境が異なればエラーとなる可能性があります。その場合でもご返金等はお受け致しかねますのでご容赦ください。

本ソースを実行するにはある程度のPHPの知識が必要となるだけでなく以下が事前に取得・生成されている必要があります。

1.PHP7.4で確認
2.HTTPアクセスにcurlを利用しているので事前にインストール済み
3.AWSにてアカウント生成済み、およびSP-APIのアクセス権限を持つ AWS IAMユーザー(もしくはロールとそのロールへのアクセス権を持つユーザー) 作成済み
4.セラーセントラルにて開発者登録済み、およびアプリクライアントを上記、IAMユーザー ARNに割り当て済み
5.上記アプリクライアントを、セラーセントラルにて自己認可(承認)、もしくは他の方法にてリフレッシュトークン取得済み(テスト範囲内であれば自己認可で十分)

ちなみにGit-HubにPHPでSP-APIへ簡単にアクセスするAPIを公開している方がいます。署名も自動でしてくれる上、数行でSP-APIへアクセスできます。英語ではありますがReadmeを読めば簡単に導入・実行できます。どうしてもスクラッチで開発しなければいけない方以外はこちらを利用するのが簡単です。https://github.com/jlevers/selling-partner-api

以下、アクセストークンを取得してから署名付きでSP-APIへアクセスするソースです。

ここから先は

7,204字

¥ 3,000

この記事が気に入ったらサポートをしてみませんか?