Đặt các hình thức thanh toán khác nhau

Nền tảng Actions Center hỗ trợ nhiều cấu hình để thanh toán. Chiến lược phát hành đĩa đơn Bật Hướng dẫn thanh toán trình bày các khía cạnh của việc tích hợp áp dụng chung cho tất cả chế độ tích hợp thanh toán, bao gồm:

  1. Định cấu hình nguồn cấp dữ liệu để bao gồm thông tin tokenization_parameter
  2. Đang cập nhật máy chủ đặt phòng để chấp nhận payment_method_token đồ vật
  3. Tổng quan về thông tin được trao đổi giữa người dùng, Actions Center, đối tác / người bán và công ty xử lý thanh toán.

Trong hướng dẫn này, chúng tôi sẽ đề cập chi tiết hơn về cách định cấu hình nguồn cấp dữ liệu của mình để chỉ định những loại cấu hình thanh toán sẽ áp dụng cho người bán và dịch vụ của bạn.

  1. Không thanh toán / Thanh toán khi đến nơi
  2. Khoản thanh toán trước toàn bộ
  3. Phí vắng mặt / Phí huỷ phòng
  4. Khoản tiền gửi

Tất cả các trường hợp sử dụng phương thức thanh toán đều là thời gian gia hạn của phương thức không thanh toán / trường hợp sử dụng thanh toán khi đến nơi (không yêu cầu thiết lập thông tin thanh toán) sẽ bắt đầu bằng cách mô tả cấu hình đó và xử lý các cấu hình dưới dạng tiện ích.

Mỗi phần cũng sẽ bao gồm các trường cần theo dõi trong máy chủ đặt phòng để chấp nhận khoản thanh toán cụ thể .

Không thanh toán / Thanh toán khi đến nơi

Đối với các dịch vụ không yêu cầu thanh toán tại thời điểm đặt trước, không cần thiết lập thông tin thanh toán với người bán hoặc dịch vụ cấp độ. Tuy nhiên, bạn vẫn phải cung cấp giá.

Đây là cấu hình cơ sở cho một dịch vụ, trong đó có tên, mô tả và giá. Đây sẽ là một thông báo Dịch vụ duy nhất trong một 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"
    }
}

Bạn không cần phải sử dụng cấu hình bổ sung ngoài cách triển khai chuẩn trong máy chủ đặt phòng để hỗ trợ thanh toán khi đến nơi.

Trả Tiền Trước

Cấu hình này dùng để chỉ định số tiền của dịch vụ phải được thanh toán đầy đủ tại thời điểm đặt phòng.

Khoản trả trước được chỉ định theo cấp độ dịch vụ thông qua Trường prepayment_type của Service. Để yêu cầu thanh toán cho một dịch vụ, phải được đặt thành REQUIRED như trong ví dụ bên dưới. Lưu ý rằng giá được chỉ định giống như ví dụ khi trả tiền khi đến nơi. Tại đây, bởi vì chúng tôi đang đặt loại thanh toán trước thành bắt buộc, thẻ tín dụng sẽ thu và mức giá này có thể được tính tại thời điểm thanh toán.

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"
}

Máy chủ đặt phòng

Khi chấp nhận khoản trả trước, mã thông báo thanh toán sẽ được chuyển đến thông tin đặt chỗ của bạn máy chủ trong lệnh gọi đến CreateBooking thông qua trường này payment_processing_parameters.unparsed_payment_method_token. Bạn bắt buộc phải tính phí chính xác số tiền được chỉ định thông qua trường giá trong nguồn cấp dữ liệu và bạn bắt buộc phải sử dụng đơn vị tiền tệ được chỉ định trong nguồn cấp dữ liệu. Các khoản phí này phải tuân theo quy trình được mô tả trong Bật Hướng dẫn thanh toán.

Khi trả lại một CreateBookingResponse trường booking.payment_information phải được thiết lập đúng phản ánh rằng khoản thanh toán trước đã được cung cấp và xử lý.

Chiến lược phát hành đĩa đơn Thông số kỹ thuật PaymentInformation chứa đầy đủ chứng từ cho tất cả tuỳ chọn thông tin thanh toán. Một ví dụ tối giản về việc xử lý khoản thanh toán trả trước được cung cấp bên dưới. Quan trọng là giá trả về trong trường giá khớp chính xác với giá trị được chỉ định trong của bạn. Ngoài ra, nếu thuế suất được chỉ định trong nguồn cấp dữ liệu/yêu cầu, nó cũng phải được đưa vào chính xác.

