결제 구성

Google 예약 플랫폼은 결제를 위한 다양한 구성을 지원합니다. 결제 사용 설정 가이드에서는 다음을 포함하여 모든 결제 통합에 공통된 통합의 측면을 설명합니다.

  1. tokenization_parameter 정보를 포함하도록 피드 구성
  2. payment_method_token 객체를 허용하도록 예약 서버 업데이트
  3. 사용자, Google 예약, 파트너 / 판매자, 결제 대행업체 간에 교환되는 정보의 개요입니다.

이 가이드에서는 피드를 구성하여 판매자 및 서비스에 적용할 수 있는 서로 다른 결제 구성 유형을 지정하는 방법을 자세히 설명합니다.

  1. 결제 불가 / 도착 시 결제
  2. 전액 선불
  3. 예약 불이행 수수료 / 취소 수수료
  4. 입금

모든 결제 사용 사례는 무료/도착 시 결제 사용 사례 (결제 구성이 필요하지 않음)의 확장에 해당하므로 먼저 이 구성을 설명하고 다른 구성을 확장으로 취급합니다.

각 섹션에서는 특정 결제 구성을 수락하기 위해 예약 서버에서 추적할 필드도 다룹니다.

결제 불가 / 도착 시 결제

예약 시 결제가 필요하지 않은 서비스의 경우 판매자 또는 서비스 수준에서 결제 구성이 필요하지 않습니다.

서비스의 이름 구성, 이름, 가격이 포함된 기준 구성입니다. ServiceFeed 내의 단일 서비스 메시지입니다.

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의 고정 요금을 청구할 권한이 있습니다. scheduling_rules.min_advance_online_canceling 필드에 명시된 바와 같이 사용자가 예약 시간 4시간 (14, 400초) 이내에 취소하는 경우에도 이 수수료가 청구될 수 있습니다.

이용 가능 여부 수준에서 프로그램 수수료를 정의할 수 없는 방법을 확인하려면 이 섹션을 참고하세요.

원하는 경우 예약 불이행 수수료를 예약별로 1인당 요금이 청구되도록 구성할 수 있습니다. 이 경우 no_show_fee.fee.fee_typePER_PERSON로 설정할 수 있습니다.

예약 서버

예약 불이행 수수료가 포함된 요청을 처리할 때 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시간 (86, 400초) 전에 온라인으로 서비스를 취소할 수 있습니다. 이를 통해 판매자는 모든 지연 취소에 대해 직접 알 수 있습니다. 하지만 예약 전 4시간(14, 400초 전)까지 사용자가 보증금을 환불받을 수 있으며 (취소를 위해 판매자 또는 판매자에게 문의), 결제 시의 조건과 확인 이메일에 표시됩니다.

이용 가능 여부 수준에서 보증금을 정의하는 방법을 알아보려면 이 섹션을 참고하세요.

예약 불이행 수수료와 마찬가지로 보증금은 고정 요율 또는 1인당 요율로 청구될 수 있습니다. 이 경우 보증금은 "deposit_type": "FIXED_RATE_DEFAULT"에 명시된 고정 가격 $25입니다. 예약에 인원수가 포함된 경우에는 "deposit_type": "PER_PERSON"을 설정하여 보증금을 1인당 입금으로 지정할 수 있습니다.

예약 서버

보증금이 포함된 요청을 처리할 때 결제 토큰이 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"
}

예약 서버

신용카드 요구사항이 포함된 요청을 처리할 때 결제 토큰이 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

재고 수준에서 가격을 재정의하려면 먼저 판매자 수준에서 결제 옵션을 정의해야 합니다. 또한 이용 가능 여부 수준에 취소 기간을 추가하는 방법에 관한 안내는 취소 기간을 추가하는 방법 가이드를 참고하세요.