設定不同的付款方式

Actions Center 平台支援多種付款設定。啟用付款指南說明所有付款整合服務通用的整合層面,包括:

  1. 設定動態饋給來納入 tokenization_parameter 資訊
  2. 更新預訂伺服器,以便接受 payment_method_token 物件
  3. 使用者、Actions Center、合作夥伴 / 商家和付款處理方之間交換的資訊總覽。

本指南將詳細說明如何設定動態饋給,以指定商家與服務適用的不同付款設定。

  1. 無須付款 / 抵達時付款
  2. 完整預付款
  3. 逾時未到費用 / 取消費
  4. 訂金

所有付款用途都會延伸至無須付款/付費使用情境 (無須進行付款設定),因此本教學課程會先說明該設定,並將其他設定視為擴充功能。

各節也會涵蓋在預訂伺服器中追蹤的欄位,以便接受特定的付款設定。

無須付款 / 抵達時付款

如服務在預訂時無須付款,則不必在商家或服務層級進行付款設定。不過價格仍須提供。

這是服務的基準設定,包含名稱、說明和價格。這就是 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"
    }
}

預訂伺服器無須進行標準導入以外的設定,即可支援抵達時付款功能。

預付款

這項設定是用來指定在預訂時必須全額付清服務費用。

已透過 Serviceprepayment_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_optionAvailability.payment_option_id 覆寫
預付款 Service.price 如要覆寫價格,請參閱參照 Merchant.payment_optionAvailability.payment_option_id
沒有節目費用 Service.no_show_fee Availability.no_show_fee
訂金 Service.deposit Availability.deposit
必須提供信用卡 Service.require_credit_card Availability.require_credit_card

請注意,如要在供應情形層級覆寫價格,您必須先在商家層級定義付款選項。此外,如需在供應情形層級新增取消期間的說明,請參閱如何新增取消期間指南。