このドキュメントでは、Back In StockプラグインのJavaScript APIを使用して、在庫切れの商品の再入荷通知を受け取る方法を説明します。以下の例では、BackInStockSubscriptionAPIクラスの各メソッドの詳細と使用方法を説明します。
まず、BackInStockSubscriptionAPIクラスをインスタンス化して、APIのURLとトークンを渡します。これにより、APIエンドポイントにアクセスするための準備が整います。
<script src="{{ asset('BackInStockSubscription/assets/libs/js/api.js', 'plugin') }}"></script>
const backInStockApi = new BackInStockSubscriptionAPI({
list: '{{ url('api_subscriptions_list') }}',
create: '{{ url('api_subscriptions_create') }}',
update: '{{ url('api_subscriptions_update') }}',
delete: '{{ url('api_subscriptions_delete') }}',
fetch: '{{ url('api_subscriptions_get') }}'
});
getUserSubscriptionsメソッドを使用して、指定したユーザーIDの購読を取得できます。
async function getUserSubscriptionsExample() {
try {
const subscriptions = await backInStockApi.getUserSubscriptions();
console.log('subscriptions', subscriptions);
} catch (error) {
console.error(error);
}
}
getUserSubscriptionsExample();
createSubscriptionメソッドを使用して、新しい購読を作成できます。購読オブジェクトには、product_class_id、emailが含まれている必要があります。
async function createSubscriptionExample() {
const subscription = {
product_class_id: 11,
email: 'test@example.com'
};
try {
const newSubscription = await backInStockApi.createSubscription(subscription);
console.log('newSubscription', newSubscription);
} catch (error) {
console.error(error);
}
}
createSubscriptionExample();
updateSubscriptionメソッドを使用して、既存の購読を更新できます。購読IDと更新された購読オブジェクトを渡す必要があります。
async function updateSubscriptionExample() {
const updatedSubscription = {
id: 16,
product_class_id: 5,
email: 'updated@example.com'
};
try {
const updatedResult = await backInStockApi.updateSubscription(updatedSubscription);
console.log(updatedResult);
} catch (error) {
console.error(error);
}
}
updateSubscriptionExample();
deleteSubscriptionメソッドを使用して、購読を削除できます。購読IDを渡すだけで削除が完了します。
async function deleteSubscriptionExample() {
const subscriptionId = 16;
try {
await backInStockApi.deleteSubscription(subscriptionId);
console.log('Subscription deleted successfully.');
} catch (error) {
console.error(error);
}
}
deleteSubscriptionExample();
getSubscriptionメソッドを使用して、購読IDによって特定の購読を取得できます。
async function getSubscriptionExample() {
const subscriptionId = 17;
try {
const subscription = await backInStockApi.getSubscription(subscriptionId);
console.log(subscription);
} catch (error) {
console.error(error);
}
}
getSubscriptionExample();
このドキュメントでは、Back In StockプラグインのAPIの使い方を説明します。ユーザーは、在庫切れの商品の再入荷通知を受け取るために登録することができます。
このAPIエンドポイントでは、ログインしているユーザーの購読リストを取得できます。
GET /back-in-stock-subscription/api/subscriptions
成功した場合、購読リストの配列が返されます。失敗した場合、HTTPステータスコードとエラーメッセージが返されます。
[
{
"id": 17,
"productClass": {
"id": 11,
"name": "チェリーアイスサンド",
"stock": 0,
"isStockUnlimited": false
},
"product": {
"id": 2,
"name": "チェリーアイスサンド"
},
"isSent": false,
"createdAt": "2023-03-27 17:08:56",
"updatedAt": "2023-03-27 17:08:56",
"email": "test@example.com",
"sentAt": null
}
]
このAPIエンドポイントでは、ログインしているユーザーが在庫切れの商品の再入荷通知を受け取るために新しい購読を作成することができます。
POST /back-in-stock-subscription/api/subscriptions
Content-Type: application/json
{
"email": "example@example.com",
"product_class_id": 123
}
成功した場合、作成された購読オブジェクトが返されます。失敗した場合、HTTPステータスコードとエラーメッセージが返されます。
{
"id": 17,
"productClass": {
"id": 11,
"name": "チェリーアイスサンド",
"stock": 0,
"isStockUnlimited": false
},
"product": {
"id": 2,
"name": "チェリーアイスサンド"
},
"isSent": false,
"createdAt": "2023-03-27 17:08:56",
"updatedAt": "2023-03-27 17:08:56",
"email": "test@example.com",
"sentAt": null
}
このAPIエンドポイントでは、ログインしているユーザーが購読を更新することができます。
PUT /back-in-stock-subscription/api/subscriptions
Content-Type: application/json
{
"id": 1,
"email": "updated@example.com",
"product_class_id": 456
}
成功した場合、更新された購読オブジェクトが返されます。失敗した場合、HTTPステータスコードとエラーメッセージが返されます。
{
"id": 17,
"productClass": {
"id": 11,
"name": "チェリーアイスサンド",
"stock": 0,
"isStockUnlimited": false
},
"product": {
"id": 2,
"name": "チェリーアイスサンド"
},
"isSent": false,
"createdAt": "2023-03-27 17:08:56",
"updatedAt": "2023-03-27 17:08:56",
"email": "test@example.com",
"sentAt": null
}
このAPIエンドポイントでは、ログインしているユーザーが購読を削除することができます。
DELETE /back-in-stock-subscription/api/subscriptions
{
"id": 1
}
{
"status": true
}
このAPIエンドポイントでは、ログインしているユーザーが特定の購読を取得することができます。
GET /back-in-stock-subscription/api/subscriptions/fetch?id=1
成功した場合、購読オブジェクトが返されます。失敗した場合、HTTPステータスコードとエラーメッセージが返されます。
{
"id": 17,
"productClass": {
"id": 11,
"name": "チェリーアイスサンド",
"stock": 0,
"isStockUnlimited": false
},
"product": {
"id": 2,
"name": "チェリーアイスサンド"
},
"isSent": false,
"createdAt": "2023-03-27 17:08:56",
"updatedAt": "2023-03-27 17:08:56",
"email": "test@example.com",
"sentAt": null
}
このプラグインは、在庫切れの商品が再入荷した際にお客様に通知する機能を提供します。Cron Job を使用して、定期的に back-in-stock:notification コマンドを実行するようにサーバーを設定する方法を説明します。
サーバーでの Cron Job 設定方法は、サーバーの種類やホスティング環境によって異なります。一般的な方法を以下に示しますが、お使いのサーバーのドキュメントやサポート情報を参照してください。
ターミナルを開いて、以下のコマンドを実行してください。
crontab -e
Cron Job ファイルが開いたら、次のような行を追加します。
*/5 * * * * cd /path/to/your/eccube/directory && php bin/console back-in-stock:notification
この例では、back-in-stock:notification コマンドが 5 分ごとに実行されるように設定され
ています。/path/to/your/eccube/directory を EC-CUBE 4 がインストールされているディレクトリのパスに置き換えてください。
Cron Job の実行間隔は、分、時、日、月、曜日によってカスタマイズできます。以下のパターンを参考にして、お客様の要件に合わせた設定を行ってください。
Cron Job の設定行は、次のような構成になっています。
* * * * * コマンド
- - - - -
| | | | |
| | | | +----- 曜日 (0 - 6) (日曜=0)
| | | +------- 月 (1 - 12)
| | +--------- 日 (1 - 31)
| +----------- 時 (0 - 23)
+------------- 分 (0 - 59)
例 1: 毎時実行する
0 * * * * cd /path/to/your/eccube/directory && php bin/console back-in-stock:notification
例 2: 毎日午前 9 時に実行する
0 9 * * * cd /path/to/your/eccube/directory && php bin/console back-in-stock:notification
例 3: 毎週月曜日の午前 9 時に実行する
0 9 * * 1 cd /path/to/your/eccube/directory && php bin/console back-in-stock:notification
例 4: 毎月 1 日の午前 9 時に実行する
0 9 1 * * cd /path/to/your/eccube/directory && php bin/console back-in-stock:notification
変更を保存し、Cron Job のエディタを閉じてください。
Ubuntu でターミナルを開いて、以下のコマンドを実行してください。
crontab -e
Cron Job ファイルが開いたら、次のような行を追加します。
*/5 * * * * cd /path/to/your/eccube/directory && php bin/console back-in-stock:notification
この例では、back-in-stock:notification コマンドが 5 分ごとに実行されるように設定され
ています。/path/to/your/eccube/directory を EC-CUBE 4 がインストールされているディレクトリのパスに置き換えてください。
変更を保存し、Cron Job のエディタを閉じてください。
CentOSでターミナルを開いて、以下のコマンドを実行してください。
crontab -e
Cron Job ファイルが開いたら、次のような行を追加します。
*/5 * * * * cd /path/to/your/eccube/directory && php bin/console back-in-stock:notification
この例では、back-in-stock:notification コマンドが 5 分ごとに実行されるように設定され
ています。/path/to/your/eccube/directory を EC-CUBE 4 がインストールされているディレクトリのパスに置き換えてください。
変更を保存し、Cron Job のエディタを閉じてください。
macOS でターミナルを開いて、以下のコマンドを実行してください。
env EDITOR=nano crontab -e
Cron Job ファイルが開いたら、次のような行を追加します。
*/5 * * * * cd /path/to/your/eccube/directory && php bin/console back-in-stock:notification
この例では、back-in-stock:notification コマンドが 5 分ごとに実行されるように設定され
ています。/path/to/your/eccube/directory を EC-CUBE 4 がインストールされているディレクトリのパスに置き換えてください。
変更を保存し、Cron Job のエディタを閉じてください。macOS の場合、Control + X を押して、Y を選択して、Enter キーを押すことで変更を保存できます。