Ngoài ra, xin lưu ý rằng bạn phải cung cấp mã giao dịch. Mã giao dịch này tối thiểu phải là duy nhất trong số các giao dịch với người bán đó. Đáp Mã giao dịch là mã giao dịch được cung cấp cho cho bạn.

JSON

{
    "prepayment_status": "PREPAYMENT_PROVIDED",
    "payment_processed_by": "PROCESSED_BY_PARTNER",
    "payment_transaction_id": "[this-transaction-id]",
    "price": {
        "price_micros": "200000000",
        "currency_code": "USD"
    }
}

Phí vắng mặt

Người dùng có thể phải trả phí vắng mặt nếu họ không tham dự đặt chỗ hay nếu họ huỷ sau thời hạn huỷ. Nếu không có cửa sổ huỷ nào được chỉ định, thời gian bắt đầu của vị trí đặt quảng cáo mặc định.

Để chỉ định phí vắng mặt, bạn nên thêm thuộc tính này vào nguồn cấp dữ liệu dịch vụ Trường no_show_fee như trong ví dụ bên dưới:

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"
    }
}

Trong ví dụ trên, đối tác hoặc người bán được uỷ quyền để tính phí theo mức cố định là 25 đô la theo quy định trong Trường no_show_fee.fee.price_micros nếu người giữ cuộc hẹn không tham dự cuộc hẹn. Phí này cũng có thể được tính nếu người dùng huỷ trong vòng 4 giờ (14400 giây) trước cuộc hẹn, như được chỉ định trong scheduling_rules.min_advance_online_canceling .

Để xem cách xác định phí không hiển thị ở cấp độ hiện có, hãy xem phần này.

Máy chủ đặt phòng

Khi xử lý yêu cầu kèm theo phí vắng mặt, mã thông báo thanh toán được chuyển đến máy chủ đặt phòng trong lệnh gọi đến CreateBooking thông qua trường này payment_processing_parameters.unparsed_payment_method_token. Mã thông báo này được chuyển theo cách tương tự như trong phương thức thanh toán trước trường hợp. Tuy nhiên, vì mã thông báo này chỉ được cấp phép trong một khoảng thời gian ngắn bạn phải gọi API tương ứng của công ty xử lý thanh toán để nâng cấp mã thông báo này thành một phiên bản mà bạn có thể tiếp tục sử dụng tại lúc khác. Điều này được mô tả trong phần hướng dẫn Bật tính năng thanh toán về Quy trình mã thông báo Phí không hiển thị.

Khi trả lại một CreateBookingResponse trường booking.payment_information phải được đặt đúng cách lặp lại trạng thái của phí vắng mặt như trong ví dụ dưới đây.

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"
    }
}

Xin lưu ý rằng no_show_fee được thiết lập để phản ánh giá và phần cấu trúc của khoản phí có thể được tính. Ngoài ra, xin lưu ý rằng, tương tự như ví dụ về khoản trả trước, yêu cầu phải có transaction_id trong thông báo này.

Ngoài ra, xin lưu ý rằng booking_id được đặt trong CreateBookingResponse là trường bắt buộc cho thông tin cập nhật theo thời gian thực phải được gửi khi sạc không phải trả phí tham dự. Mã nhận dạng này được dự kiến được lưu trữ cùng với thông tin về việc đặt phòng.

Cập nhật theo thời gian thực

Nếu người dùng không đến theo lịch đặt chỗ hoặc huỷ sau thời gian huỷ (ví dụ: bằng cách liên hệ trực tiếp với bạn), bạn có thể tuỳ ý tính phí vắng mặt được chỉ định bằng cách sử dụng thông tin thanh toán mà bạn đã lưu trữ tại thời điểm đặt phòng. Khi tính phí vắng mặt, bạn bắt buộc phải gửi Thông tin cập nhật theo thời gian thực nêu rõ rằng bạn đã tính phí vắng mặt.

Đối với các lượt đặt trước được tạo bởi CreateBooking, bản cập nhật sẽ được gửi tới notification.partners.bookings.patch. Trong phần nội dung của yêu cầu này phải lượt đặt phòng được cập nhật, với trạng thái được đặt thành NO_SHOW_PENALIZED. Trạng thái này cho Google biết rằng một khoản phí đã đã thực hiện.

