さまざまなお支払い方法の設定

アクション センター プラットフォームでは、支払いを行うためのさまざまな構成がサポートされています。支払いを有効にするガイドでは、すべての支払いの統合に共通する統合の側面について説明しています。

  1. tokenization_parameter の情報を含めるようにフィードを設定する
  2. payment_method_token オブジェクトを受け入れるように予約サーバーを更新する
  3. ユーザー、アクション センター、パートナー / 販売者、決済代行業者の間で交換される情報の概要。

このガイドでは、フィードを設定して、販売者とサービスに適用できるお支払い方法を指定する方法について、詳しく説明します。

  1. 支払いなし / 現地での支払い
  2. 全額前払い
  3. 無断キャンセル料 / キャンセル料
  4. 入金の

支払いのユースケースはすべて、支払いなし / 到着払いのユースケース(支払い構成が不要)の拡張であるため、このチュートリアルでは、まずその構成について説明し、他の構成を拡張機能として扱います。

各セクションでは、特定の支払い構成を受け入れるために予約サーバーで追跡するフィールドについても説明します。

支払いなし / 現地での支払い

予約時に支払いが不要なサービスの場合、販売者またはサービスレベルで支払いを構成する必要はありません。価格の入力は必須です。

これはサービスのベースライン構成で、名前、説明、料金が含まれています。これは、ServiceFeed 内の単一の Service メッセージになります。

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

予約サーバー

前払いを受け入れる場合は、フィールド payment_processing_parameters.unparsed_payment_method_token を介した CreateBooking の呼び出しにより、支払いトークンが予約サーバーに渡されます。フィードの価格フィールドで指定された金額を正確に請求し、フィードで指定された通貨を使用する必要があります。これらの料金は、支払いを有効にするガイドで説明されているフローに沿って行う必要があります。

CreateBookingResponse を返す場合は、前払いが提供され、処理されたことを適切に booking.payment_information フィールドに設定する必要があります。

PaymentInformation の仕様には、すべての支払い情報オプションに関する詳細なドキュメントが含まれています。前払い処理の最小限の例を以下に示します。price フィールドに返される価格は、リクエストで指定された価格と完全に一致する必要があります。また、フィードまたはリクエストで税率を指定する場合は、税率も正確に指定する必要があります。

また、取引 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 ドルの固定レート料金を請求できます。この手数料は、scheduling_rules.min_advance_online_canceling フィールドで指定されているように、ユーザーが予約の 4 時間前(14, 400 秒前)以内にキャンセルした場合にも請求されることがあります。

無断キャンセル料を可用性レベルで定義する方法については、このセクションをご覧ください。

予約サーバー

無断キャンセル料を含むリクエストを処理する場合、支払いトークンはフィールド 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 秒前)までは、予約額の払い戻しの対象となる場合があります(キャンセルについてデベロッパーまたは販売者に連絡した場合)。これは、ご購入手続き時の条件と確認メールに表示されます。

可用性レベルで入金を定義する方法については、このセクションをご覧ください。

予約サーバー

デポジットを含むリクエストを処理する際、フィールド 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 に更新を送信します。このリクエストの本文で、更新された予約のステータスを CANCELEDpaymentInformation.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_cardREQUIRE_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"
}

予約サーバー

クレジット カード要件を含むリクエストを処理するときに、フィールド payment_processing_parameters.unparsed_payment_method_token を介した CreateBooking の呼び出しで、支払いトークンが予約サーバーに渡されます。このトークンは、前払いの場合と同じ方法で渡されます。ただし、トークンは短期間しか承認されないため、決済代行業者の関連する API を呼び出して、後で使用できるように永続化できるバージョンにアップグレードする必要があります。

予約サーバーのレスポンスでは、到着時の支払いのユースケース以外の追加情報は必要ありません。

在庫状況レベルでの料金のオーバーライド

上記の例では、料金 / 料金体系はサービスレベルで指定されています。ほとんどの場合、このサービスレベルの料金を使用する必要があります。ただし、特定の予約枠の支払い構造を変更したほうがよい場合もあります。たとえば、次のような状況は在庫状況レベルで料金 / 手数料をオーバーライドすることで対応できます。

  • 火曜日は値下げ、土曜日は値上げされます。
  • 17:00 ~ 19: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

在庫状況レベルで価格をオーバーライドするには、まず販売者レベルで支払い方法を定義する必要があります。また、可用性レベルでキャンセル期間を追加する方法については、キャンセル期間を追加する方法をご覧ください。