「Google で予約」プラットフォームは、支払いを受け取るためのさまざまな構成をサポートしています。お支払いの有効化ガイドでは、すべてのお支払いの統合に共通する統合要素について、以下の項目について説明しています。
tokenization_parameter
情報を含めるフィードの設定- 予約サーバーを更新して
payment_method_token
オブジェクトを受け入れる - ユーザー、Google で予約、パートナー / 販売者、決済代行業者の間でやり取りされる情報の概要。
このガイドでは、フィードを設定し、販売者やサービスに適用する各種お支払い設定を指定する方法について詳しく説明します。
- お支払いなし / 到着時に支払い
- 全額前払い
- 無断キャンセル料 / キャンセル料
- 入金の
支払いのすべてのユースケースは、支払いなし / 到着時の支払いのユースケースの拡張です(支払い構成は必要ありません)。そのため、このチュートリアルでは、最初にその構成について説明し、他の構成を拡張機能として扱います。
各セクションでは、特定の支払い構成を受け入れるために、予約サーバーで追跡するフィールドについても説明します。
お支払いなし / 到着時に支払い
予約時に支払いを必要としないサービスについては、販売者またはサービスレベルで支払い構成を行う必要はありません。
これは、名前、説明、価格を含むサービスのベースライン構成です。これは、ServiceFeed
内の 1 つの Service メッセージになります。
JSON
{ "merchant_id": "merchant-1", "service_id": "reservation", "name": "reservation", "description": "Food reservation" }
到着時の支払いをサポートするために、標準実装以外に予約サーバーで追加の構成を行う必要はありません。
無断キャンセル料
ユーザーが予約した予約に参加しなかった場合、またはキャンセル期間後にキャンセルした場合、無断キャンセル料が請求されます。キャンセルの時間枠が指定されていない場合、スロットの開始時間がデフォルトになります。
無断キャンセル料を指定するには、サービス フィードに次のように no_show_fee
フィールドを含めます。
JSON
{ "merchant_id": "merchant-1", "service_id": "service-2-b", "name": "Spa Treatment", "description": "A full spa treatment", "price": { "price_micros": 200000000, "currency_code": "USD" } "scheduling_rules": { "min_advance_online_canceling": 14400, } "no_show_fee": { "fee": { "price_micros": 25000000, "currency_code": "USD" } "fee_type": "FIXED_RATE_DEFAULT" } }
上記の例では、予約者が予約に参加しなかった場合、パートナーまたは販売者は no_show_fee.fee.price_micros
フィールドに指定された 25 ドルの固定請求料金を請求されます。この料金は、予約の 4 時間(14, 400 秒)以内にユーザーが scheduling_rules.min_advance_online_canceling
フィールドでキャンセルした場合も請求される可能性があります。
提供レベルでショー料金を定義できない方法については、このセクションをご覧ください。
無断キャンセル料は、予約ごとにユーザーごとに請求するように構成することもできます。この場合、no_show_fee.fee.fee_type
を PER_PERSON
に設定できます。
予約サーバー
無断キャンセル料を含むリクエストを処理する場合、支払いトークンは、payment_processing_parameters.unparsed_payment_method_token
フィールドを介して CreateBooking
の呼び出しで予約サーバーに渡されます。このトークンは前払いの場合と同様に渡されます。ただし、トークンは短時間しか承認されないため、支払いプロセッサの関連する API を呼び出して、このトークンを後で使用できるように維持できるバージョンにアップグレードする必要があります。詳しくは、手数料なしトークンのフローの「支払いの有効化ガイド」セクションをご覧ください。
CreateBookingResponse
を返す場合は、booking.payment_information
のフィールドを設定して、以下の例に示すように無断キャンセル料のステータスを適切にエコーバックする必要があります。
JSON
{ "prepayment_status": "PREPAYMENT_PROVIDED", "payment_processed_by": "PROCESSED_BY_PARTNER", "payment_transaction_id": "[this-transaction-id]", "price": { "price_micros": "200000000", "currency_code": "USD" } "no_show_fee": { "fee": { "price_micros": 25000000, "currency_code": "USD" } "fee_type": "FIXED_RATE_DEFAULT" } }
no_show_fee
は、請求される可能性がある料金の料金と構造を反映するように設定されています。なお、プリペイドの例と同様に、このメッセージには transaction_id
が必要です。
また、CreateBookingResponse
で設定された booking_id
は、無断キャンセル料を請求するときに送信する必要があるリアルタイム更新の必須フィールドです。この ID は予約に関する情報とともに保存されることが期待されます。
リアルタイム更新
予約した時間までにユーザーが到着しなかった場合や、キャンセルの後でキャンセルした場合(直接連絡するなど)は、予約時に保存したお支払い情報を使用して、指定された無断キャンセル料を請求することもできます。無断キャンセル料を請求する場合は、リアルタイム更新を送信して、無断キャンセル料が請求されたことを指定する必要があります。
CreateBooking
で作成された予約の場合、最新情報が notification.partners.bookings.patch
に送信されます。リクエストの本文で、更新された予約を NO_SHOW_PENALIZED
のステータスに設定します。このステータスは、請求が行われたことを Google に通知します。
たとえば、次の宛先にリクエストを送信できます。
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status
リクエスト本文:
JSON
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "NO_SHOW_PENALIZED" }
入金の
デポジットは、予約の要件として初回の請求を収集するために使用します。デポジットは予約時または後で請求される場合があります。保証金が払い戻しされる条件と、オンラインで予約をキャンセルできる条件を定義する必要があります。
デポジットを指定するには、サービス フィードに、次のように deposit
フィールドを含める必要があります。
JSON
{ "merchant_id": "merchant-1", "service_id": "service-2-b", "name": "Spa Treatment", "description": "A full spa treatment", "price": { "price_micros": 200000000, "currency_code": "USD" } "scheduling_rules": { "min_advance_online_canceling": 86400, } "deposit": { "deposit": { "price_micros": 25000000, "currency_code": USD, "min_advance_cancellation_sec": 14400, } "deposit_type": "FIXED_RATE_DEFAULT" } }
この例では、min_advance_online_canceling
がキャンセルの時間枠を定義し、deposit.min_advance_cancellation_sec
がデポジットが払い戻されるタイミングを定義しています。上記の例では、デポジットに払い戻し期間とは別にキャンセル時間を指定できます。この場合、ユーザーは最長 24 時間(86, 400 秒)前にサービスをオンラインでキャンセルできます。これにより、キャンセルの遅延が販売者に直接通知されます。ただし、予約の 4 時間前(14,400 秒前)までは、デポジットが払い戻しの対象になります。払い戻しは、販売者または販売者に連絡してキャンセルを依頼します。払い戻しは、ご購入手続き時に表示されるほか、確認メールにも記載されます。
可用性レベルでデポジットを定義する方法については、このセクションをご覧ください。
無断キャンセル料と同様に、デポジットは定額制または 1 名につき請求されます。この場合、"deposit_type": "FIXED_RATE_DEFAULT"
で指定されるとおり、デポジット額は $25 になります。予約人数がパーティー サイズを超える場合は、"deposit_type": "PER_PERSON"
を設定してデポジットを 1 人あたりのデポジットとして指定できます。
予約サーバー
デポジットを含むリクエストを処理すると、CreateBooking
の呼び出しで、payment_processing_parameters.unparsed_payment_method_token
フィールドを通じて支払いトークンが予約サーバーに渡されます。このトークンは前払いの場合と同様に渡されます。予約時にデポジットを請求したり、保留を解除したりするには、このリクエストで行います。
トークンは短時間しか承認されないため、後でデポジットを請求する場合は、決済代行業者の関連する API を呼び出して、このトークンを後で使用できるように保存できるバージョンにアップグレードする必要があります。 詳しくは、デポジット トークンのフローで支払いの有効化に関するガイドセクションをご覧ください。
CreateBookingResponse
を返す際、booking.payment_information
フィールドは、以下の例のように、デポジットのステータスを適切にエコーバックする必要があります。
JSON
{ "prepayment_status": "PREPAYMENT_PROVIDED", "payment_processed_by": "PROCESSED_BY_PARTNER", "payment_transaction_id": "[this-transaction-id]", "price": { "price_micros": "200000000", "currency_code": "USD" } "deposit": { "deposit": { "price_micros": 25000000, "currency_code": USD, "min_advance_cancellation_sec": 28800, } "deposit_type": "FIXED_RATE_DEFAULT" } }
このデポジットには、請求または保留されるデポジットの価格と構造が反映されます。なお、プリペイドの例と同様に、このメッセージには transaction_id
が必要です。
リアルタイム更新
デポジット キャンセル期間より前にユーザーが予約をキャンセルした場合は、お客様に請求したデポジットを払い戻しする必要があります。デポジットの払い戻しを行う際は、デポジットが払い戻されたことを示すリアルタイム更新を送信する必要があります。
CreateBooking
で作成された予約の場合、最新情報が notification.partners.bookings.patch
に送信されます。リクエストの本文で、更新された予約を使用し、ステータスを CANCELED
に、paymentInformation.prepaymentStatus
フィールドを PREPAYMENT_REFUNDED
に設定します。これにより、デポジットが払い戻されたことが Google に通知されます。
たとえば、次の宛先にリクエストを送信できます。
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status
リクエスト本文:
JSON
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "CANCELED" "paymentInformation": { "prepaymentStatus": "PREPAYMENT_REFUNDED" } }
クレジット カードが必要
サービスでは、ユーザーの追加の本人確認としてクレジット カードが必要になる場合があります。ただし、前払い、預金、手数料なしには使用しないでください。ユースケースが必要な場合は、上記の手順を使用して明示的に構成する必要があります。また、クレジット カードが必要になると、多くの場合、このサービスの予約が大幅に減少します。
購入手続き時にクレジット カード情報を要求するには、require_credit_card
フィールドを REQUIRE_CREDIT_CARD_ALWAYS
に設定する必要があります。
JSON
{ "merchant_id": "merchant-1", "service_id": "reservation", "name": "reservation", "description": "Food reservation", "require_credit_card": "REQUIRE_CREDIT_CARD_ALWAYS" }
予約サーバー
クレジット カードの要件を含むリクエストを処理する場合、CreateBooking
の呼び出しで、payment_processing_parameters.unparsed_payment_method_token
フィールドを通じて支払いトークンが予約サーバーに渡されます。このトークンは前払いの場合と同様に渡されます。ただし、トークンは短時間しか承認されないため、支払い処理業者の関連する API を呼び出して、このトークンを後で使用できるように維持できるバージョンにアップグレードする必要があります。
予約時のレスポンスとして、到着時ユースケースのユースケース以外に追加情報は必要ありません。
可用性レベルでの料金のオーバーライド
上のすべての例で、料金と料金の構造はサービスレベルで指定されています。ほとんどの場合、このサービスレベルの料金を使用する必要があります。ただし、特定の予約枠に対して支払い構造を変更することが合理的な場合があります。たとえば、在庫状況レベルで料金 / 料金をオーバーライドすると、次のような状況に対処できます。
- 火曜日に値下げされ、土曜日に値上げされます。
- 午後 5 時~午後 7 時の間は空き状況により料金は発生しません。
- 参加者が 6 人を超える場合はデポジットが必要です。
- 特定の部屋の予約にはクレジット カードが必要です。
次の表は、サービスレベル定義をオーバーライドするために空室フィードで使用するフィールドの一覧を、支払いと料金のメソッドごとに示しています。
お支払いタイプ | 料金 / 料金の定義 | オーバーライド可能 |
---|---|---|
無断キャンセル料 | Service.no_show_fee
|
Availability.no_show_fee
|
入金の | Service.deposit
|
Availability.deposit
|
クレジット カードが必要 | Service.require_credit_card
|
Availability.require_credit_card
|
在庫状況レベルで価格をオーバーライドするには、まず販売者レベルで支払い方法を定義する必要があります。また、提供状況のキャンセル可能期間を追加する方法については、キャンセル可能期間を追加する方法をご覧ください。