ウェブフックは、システムで発生するイベントに関する通知です。特定のイベントが発生すると、エクソーラはHTTPリクエストを送信し、イベントデータがアプリケーション に送信されます。通常、これはJSON形式のPOSTリクエストです。
イベントの例:
設定されたイベントが発生すると、エクソーラはウェブフック経由でシステムにそれを通知します。その結果、次のようなアクションを実行できます:
支払い処理ウェブフックのワークフローの例:
エクソーラ製品およびソリューションを使用する場合のウェブフック設定:
製品/ソリューション | 必須/任意 | ウェブフックは何に使用されますか |
---|---|---|
決済ソリューション | 必須 |
|
インゲームストア | 必須 |
|
ゲームキーの直接販売 | 任意 | ゲームキーの販売では、ユーザーの検証やアイテムの付与は必要ありません。支払いや注文キャンセルなどのイベントに関する情報を受け取りたい場合は、ウェブフックを接続することができます。 ウェブフックを接続する場合は、すべての受信した必要なウェブフックを処理することが重要です。 |
サブスクリプション | 任意 | サブスクリプションの作成、更新、またはキャンセルに関する情報を受け取ります。または、API経由で情報をリクエストすることもできます。 |
ウェブショップ | 任意 | ユーザーIDによる認証を使用する場合、ユーザー認証用です。または、エクソーラログイン経由でユーザー認証を使用することもできます。 |
デジタル配信ソリューション | 任意 |
|
製品やソリューションでウェブフックが必須である場合、アドミンページでウェブフックを有効化してテストし、その処理をセットアップしてください。特定のイベントが発生する時、ウェブフックが順次送信されます。したがって、1つのウェブフックを処理 しない場合、その後のウェブフックは送信されません。必要なウェブフックのリストは以下の通りです。
インゲームストアを完全に操作するには、メインウェブフックの処理を実装する必要があります:
user_validation
) —
決済プロセスのさまざまな段階で送信され、ユーザーがゲームに登録されていることを確認します。payment
) —
注文が支払われたときに送信され、決済データとトランザクションの詳細が含まれます。order_paid
) — 決済ウェブフックが正常に処理されたときに送信され、購入したアイテムに関する情報とト
ランザクションIDを含んでいます。ウェブフックからのデータを使用して、ユーザーにアイテムを追加します。refund
) —
注文がキャンセルされたときに送信され、キャンセルされた決済データとトランザクションの詳細が含まれます。order_canceled
)
— 返金ウェブフックが正常に処理されたときに送信され、購入したアイテムに関する情報とキャ
ンセルされたトランザクションのIDが含まれています。購入したアイテムを削除するには、ウェブフックのデータを使用します。アイテムカタログの個人用設定がアプリケーション側で実装されている場合は、パートナー側でのカタログ個人用設定ウェブフックの処理を設定します。
注
実際の支払いを受け取るには、決済、注文の支払いが完了しました、そしてユーザーの検証ウェブフックだけでなく、ライセンス契約に署名するウェブフックの処理を実装します。
サブスクリプションプランを自動的に管理するには、主要なウェブフックの処理を実装する必要があります:
user_validation
) —
決済プロセスのさまざまな段階で送信され、ユーザーがゲームに登録されていることを確認します。payment
) —
注文が支払われたときに送信され、決済データとトランザクションの詳細が含まれます。create_subscription
) — 決済ウェブフックが正常に処理されたとき、またはユーザーが試用期間付きのサブスクリプ
ションを購入したときに送信されます。これは購入したサブスクリプションの詳細とユーザーデータを含んでいます。ウェブフックデータを使用して、ユーザーにサブスクリプシ
ョンを追加します。update_subscription
) —
サブスクリプションが更新または変更されたとき、決済ウェブフックが正常に
処理されたときに送信されます。購入したサブスクリプションの詳細とユーザーデータが含まれます。ウェブフックデータを使用して、ユーザーのサブスクリプションを延長する
か、サブスクリプションパラメータを変更します。refund
) —
注文がキャンセルされたときに送信され、キャンセルされた決済データとトランザクションの詳細が含まれます。cancel_subscription
) — 返金ウェブフックが正常に処理されたとき、またはサブスクリプションが別の理由でキャンセ
ルされたときに送信されます。サブスクリプションとユーザーデータに関する情報を含んでいます。ウェブフックデータを使用して、ユーザーから購入したサブスクリプションを
差し引きます。ウェブフックの受信を有効にするには:
https://example.com
形式で指定します。ウェブフックをテストするツールで見つけたURLを指定することもできます。注
ウェブフックをテストするには、webhook.siteのような専用のウェブサイトか、ngrokのようなプラットフォームを選択できます。
注意
異なるURLに同時にウェブフックを送信することはできません。アドミンページでは、まずテスト用のURLを指定し、それを実際のURLに置き換えることができます。
ウェブフックの受信を無効にするには:
ウェブフックをテストすると、ユーザー側とエクソーラ側の両方でプロジェクトが正しく設定されていることを確認できます。
以下のウェブフックの受信をテストできます:
ウェブフック名 | ウェブフックタイプ |
---|---|
ユーザーの検証 | user_validation |
決済 | payment |
注文のキャンセル | order_canceled |
注文の支払いが完了しました | order_paid |
ウェブフックが正常にセットアップした場合、ウェブフック設定セクションの下にウェブフックのテストセクションが表示されます。
注
テストセクションにテストがパスしていないという警告が表示された場合は、ウェブフックリスナーのウェブフック応答設定を確認してください。テストでのエラーの理由はテスト結果に示されます。
例:
テストには、専門サイトwebhook.siteを使用します。
「無効な署名に対する応答のテスト」セクションにエラーが表示されます。
エクソーラが間違った署名を持つウェブフックを送信し、ハンドラーがINVALID_SIGNATURE
エラーコードを指定する4xx
HTTPコードで応答することを期待しているために発生します。
webhook.siteは、署名が間違ったウェブフックを含むすべてのウェブフックに応答して200
HTTPコードを送信します。期待される4xx
HTTPコードが得られないため、テスト結果にエラーが表示されます。
「ストア」タブでは、次のウェブフックをテストできます:
order_paid
)order_canceled
)テストするには:
注文の支払いが成功しましたそして注文のキャンセルのウェブフックは、指定されたデータを指定されたURLに送信します。各ウェブフックタイプのテスト結果は、「ウェブフックをテストする」ボタンの下に表示されます。
「決済ソリューション」タブでは、次のウェブフックをテストできます:
テストするには:
指定されたURLには、データが入力されたウェブフックが送信されます。成功したシナリオとエラーが発生したシナリオの両方のテスト結果は、「ウェブフックをテスト する」ボタンの下に表示されます。プロジェクトでパブリックユーザーIDが有効になっている場合は、ユーザー検索の結果も表示されます。
各ウェブフックについて、成功したシナリオとエラーが発生したシナリオの両方の処理を設定する必要があります。
「ウェブフックサーバー」フィールドにURLを保存すると、「高度な設定」セクションが表示されます。ここで、ウェブフックで詳細情報を受信 するための権限を付与できます。そのためには、それぞれのトグルをオンに設定してください。各権限の行には、設定によって影響を受けるウェブフックのリスト が表示されます。
トグル | 説明 |
---|---|
保存された決済アカウントに関する情報を表示する | 保存された決済方法に関する情報は、payment_account カスタムオブジェクト。 |
保存された決済方法による取引に関する情報を表示する | 情報は、パラメータの以下のカスタムパラメータに渡されます:
|
注文オブジェクトをウェブフックに追加する | 注文に関する情報は、決済ウェブフックのorder オブジェクトに渡されます。 |
機密データは含まず、必要なユーザーパラメータのみを送信する | ウェブフックでは、ユーザーに関する次の情報のみが渡されます:
|
カスタムパラメータを送信する | カスタムトークンパラメータに関する情報は、ウェブフックで渡されます。 |
カードのBINとサフィックスを表示する | 銀行カード番号に関する次の情報がウェブフックで渡されます。
|
カードブランドを表示する | 決済に使用したカードのブランド。例えば、MastercardやVisaなど。 |
「サブスクリプション」タブでは、次のウェブフックをテストできます:
注
アドミンページでは、基本的なユーザー検証および支払いウェブフックのみをテストできます。他のウェブフックタイプをテストするには、次の場所に移動します:
注
ウェブフックをテストするには、アドミンページ > サブスクリプション > サブスクリプションプランセクションで、少なくとも1つのサブスクリプションプランが作成されている必要があります。
テストするには:
0
を指定します。指定したURLに、データが入力されたウェブフックを受信します。各ウェブフックのテスト結果は、成功したシナリオとエラーが発生したシナリオの両方で、「ウェブフ ックをテストする」ボタンの下に表示されます。
ウェブフックリスナーは、指定されたURLアドレスでウェブフックを受信し、署名を生成し、エクソーラウェブフックサーバーに応答を送信することができるプログラムコードです。
注
Pay Station PHP SDKライブラリには、ウェブフックを処理するための既製のクラスが含まれています。
アプリケーション側で、以下のIPアドレスからのウェブフックの受信を実装します:185.30.20.0/24
, 185.30.21.0/24
,
185.30.23.0/24
, 34.102.38.178
, 34.94.43.207
, 35.236.73.234
,
34.94.69.44
, 34.102.22.197
。
制限:
ウェブフックを受信する際には、データの送信のセキュリティを確保する必要があります。これを実現するためには、ウェブフックデータから署名を生成し、HTTPリクエスト ヘッダーで送信された署名と一致するかを確認する必要があります。署名を生成するには:
POST /your_uri HTTP/1.1
Host: your.host
Accept: application/json
Content-Type: application/json
Content-Length: 165
Authorization: Signature 52eac2713985e212351610d008e7e14fae46f902
{
"notification_type":"user_validation",
"user":{
"ip":"127.0.0.1",
"phone":"18777976552",
"email":"email@example.com",
"id":1234567,
"name":"Xsolla User",
"country":"US"
}
}
curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'Authorization: Signature 52eac2713985e212351610d008e7e14fae46f902' \
-d '{
"notification_type":
"user_validation",
"user":
{
"ip": "127.0.0.1",
"phone": "18777976552",
"email": "email@example.com",
"id": 1234567,
"name": "Xsolla User",
"country": "US"
}
}'
ウェブフックの受信を確認するには、サーバーは以下を返す必要があります:
200
、201
、または204
HTTPコード。400
HTTPコードは問題の説明を含む、指定されたユーザーが見つからないか、無効な署名が渡
された場合に送信されます。ウェブフックハンドラーは、サーバーで一時的な問題が発生した場合に5xx
HTTPコードを返すこともあります。注文の支払いが完了しましたと注文のキャンセルのウェブフックに対して応答を受信しなかった場合、または 5xx
コードの応答を受信した場合、ウェブフックは以下のスケジュールに従って再送信されます:
ウェブフックの送信は、最初の送信から12時間以内に最大20回まで試行されます。決済ウェブフックまたは返金ウェブフックのいずれかに対して応答が受信されなかった場合、または5xx
コード
の応答が受信された場合、ウェブフックは増加した時間間隔で再送信されます。12時間以内に最大12回の試行が行われます。
注意
支払いの返金がエクソーラによって開始され、返金ウェブフックに対する応答として`5xx`HTTPコードを含む応答が返された場合でも、支払いは返金されます。
ユーザー認証ウェブフックに対して応答を受信しなかった場合、またはコード400
または5xx
の応答を受信した場合、ユーザー認証ウェブフックは再送信されません。この場合、ユーザーにエラーが表示され、決済と注文の支払いが完了しましたウェブフックは送信されません。
HTTPコード400のエラーコード:
コード | メッセージ |
---|---|
INVALID_USER | 無効なユーザー |
INVALID_PARAMETER | 無効なパラメータ |
INVALID_SIGNATURE | 無効な署名 |
INCORRECT_AMOUNT | 不正確な金額 |
INCORRECT_INVOICE | 不正確なインボイス |
HTTP/1.1 400 Bad Request
{
"error":{
"code":"INVALID_USER",
"message":"Invalid user"
}
}
注
通知タイプはnotification_type
パラメータで送信されます。
ウェブフック | 通知タイプ | 説明 |
---|---|---|
ユーザーの検証 | user_validation |
ユーザーがゲーム内に存在するかどうかを確認するために送信されます。 |
ユーザー検索 | user_search |
パブリックユーザーIDに基づいてユーザー情報を取得するために送信されます。 |
決済 | payment |
ユーザーが決済を完了した場合に送信されます。 |
返金 | refund |
何らかの理由で決済をキャンセルする必要がある場合に送信されます。 |
一部返金 | partial_refund |
何らかの理由で決済を一部キャンセルする必要がある場合に送信されます。 |
AFSが拒否したトランザクション | afs_reject |
AFSチェック中にトランザクションが拒否された場合に送信されます。 |
AFSが更新したトランザクション | afs_black_list |
AFSブロックリストが更新される場合に送信されます。 |
作成されたサブスクリプション | create_subscription |
ユーザーがサブスクリプションを作成する場合に送信されます。 |
更新されたサブスクリプション | update_subscription |
サブスクリプションが更新または変更された場合に送信されます。 |
キャンセルされたサブスクリプション | cancel_subscription |
サブスクリプションがキャンセルされた場合に送信されます。 |
非更新サブスクリプション | non_renewal_subscription |
ステータスが非更新に設定される場合に送信されます。 |
決済アカウントを追加 | payment_account_add |
ユーザーが支払いアカウントを追加または保存した場合に送信されます。 |
支払いアカウントを削除 | payment_account_remove |
ユーザーが保存済みアカウントから決済アカウントを削除する場合に送信されます。 |
ウェブショップでのユーザー検証 | - |
ウェブショップのサイトから送信され、ゲーム内にユーザーが存在するかどうかを確認します。 |
パートナー側でのカタログパーソナライゼーション | partner_side_catalog |
ユーザーがストアと直接交信する時に送信されます。 |
注文の支払いが完了しました | order_paid |
注文が支払われたときに送信されます。 |
注文のキャンセル | order_canceled |
注文がキャンセルされたときに送信されます。 |
紛争 | dispute |
新しい紛争手続きが開かれたときに送信されます。 |