Ví dụ: yêu cầu có thể được gửi đến:

PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status

Với nội dung yêu cầu:

JSON

{
    "name": "partners/12345678/bookings/123123123"
    "merchantId": "merchant-1"
    "serviceId": "service-2-b"
    "status": "NO_SHOW_PENALIZED"
}

Khoản tiền gửi

Khoản tiền gửi được sử dụng để thu khoản phí ban đầu như một yêu cầu cho đặt chỗ. Bạn có thể phải đặt cọc tại thời điểm đặt phòng hoặc sau đó bất cứ lúc nào. Bạn có thể cần phải xác định điều khoản mà khoản tiền gửi có thể được hoàn lại cũng như khi một lượt đặt trước có thể bị huỷ trên mạng.

Để chỉ định một khoản tiền gửi, trong nguồn cấp dữ liệu dịch vụ, bạn phải thêm Trường deposit như trong ví dụ bên dưới:

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"
    }
}

Trong ví dụ này, phương thức min_advance_online_canceling xác định cửa sổ huỷ và deposit.min_advance_cancellation_sec xác định thời điểm khoản tiền gửi có thể được hoàn lại. Xin lưu ý rằng trong ví dụ ở trên, khoản tiền gửi có thể chỉ định thời gian huỷ tách biệt với điều khoản hoàn tiền. Trong trường hợp này, người dùng sẽ có thể huỷ dịch vụ trực tuyến trước tối đa 24 giờ (86400 giây). Điều này đảm bảo rằng người bán thông báo trực tiếp về bất kỳ trường hợp huỷ trễ nào. Tuy nhiên, người dùng vẫn có thể đủ điều kiện được hoàn lại tiền đặt cọc trước tối đa 4 giờ (14.400 giây) trước khi đặt phòng (bằng cách liên hệ với bạn hoặc người bán để huỷ yêu cầu), Thông tin này sẽ xuất hiện trong các điều khoản khi thanh toán và trong email xác nhận.

Để xem cách xác định khoản tiền gửi ở cấp độ khả dụng, hãy xem phần này.

Máy chủ đặt phòng

Khi xử lý yêu cầu có chứa khoản tiền gửi, mã thông báo thanh toán sẽ được chuyển đến máy chủ đặt phòng của bạn trong lệnh gọi đến CreateBooking thông qua trường này payment_processing_parameters.unparsed_payment_method_token. Mã thông báo này được chuyển theo cách tương tự như trong trường hợp trả trước. Nếu bạn tính phí tiền đặt cọc hoặc rút tiền tạm giữ tại thời điểm đặt phòng, bạn có thể làm như vậy trong yêu cầu này.

Nếu bạn định tính phí khoản tiền gửi vào lúc khác, vì mã thông báo chỉ được cấp quyền trong một khoảng thời gian ngắn, bạn phải gọi API phù hợp của công ty xử lý thanh toán để nâng cấp mã thông báo này thành mà bạn có thể duy trì để sử dụng sau này. Đây là được mô tả trong phần hướng dẫn Bật tính năng thanh toán trên quy trình mã thông báo gửi tiền.

Khi trả lại một CreateBookingResponse trường booking.payment_information phải lặp lại đúng trạng thái của khoản tiền gửi, như trong ví dụ dưới đây.

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"
    }
}

Xin lưu ý rằng khoản tiền gửi thử này được đặt để phản ánh giá và cấu trúc của khoản tiền gửi sẽ bị tính phí hoặc bị giữ lại. Ngoài ra, xin lưu ý rằng, tương tự như ví dụ về khoản trả trước, yêu cầu phải có transaction_id trong thông báo này.

Cập nhật theo thời gian thực

Nếu người dùng huỷ lượt đặt trước trước thời hạn huỷ đặt cọc, bạn phải hoàn lại mọi khoản tiền gửi mà bạn đã tính vào thẻ người dùng. Thời gian hoàn lại một khoản tiền đặt cọc, bạn sẽ phải gửi Cập nhật theo thời gian thực chỉ định rằng khoản tiền gửi đã được hoàn lại.

