Actions Center 平台支援多種收款設定。「啟用付款功能指南」涵蓋所有付款整合作業的共同整合層面,包括:
- 設定動態饋給以納入
tokenization_parameter
資訊 - 更新預訂伺服器以接受
payment_method_token
物件 - 使用者、行動中心、合作夥伴 / 商家和付款處理方之間交換的資訊概覽。
本指南將進一步說明如何設定動態饋給,以指定適用於商家和服務的不同類型付款設定。
- 不付款 / 抵達時付款
- 全額預付
- 逾時未到費用 / 取消費用
- 存款
所有付款用途都是「不付款」/「到達時付款」用途 (不需要付款設定) 的擴充功能,因此本教學課程會先介紹該設定,並將其他設定視為擴充功能。
每個部分也會說明在預訂伺服器中要追蹤的欄位,以便接受特定付款設定。
不付款 / 抵達時付款
如果服務在預訂時不需要付款,則商家或服務層級不需要設定付款方式。不過,你仍必須提供價格。
這是服務的基本設定,包含名稱、說明和價格。這會是 ServiceFeed
中的單一服務訊息:
{ "merchant_id": "merchant-1", "service_id": "service-1-a", "name": "Men's haircut", "description": "One of our stylists will cut your hair", "price": { "price_micros": 15000000, "currency_code": "USD" } }
除了標準實作項目之外,訂房伺服器不需要額外設定,即可支援到店付款。
預付款
這項設定可用於指定消費者必須在預訂時付清服務費用。
您可以透過 Service
的 prepayment_type
欄位,在服務層級指定預付款。如需收取服務費用,請將此值設為 REQUIRED
,如以下範例所示。請注意,價格的指定方式與「到達時付款」範例相同。由於我們將預付款類型設為必填,因此系統會收取信用卡資訊,並在結帳時收取這筆費用。
{ "merchant_id": "merchant-1", "service_id": "service-2-b", "name": "Spa Treatment", "description": "A full spa treatment", "price": { "price_micros": "200000000", "currency_code": "USD" } "prepayment_type": "REQUIRED" }
預訂伺服器
接受預付款時,系統會透過 payment_processing_parameters.unparsed_payment_method_token
欄位,在對 CreateBooking
的呼叫中,將付款權杖傳遞至預訂伺服器。您必須依照動態饋給中的價格欄位所指定的金額收費,並使用動態饋給中指定的幣別。這些費用應遵循「啟用付款功能指南」一文所述的流程。
傳回 CreateBookingResponse
時,必須設定 booking.payment_information
欄位,才能正確反映預付款已提供及處理。
PaymentInformation
規格包含所有付款資訊選項的完整文件。以下提供處理預付款的簡單範例。請務必確保價格欄位傳回的價格與要求中指定的價格完全相符。此外,如果在動態饋給/要求中指定稅率,則必須確實納入。
另請注意,您必須提供交易 ID。此交易 ID 至少必須在該商家交易中不重複。付款處理方提供的交易 ID 是交易 ID 的理想候選項目。
{ "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
欄位,如以下範例所示:
{ "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
欄位所述。
如要瞭解如何在可預訂時段層級定義逾時未到費用,請參閱這一節。
預訂伺服器
處理含有未到場費用的要求時,系統會透過 payment_processing_parameters.unparsed_payment_method_token
欄位,在呼叫 CreateBooking
時將付款權杖傳遞至預訂伺服器。這個符記會以預付款情形相同的方式傳遞。不過,由於權杖只會在短時間內授權,因此您必須呼叫付款處理工具的相關 API,才能將權杖升級為可在日後使用且可保留的版本。如需相關說明,請參閱「未到場費代碼流程」的「啟用付款功能」指南。
傳回 CreateBookingResponse
時,必須設定 booking.payment_information
欄位,才能正確回傳逾時未到費用的狀態,如以下範例所示。
{ "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
使用要求主體:
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "NO_SHOW_PENALIZED" }
存款
預付款是預訂房源時必須支付的初始費用。系統可以在預訂時或之後收取訂金。您可能需要定義下列條件,以便退還訂金,以及線上取消訂房的時間。
如要指定押金,請在服務動態饋給中加入 deposit
欄位,如以下範例所示:
{ "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 秒) 內 (透過與您或商家聯絡取消預訂) 申請退還訂金 (退款條件會顯示在結帳時的條款和確認電子郵件中)。
如要瞭解如何在可預訂時段層級定義訂金,請參閱這一節。
預訂伺服器
處理含有訂金的付款要求時,系統會透過 payment_processing_parameters.unparsed_payment_method_token
欄位,在對 CreateBooking
的呼叫中,將付款權杖傳遞至預訂伺服器。這個符記的傳遞方式與預付款情形相同。如果您在預訂時收取訂金或解除預授權,可以在這項要求中執行。
如果您打算日後再收取保證金,由於符記只能在短時間內授權,因此您必須呼叫付款處理工具的相關 API,將此符記升級為可在日後使用且可保留的版本。如需相關說明,請參閱「啟用付款功能」指南的存款符記流程一節。
傳回 CreateBookingResponse
時,booking.payment_information
欄位必須正確回傳存款狀態,如以下範例所示。
{ "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
使用要求主體:
{ "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
。
{ "merchant_id": "merchant-1", "service_id": "service-1-a", "name": "Men's haircut", "description": "One of our stylists will cut your hair", "price": { "price_micros": 15000000, "currency_code": "USD" }, "require_credit_card": "REQUIRE_CREDIT_CARD_ALWAYS" }
預訂伺服器
處理含有信用卡規定要求的請求時,系統會透過 payment_processing_parameters.unparsed_payment_method_token
欄位,在呼叫 CreateBooking
時,將付款權杖傳遞至預訂伺服器。這個符記會以預付款情形相同的方式傳遞。不過,由於權杖只會在短時間內授權,因此您必須呼叫付款處理工具的相關 API,將權杖升級為可在日後使用且可保留的版本。
除了預訂到達時付款用途之外,預訂伺服器回應中不需要其他資訊。
在可用性層級覆寫定價
在上述所有範例中,價格 / 費率結構都是在服務層級指定。在大多數情況下,您應使用這項服務等級價格。不過,在某些情況下,變更特定可用時間的付款結構是合理的做法。舉例來說,下列情況可透過在可訂房層級覆寫價格 / 費用來處理:
- 價格會在週二調降,週六調漲。
- 下午 5 點至 7 點的預訂時段不收逾時未到費用。
下表列出每種付款 / 費用方式,以及在供應時段動態饋給中用來覆寫服務等級定義的欄位。
付款方式 | 費用 / 價格定義 | 是否可覆寫? |
---|---|---|
抵達時付款 | Service.price
|
價格可透過參照 Merchant.payment_option 的 Availability.payment_option_id 覆寫。 |
預付款 | Service.price
|
價格可透過 Availability.payment_option_id 參照 Merchant.payment_option 覆寫。 |
逾時未到費用 | Service.no_show_fee
|
Availability.no_show_fee
|
存款 | Service.deposit
|
Availability.deposit
|
需要信用卡 | Service.require_credit_card
|
Availability.require_credit_card
|
請注意,如要覆寫可預訂層級的價格,您必須先在商家層級定義付款方式。此外,如需在可訂房層級新增取消時段的指引,請參閱「如何新增取消時段」指南。