Shopify Laravel ルート設
Shopify Laravel ルート設計
Shopify+Laravelの概要
ShopifyとLaravelを組み合わせることで、eコマースサイトのバックエンドを高速に構築できます。Laravelの豊富な機能(Eloquent、ミドルウェア、サービスプロバイダー)を活用し、ShopifyのAPIと連携することで、商品管理や注文処理をシームレスに行えます。まずは、Shopifyのアプリを作成し、OAuth認証を設定して、Laravel側でアクセストークンを取得します。
ルーティングとコントローラーの実装
Laravelでは、routes/web.phpにルート定義を記述します。ShopifyからのWebhookや認証コールバックを受け取るエンドポイントを設定し、Auth Middlewareで保護します。以下は典型的なルート定義例です。
Route::middleware(['auth', 'signed'])->group(function () {
Route::post('/shopify/webhook', [ShopifyWebhookController::class, 'handle']);
Route::get('/shopify/callback', [ShopifyAuthController::class, 'callback']);
});
ここでAuth MiddlewareはLaravelの認証ガードを利用し、signedミドルウェアは署名付きリクエストを検証します。コントローラー実装では、リクエストを受け取り、ビジネスロジックを実行し、レスポンスを返します。例としてWebhookハンドラを示します。
class ShopifyWebhookController extends Controller
{
public function handle(Request $request)
{
// 署名検証済み
$payload = $request->all();
// 受信データを処理
// ...
return response('OK', 200);
}
}
レスポンスはシンプルに文字列を返すだけでなく、JSONやXMLを返すことも可能です。リダイレクト処理が必要な場合は、redirect()ヘルパーを使用します。
認証と署名付きリクエストの処理
ShopifyのWebhookは署名付きリクエストで送信されます。Laravelのsignedミドルウェアを使うと、リクエストヘッダーに含まれるHMACを自動で検証できます。検証に失敗した場合は403が返されます。認証ガードは、Shopifyのアクセストークンをセッションやデータベースに保存し、Auth::guard('shopify')->user()で取得します。
リダイレクト処理は、認証が必要なページにアクセスした際にShopifyの認可ページへ誘導する際に重要です。以下はリダイレクト例です。
public function redirectToShopify()
{
$url = config('shopify.auth_url') . '?client_id=' . config('shopify.api_key')
. '&scope=read_products,write_orders&redirect_uri=' . route('shopify.callback')
. '&state=' . Str::random(40);
return redirect()->away($url);
}
このように、ルート定義、コントローラー実装、Auth Middleware、認証ガード、署名付きリクエスト、レスポンス、リダイレクト処理を組み合わせることで、Shopify+Laravelアプリケーションは堅牢かつ拡張性の高い構造になります。
コメント
コメントを投稿