Actions Center 平台支援多種付款設定。啟用付款指南說明所有付款整合服務通用的整合層面,包括:
- 設定動態饋給來納入
tokenization_parameter
資訊 - 更新預訂伺服器,以便接受
payment_method_token
物件 - 使用者、Actions Center、合作夥伴 / 商家和付款處理方之間交換的資訊總覽。
本指南將詳細說明如何設定動態饋給,以指定商家與服務適用的不同付款設定。
- 無須付款 / 抵達時付款
- 完整預付款
- 逾時未到費用 / 取消費
- 訂金
所有付款用途都會延伸至無須付款/付費使用情境 (無須進行付款設定),因此本教學課程會先說明該設定,並將其他設定視為擴充功能。
各節也會涵蓋在預訂伺服器中追蹤的欄位,以便接受特定的付款設定。
無須付款 / 抵達時付款
如服務在預訂時無須付款,則不必在商家或服務層級進行付款設定。不過價格仍須提供。
這是服務的基準設定,包含名稱、說明和價格。這就是 ServiceFeed
中的單一服務訊息:
JSON
{ "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
,如以下範例所示。請注意,價格的指定方式與「入境付款」範例相同。由於我們將預付類型設為必填,因此系統會收集信用卡資料,並在結帳時收取這個價格。
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" } "prepayment_type": "REQUIRED" }
Booking Server (預訂伺服器)
接受預付時,付款權杖會透過 payment_processing_parameters.unparsed_payment_method_token
欄位,在對 CreateBooking
的呼叫中傳遞至預訂伺服器。您必須確實收取透過動態饋給中價格欄位指定的金額,而且您必須使用動態饋給中指定的貨幣。這些費用應按照啟用付款指南中的流程進行。
傳回 CreateBookingResponse
時,必須設定 booking.payment_information
欄位,正確反映已提供並處理的預付款。
PaymentInformation
規格包含所有付款資訊選項的完整說明文件。以下提供處理預付作業的最低範例。請注意,價格欄位傳回的價格必須與要求中指定的價格完全相符。此外,如果動態饋給/要求中已指定稅率,您也必須明確加入稅率。
另請注意,您必須提供交易 ID。此交易 ID 不得與與該商家進行的交易相同。合適的交易 ID 是付款處理方提供的交易 ID。
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
欄位,如以下範例所示:
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
欄位中的內容)。
如要瞭解如何在空房層級定義電視節目費用,請參閱本節。
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 小時 (聯絡您或商家取消交易) 之前 4 小時以前,以保證金的方式申請退款。請於結帳的條款和確認電子郵件中顯示內容。
如要瞭解如何在供應情形層級定義存款,請參閱本節。
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": "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" }
Booking Server (預訂伺服器)
處理包含信用卡規定的要求時,系統會透過 payment_processing_parameters.unparsed_payment_method_token
欄位,在對 CreateBooking
的呼叫中,將付款權杖傳遞至預訂伺服器。這個權杖的傳遞方式與預付款案例相同。不過,由於權杖僅授權一小段時間,因此您必須呼叫付款處理方的相關 API,將這個權杖升級為可稍後使用的版本。
除了付費支付使用案例以外,預訂伺服器回應中不需要任何其他資訊。
在供應情形層級覆寫定價
在上述所有範例中,價格 / 費用結構是在「服務」層級指定。在多數情況下,您應使用服務等級的定價。不過,在某些情況下,您可以變更特定供應時段的付款結構。舉例來說,在供應情形層級覆寫價格 / 費用即可處理下列情況:
- 星期二的票價調降,並於週六調高。
- 下午 5:00 到晚上 7:00 之間不須支付放映費。
下表列出了每個付款方式 / 費用方式,以及要在供應情形動態饋給中使用的欄位,以覆寫服務層級定義。
付款方式 | 費用 / 價格定義 | 是否可覆寫? |
---|---|---|
抵達時付款 | Service.price
|
價格可透過參照 Merchant.payment_option 的 Availability.payment_option_id 覆寫
|
預付款 | Service.price
|
如要覆寫價格,請參閱參照 Merchant.payment_option 的 Availability.payment_option_id |
沒有節目費用 | Service.no_show_fee
|
Availability.no_show_fee
|
訂金 | Service.deposit
|
Availability.deposit
|
必須提供信用卡 | Service.require_credit_card
|
Availability.require_credit_card
|
請注意,如要在供應情形層級覆寫價格,您必須先在商家層級定義付款選項。此外,如需在供應情形層級新增取消期間的說明,請參閱如何新增取消期間指南。