JTB BÓKUNはWebhook経由でほかのシステムとのデータ連携が可能です。本記事では、JTB BÓKUNにおけるWebhookの設定方法について説明します。
Webhookを使用することで、特定のイベント(新規予約の作成、予約の更新、予約のキャンセル)が発生した際にリアルタイムで通知を受け取ることができます。
Webhookの詳細ドキュメント(英語版)についてはこちらをご確認ください。
1.HTTPSエンドポイントの準備
2.Webhookの検証機能の実装
3.ペイロードの処理
4.Webhookの受信設定
5.Webhookへの応答
6.署名の検証
署名検証の詳細手順:
①X-Bokunで始まるすべてのリクエストヘッダーを取ります。
②リストからX-Bokun-HMACヘッダーを除外することを確認します。
③ヘッダー名を小文字に変換し、ヘッダー名でアルファベット順に並べ替えます。
④次のフォーマットを使用して、ヘッダーとその値を単一の文字列に追加します:
header1=value1&header2=value2
例えば、次のようなヘッダーがあった場合:
x-bokun-apikey: bb5d27dda5a24c4eaf8263ac5a5054f8
x-bokun-experience-id: RXhwZXJpZW5jZToyNjA5
x-bokun-hmac: a59876dd257d700931076e56b061a0e8a14f29ea067eaba6a777c33afbf1e7fb
x-bokun-topic: experiences/availability_update
x-bokun-vendor-id: VmVuZG9yOjQ
変換後の文字列は以下のようになります:
x-bokun-apikey=bb5d27dda5a24c4eaf8263ac5a5054f8&x-bokun-experience-id=RXhwZXJpZW5jZToyNjA5&x-bokun-topic=experiences/availability_update&x-bokun-vendor-id=VmVuZG9yOjQ
⑤次に、文字列をアプリAPIシークレットキーを使用してHMAC-SHA256ハッシュ関数を通して処理します。生成されたhexdigestがX-Bokun-HMACヘッダーの値と等しい場合、リクエストは本物です。
Q1: Webhookの検証に失敗した場合、どうすればよいですか?
A1: アプリのシークレットキーが正しいこと、およびHMAC-SHA256ハッシュ関数の実装が正確であることを確認してください。それでも問題が解決しない場合は、JTB BÓKUNサポートにお問い合わせください。
Q2: Webhookのペイロードにはどのような情報が含まれますか?
A2: ペイロードには、トリガーとなったイベントに関連するJSONデータが含まれます。具体的な内容はイベントの種類によって異なります。詳細は以下の各イベントをご参照ください。
各イベント詳細
1.新規予約の作成
このイベントは、予約が確定(confirmed)のステータスで作成されたときに送信されます。
x-bokun-topic: bookings/create
x-bokun-booking-id: Qm9va2luZzozNzY0OA
x-bokun-booking-id ヘッダーは予約のユニークIDを提供します。その後、GraphQL APIを使用して詳細を取得できます。
本文には以下の構造のJSONが含まれます:
{
"timestamp": "2020-09-07T11:06:32.419",
"bookingId": "Qm9va2luZzozNzY0OA"
}
2.予約の更新
このイベントは、予約またはその予約に含まれるいずれかの体験予約が更新されたときに送信されます。
x-bokun-topic: bookings/update
x-bokun-booking-id: Qm9va2luZzozNzY0OA
場合によって、以下のような追加のヘッダーがあるかもしれません:
x-bokun-experiencebooking-id: RXhwZXJpZW5jZUJvb2tpbmc6OTQ2MTg
もし予約内の特定の体験予約に関連する変更がある場合、x-bokun-experiencebooking-id ヘッダーはその体験予約を識別します。
本文には以下の構造のJSONが含まれます:
{
"timestamp": "2020-09-07T11:06:32.419",
"bookingId": "Qm9va2luZzozNzY0OA",
"experienceBookingId": "RXhwZXJpZW5jZUJvb2tpbmc6OTQ2MTg"
}
3.予約のキャンセル
このイベントは、予約またはその予約に含まれるいずれかの体験予約がキャンセルされたときに送信されます。
x-bokun-topic: bookings/cancel
x-bokun-booking-id: Qm9va2luZzozNzY0OA
場合によって、以下のような追加のヘッダーがあるかもしれません:
x-bokun-experiencebooking-id: RXhwZXJpZW5jZUJvb2tpbmc6OTQ2MTg
もし予約内の複数の体験予約のうちの1つがキャンセルされた場合、x-bokun-experiencebooking-id ヘッダーはその体験予約を識別します。それ以外の場合は、予約全体がキャンセルされたと考えることができます。
本文には以下の構造のJSONが含まれます:
{
"timestamp": "2020-09-07T11:06:32.419",
"bookingId": "Qm9va2luZzozNzY0OA",
"experienceBookingId": "RXhwZXJpZW5jZUJvb2tpbmc6OTQ2MTg"
}
Webhookの設定方法
1.JTB BÓKUN管理画面>設定>他システムとの連携>統合システムをクリックします。
2.画面右上の「追加する」をクリックします。
3.「HTTP予約通知」を選択します。
4.統合設定の編集画面にて以下の内容を設定し、保存します。