Đối với các lượt đặt trước được tạo bởi CreateBooking, bản cập nhật sẽ được gửi tới notification.partners.bookings.patch. Nội dung chính của tài liệu này yêu cầu phải là lượt đặt phòng đã cập nhật, với trạng thái được đặt thành CANCELED và Đã đặt trường paymentInformation.prepaymentStatus thành PREPAYMENT_REFUNDED. Điều này thông báo cho Google rằng khoản tiền gửi đã đã hoàn tiền.

Ví dụ: yêu cầu có thể được gửi đến:

PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status

Với nội dung yêu cầu:

JSON

{
    "name": "partners/12345678/bookings/123123123"
    "merchantId": "merchant-1"
    "serviceId": "service-2-b"
    "status": "CANCELED"
    "paymentInformation": {
      "prepaymentStatus": "PREPAYMENT_REFUNDED"
    }
    
}

Yêu cầu thẻ tín dụng

Một dịch vụ có thể yêu cầu thẻ tín dụng làm thẻ xác minh danh tính của người dùng. Tuy nhiên, không nên sử dụng đối với phí trả trước, đặt cọc hoặc phí vắng mặt. Nếu những trường hợp sử dụng đó bắt buộc, chúng phải được định cấu hình rõ ràng bằng cách sử dụng các bước ở trên. Ngoài ra, xin lưu ý rằng việc yêu cầu thẻ tín dụng thường sẽ dẫn đến giảm đáng kể số lượt đặt phòng cho dịch vụ này.

Để yêu cầu cung cấp thẻ tín dụng khi thanh toán, bạn phải đặt từ trường require_credit_card thành 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"
}

Máy chủ đặt phòng

Khi xử lý yêu cầu có bao gồm yêu cầu về thẻ tín dụng, khoản thanh toán mã thông báo được chuyển đến máy chủ đặt chỗ trong lệnh gọi đến CreateBooking thông qua trường này payment_processing_parameters.unparsed_payment_method_token. Mã thông báo này được chuyển theo cách tương tự như trong phương thức thanh toán trước trường hợp. Tuy nhiên, vì mã thông báo này chỉ được cấp phép trong một khoảng thời gian ngắn bạn phải gọi API tương ứng của công ty xử lý thanh toán để nâng cấp mã thông báo này thành một phiên bản mà bạn có thể tiếp tục sử dụng tại lúc khác.

Không cần thêm thông tin trong phản hồi của máy chủ Đặt phòng ngoài trường hợp sử dụng trả tiền khi đến nơi.

Ghi đè giá ở cấp tình trạng còn hàng

Trong tất cả ví dụ trên, cấu trúc giá / phí được chỉ định ở cấp Dịch vụ. Trong hầu hết các trường hợp, mức giá ở cấp dịch vụ này đã sử dụng. Tuy nhiên, trong một số trường hợp, bạn nên thay đổi cấu trúc thanh toán cho một số khung giờ trống nhất định. Ví dụ: những trường hợp sau có thể xử lý bằng cách ghi đè giá / phí ở cấp độ sẵn có:

  • Giá giảm vào thứ Ba và tăng vào thứ Bảy.
  • Thời gian trống từ 17:00 đến 19:00 không áp dụng phí chương trình.

Bảng dưới đây liệt kê những trường cần nhập vào từng phương thức thanh toán / phí dùng trong nguồn cấp dữ liệu về tình trạng còn hàng để thay thế định nghĩa về cấp độ dịch vụ.

Hình thức thanh toán Định nghĩa về phí / giá Có thể ghi đè?
Thanh toán khi đến nơi Service.price Giá có thể ghi đè thông qua Availability.payment_option_id tham chiếu Merchant.payment_option
Trả Tiền Trước Service.price Có thể ghi đè giá thông qua Availability.payment_option_id tham chiếu Merchant.payment_option
Phí vắng mặt Service.no_show_fee Availability.no_show_fee
Khoản tiền gửi Service.deposit Availability.deposit
Cần có thẻ tín dụng Service.require_credit_card Availability.require_credit_card

Xin lưu ý rằng để thay thế giá ở cấp tình trạng còn hàng, trước tiên bạn phải xác định một tuỳ chọn thanh toán ở cấp người bán. Ngoài ra, để được hướng dẫn về cách thêm thời hạn huỷ ở mức độ sẵn có, vui lòng xem hướng dẫn Cách thêm cửa sổ huỷ.