はじめに
Laravelを使ってShopifyアプリを作成してみたので、Laravelインストール〜ショップ管理画面でアプリとして表示するまでをご紹介します。
動作環境
Mac OS Catalina
PHP 7.3.24
Laravel Framework 8.17.2
Laravel インストール
$ composer create-project laravel/laravel --prefer-dist sample-app
PHP Shopify SDK インストール
Shopifyフォーラムでおすすめされていたphp-shopifyを選定しました。
全て確認はできていませんが、ほとんどのShopifyAPIを網羅していると思われます。
$ cd sample-app/
$ composer require phpclassic/php-shopify
認証URL作成
コントローラ作成
$ php artisan make:controller AuthorizeController
Controller created successfully.
作成したコントローラを以下のように修正します。
ApiKeyとSharedSecretに関しては後述するアプリ作成手順で確認できます。
redirectUrlに関しては後述するngrokで確認できます。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use PHPShopify\ShopifySDK;
use PHPShopify\AuthHelper;
class AuthorizeController extends Controller
{
public function index()
{
ShopifySDK::config([
'ShopUrl' => 'yourshop.myshopify.com', // アプリをインストールするショップURL
'ApiKey' => '***YOUR-PRIVATE-API-KEY***', // アプリ管理画面に表示されるAPIキー
'SharedSecret' => '***YOUR-SHARED-SECRET***', // アプリ管理画面に表示されるAPIシークレットキー
]);
$scopes = 'read_products,write_products,read_script_tags,write_script_tags';
$redirectUrl = '***YOUR-REDIRECT-URL***'; // アプリのリダイレクトURL
AuthHelper::createAuthRequest($scopes, $redirectUrl);
exit;
}
}
ルーティング設定
以下のルーティングを追記します。
...
Route::get('/authorize', 'App\Http\Controllers\AuthorizeController@index');
リダイレクトURL作成
コントローラ作成
$ php artisan make:controller CallbackController
Controller created successfully.
作成したコントローラを以下のように修正します。
ApiKeyとSharedSecretに関しては後述するアプリ作成手順で確認できます。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use PHPShopify\ShopifySDK;
use PHPShopify\AuthHelper;
class CallbackController extends Controller
{
public function index()
{
ShopifySDK::config([
'ShopUrl' => 'yourshop.myshopify.com', // アプリをインストールするショップURL
'ApiKey' => '***YOUR-PRIVATE-API-KEY***', // アプリ管理画面に表示されるAPIキー
'SharedSecret' => '***YOUR-SHARED-SECRET***', // アプリ管理画面に表示されるAPIシークレットキー
]);
$accessToken = AuthHelper::getAccessToken();
// ここで生成したアクセストークンはDBに保存しますが、今回は省略します
if (!isset($accessToken))
{
exit;
}
$config = ShopifySDK::$config;
// ShopifySDKオブジェクト 取得
$shopify = new ShopifySDK([
'ShopUrl' => $config['ShopUrl'],
'AccessToken' => $accessToken
]);
// app handle 取得
$graphQL =
<<<Query
query {
app {
handle
}
}
Query;
$appResponse = $shopify->GraphQL->post($graphQL);
header('Location: '.$config['AdminUrl'].'apps/'.$appResponse['data']['app']['handle']);
exit;
}
}
ルーティング設定
以下のルーティングを追記します。
...
Route::get('/callback', 'App\Http\Controllers\CallbackController@index');
起動
Laravel
$ php artisan serve
Starting Laravel development server: http://127.0.0.1:8000
ngrok
ngrokを利用して開発環境を公開します。
$ npm install ngrok -g
$ ngrok http 8000
アプリ作成
shopifyパートナーダッシュボードのアプリ管理からアプリを作成します。
URLは先ほどngrokで生成したURLに置き換えてください。
アプリインストール
[ngrokで生成したURL]/authorizeにアクセスすると認証画面が表示されます。
「未掲載のアプリをインストールする」をクリックすると、先ほど設定したリダイレクトURLがコールされアプリ画面が表示されます。
Laravelのデフォルト画面が表示されれば無事インストール完了です。
API利用について
php-shopifyにサンプルがありますが、例として商品情報を取得する場合は以下のようになります。
全ての商品情報を取得
$products = $shopify->Product->get();
特定の商品情報を取得
$productID = 23564666666;
$product = $shopify->Product($productID)->get();
最後に
アプリのトップURLで認証を同時に行う、生成したトークンをDBに保存する、などの実用に向けた処理は今回省略していますが、作成したアプリをショップにインストールまでの大枠の手順はご紹介できたかと思います。
今後、ShopifyアプリをLaravelで開発する方への参考になれば幸いです。