「透過 Google 預訂」平台支援不同的付款設定。「啟用付款指南」說明整合所有付款整合作業的整合層面,包括:
- 設定動態饋給以加入
tokenization_parameter
資訊 - 正在更新預訂伺服器以接受
payment_method_token
物件 - 總覽使用者、「透過 Google 預訂」、「合作夥伴 / 商家」和付款處理方之間交換的資訊。
本指南將詳細說明如何設定動態饋給,指定適合您商家和服務適用的多種付款設定類型。
- 不需付款 / 抵達時付款
- 全額預付
- 不收取手續費 / 取消費
- 訂金
所有付款用途都是「無付款/提前付款」用途 (不需要付款設定) 的擴充功能,因此本教學課程一開始會說明設定,並將其他設定視為擴充功能。
每個部分也會涵蓋在預訂伺服器中追蹤的欄位,以便接受特定的付款設定。
不需付款 / 抵達時付款
如果服務在預訂時不需要任何付款,則商家或服務層級不需要任何付款設定。
這是服務的基本設定,其中包含名稱、說明和價格。這會是 ServiceFeed
中的單一 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 小時 (14400 秒) 內取消,如 scheduling_rules.min_advance_online_canceling
欄位所指定,
他們可能也必須支付這筆費用。
請參閱本節,瞭解在可用性層級如何定義節目費。
您可以視需要將未收取的展示費設為每人收取預訂費用。在此情況下,no_show_fee.fee.fee_type
可以設為 PER_PERSON
。
Booking Server (預訂伺服器)
處理包含未收取手續費的要求時,系統會透過 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 小時 (86400 秒) 取消線上服務。如此能確保商家能直接收到任何延遲取消通知。不過,使用者還是有機會在預訂前 4 小時 (14400 秒) 內將存款退還給您 (需聯絡您或商家以便取消),同時會顯示在結帳條款和確認電子郵件中。
如要瞭解可用層級如何定義存款,請參閱本節的說明。
另請注意,如同不收取手續費,系統能以固定費率或每人收取手續費。在這種情況下,存款是 $25 美元的固定費率,如 "deposit_type": "FIXED_RATE_DEFAULT"
所指定。如果預訂項目包含派對人數,則可透過設定 "deposit_type": "PER_PERSON"
將這筆金額指定為每人存款。
Booking Server (預訂伺服器)
處理包含存款的要求時,系統會透過 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" } "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" }
Booking Server (預訂伺服器)
處理包含信用卡要求的請求時,系統會透過 payment_processing_parameters.unparsed_payment_method_token
欄位,在呼叫 CreateBooking
時將付款權杖傳送至您的預訂伺服器。這個憑證的傳送方式與預付案例相同。但是,由於這個權杖只有一段時間的授權,因此您必須呼叫付款處理方的相關 API,將憑證升級至日後仍可使用的版本。
除了抵達後付款的情況以外,預訂伺服器回應中不需要任何其他資訊。
在可用性層級覆寫定價
在上述所有範例中,價格 / 費用結構是在服務層級指定。在大部分情況下,應使用這項服務層級的定價。但是,在某些情況下,變更某些供應時段的付款結構也是合理的做法。舉例來說,如果在可用性層級覆寫價格 / 費用,即可處理下列情況:
- 週二降價,週六則調漲。
- 下午 5:00 至晚上 7:00 之間有空房將不加收表演費。
- 必須提供金額超過 6 的派對人數。
- 在部分房間預訂時,必須提供信用卡。
下表列出每個供應情形 / 費用方式中,該供應情形在供應情形動態饋給中使用的欄位,用來覆寫服務層級定義。
付款方式 | 費用 / 價格定義 | 是否可覆寫? |
---|---|---|
不收取手續費 | Service.no_show_fee
|
Availability.no_show_fee
|
訂金 | Service.deposit
|
Availability.deposit
|
必須提供信用卡 | Service.require_credit_card
|
Availability.require_credit_card
|
請注意,您必須先在商家層級定義付款選項,才能在供應層級覆寫價格。另外,如需有關在可用性層級新增取消時段的相關指引,請參閱如何新增取消回溯期指南。