Zahlungen konfigurieren

Die Plattform "Mit Google reservieren" unterstützt eine Vielzahl von Konfigurationen für Zahlungen. Im Leitfaden zum Aktivieren von Zahlungen werden die Aspekte der Integration behandelt, die für alle Zahlungsintegrationen gelten, darunter:

  1. Feeds mit Informationen zum tokenization_parameter konfigurieren
  2. Buchungsserver wird aktualisiert, um payment_method_token-Objekte zu akzeptieren
  3. Eine Übersicht über die Daten, die zwischen einem Nutzer, „Mit Google reservieren“, dem Partner / Händler und dem Zahlungsabwickler ausgetauscht werden.

In diesem Leitfaden wird ausführlicher beschrieben, wie du Feeds konfigurierst, um anzugeben, welche der verschiedenen Zahlungskonfigurationen für deine Händler und Dienstleistungen gelten.

  1. Keine Zahlung / Zahlung bei Ankunft
  2. Vollständige Vorauszahlung
  3. Gebühr bei Nichterscheinen / Stornierungsgebühr
  4. Deposit

Alle Anwendungsfälle für Zahlungen sind Erweiterungen des Anwendungsfalls „Keine Zahlungen“ oder „Zahlung nach Ankunft“ (für die keine Zahlungskonfiguration erforderlich ist). Daher wird in dieser Anleitung zuerst diese Konfiguration beschrieben und andere Konfigurationen werden als Erweiterungen behandelt.

In jedem Abschnitt werden auch die Felder behandelt, die auf dem Buchungsserver verfolgt werden müssen, damit die jeweilige Zahlungskonfiguration akzeptiert wird.

Keine Zahlung / Zahlung bei Ankunft

Für Dienstleistungen, für die zum Zeitpunkt der Buchung keine Zahlung erforderlich ist, ist keine Zahlungskonfiguration auf Händler- oder Dienstebene erforderlich.

Dies ist die Referenzkonfiguration für einen Dienst, die einen Namen, eine Beschreibung und einen Preis enthält. Dies wäre eine einzelne Dienstnachricht innerhalb einer ServiceFeed:

JSON

{
    "merchant_id": "merchant-1",
    "service_id": "reservation",
    "name": "reservation",
    "description": "Food reservation"
}

Es ist keine weitere Konfiguration über die Standardimplementierung hinaus erforderlich, um die Bezahlung bei der Ankunft zu unterstützen.

Gebühr bei Nichterscheinen

Wenn der Nutzer nicht bucht oder nach dem Kündigungsfenster storniert wird, können ihm die Gebühren bei Nichterscheinen in Rechnung gestellt werden. Wenn kein Stornierungsfenster angegeben ist, wird standardmäßig die Startzeit des Slots verwendet.

Wenn du eine Gebühr für die Nichterscheinung angeben möchtest, musst du im Dienstleistungsfeed das Feld no_show_fee einfügen, wie im folgenden Beispiel gezeigt:

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

Im Beispiel oben ist der Partner oder Händler berechtigt, einen Festpreis von 25 $zu berechnen, wie im Feld no_show_fee.fee.price_micros angegeben, wenn der Termininhaber nicht am Termin teilnimmt. Diese Gebühr kann auch berechnet werden, wenn der Nutzer innerhalb von 4 Stunden (14.400 Sekunden) vor dem Termin kündigt, wie im Feld scheduling_rules.min_advance_online_canceling angegeben.

Wie keine Gebühren auf Verfügbarkeitsebene definiert werden können, erfahren Sie in diesem Abschnitt.

Optional kann die Gebühr bei Nichterscheinen pro Person für die Reservierung berechnet werden. In diesem Fall kann für no_show_fee.fee.fee_type der Wert PER_PERSON festgelegt werden.

Buchungsserver

Bei der Verarbeitung einer Anfrage, die eine Gebühr bei Nichterscheinen enthält, wird im Aufruf von CreateBooking über das Feld payment_processing_parameters.unparsed_payment_method_token ein Zahlungstoken an deinen Buchungsserver übergeben. Dieses Token wird auf die gleiche Weise wie im Fall der Vorauszahlung übergeben. Da das Token jedoch nur für kurze Zeit autorisiert ist, müssen Sie die entsprechende API Ihres Zahlungsabwicklers aufrufen, um dieses Token in eine Version zu aktualisieren, die Sie für die spätere Verwendung beibehalten können. Dies wird im Abschnitt „Zahlungen aktivieren“ im Abschnitt Gebühren für No-Show-Gebühren erläutert.

Wenn ein CreateBookingResponse zurückgegeben wird, muss das Feld booking.payment_information festgelegt sein, damit der Status der Nichtannahmegebühr wie im Beispiel unten korrekt zurückgegeben wird.

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 ist so eingestellt, dass sie den Preis und die Struktur der zu berücksichtigenden Gebühr widerspiegeln. Wie beim Beispiel für die Vorauszahlung ist in dieser Nachricht ein transaction_id erforderlich.

Beachten Sie außerdem, dass das in CreateBookingResponse festgelegte booking_id ein Pflichtfeld für die Echtzeitaktualisierungen ist, die gesendet werden müssen, wenn eine Gebühr für Nichterscheinen berechnet wird. Es wird davon ausgegangen, dass diese ID zusammen mit Informationen zur Buchung gespeichert wird.

Echtzeitaktualisierungen

Wenn ein Nutzer nicht zu seiner geplanten Buchung ankommt oder nach der Stornierung storniert wird (z.B. durch direkte Kontaktaufnahme), kannst du optional die angegebene Gebühr bei Nichterscheinen mit den bei der Buchung gespeicherten Zahlungsinformationen berechnen. Wenn du eine Gebühr bei Nichterscheinen erhebst, musst du ein Echtzeit-Update senden, in dem du angibst, dass keine Gebühr erhoben wurde.

Bei Buchungen, die von CreateBooking erstellt wurden, sollte ein Update an notification.partners.bookings.patch gesendet werden. Im Text dieser Anfrage sollte die aktualisierte Buchung mit dem Status NO_SHOW_PENALIZED angezeigt werden. Dieser Status informiert Google darüber, dass eine Belastung vorgenommen wurde.

Eine Anfrage kann beispielsweise an folgende Adresse gesendet werden:

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

Mit einem Anfragetext:

JSON

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

Deposit

Mit Anzahlungen wird eine Grundgebühr für die Buchung erhoben. Anzahlungen können bei der Buchung oder zu einem späteren Zeitpunkt in Rechnung gestellt werden. Sie müssen möglicherweise definieren, unter welchen Bedingungen eine Kaution erstattet werden kann und wann eine Buchung online storniert werden kann.

Um eine Zahlung anzugeben, müssen Sie im Dienstleistungsfeed das Feld deposit hinzufügen, wie im folgenden Beispiel gezeigt:

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

In diesem Beispiel definiert min_advance_online_canceling das Stornierungsfenster und deposit.min_advance_cancellation_sec definiert, wann die Anzahlung erstattungsfähig ist. Im obigen Beispiel kann eine Anzahlung separat von den Erstattungsbedingungen angegeben werden. In diesem Fall kann der Nutzer den Dienst bis zu 24 Stunden im Voraus (86.400 Sekunden) online kündigen. Dadurch wird der Händler direkt über verspätete Stornierungen informiert. Der Nutzer hat jedoch möglicherweise bis zu 4 Stunden im Voraus (14.400 Sekunden) Anspruch auf eine Erstattung der Anzahlung (durch Kontaktaufnahme mit Ihnen oder dem Händler zur Stornierung). Diese wird in den Nutzungsbedingungen an der Kasse und in der Bestätigungs-E-Mail angezeigt.

Informationen zur Definition von Anzahlungen auf Verfügbarkeitsebene finden Sie in diesem Abschnitt.

Wie bei Nichterscheinen kann eine Anzahlung entweder zu einem festen Preis oder pro Person abgerechnet werden. In diesem Fall beträgt die Zahlung einen festen Betrag von 25 $, wie unter "deposit_type": "FIXED_RATE_DEFAULT" angegeben. Wenn die Buchung eine Gruppengröße beinhaltet, kann die Anzahlung als Anzahlung pro Person festgelegt werden. Dazu wird "deposit_type": "PER_PERSON" festgelegt.

Buchungsserver

Bei der Verarbeitung einer Anfrage, die eine Anzahlung umfasst, wird im Aufruf von CreateBooking über das Feld payment_processing_parameters.unparsed_payment_method_token ein Zahlungstoken an Ihren Buchungsserver übergeben. Dieses Token wird auf dieselbe Weise wie im Fall der Vorauszahlung übergeben. Wenn Sie die Anzahlung zum Zeitpunkt der Buchung in Rechnung stellen oder die Zahlungsaussetzung aufheben, können Sie dies während dieser Anfrage tun.

Wenn Sie die Zahlung zu einem späteren Zeitpunkt in Rechnung stellen möchten, weil das Token nur für kurze Zeit autorisiert ist, müssen Sie die entsprechende API Ihres Zahlungsabwicklers aufrufen, um dieses Token auf eine Version zu aktualisieren, die Sie zu einem späteren Zeitpunkt weiterverwenden können. Weitere Informationen dazu finden Sie im Leitfaden zum Aktivieren von Zahlungen unter Ablauf mit Guthabentoken.

Bei der Rückgabe eines CreateBookingResponse muss das Feld booking.payment_information wie im Beispiel unten korrekt zurückgegeben werden.

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

Die Zahlung entspricht dem Preis und der Struktur der Zahlung, die in Rechnung gestellt oder gehalten wird. Wie beim Beispiel für die Vorauszahlung ist in dieser Nachricht ein transaction_id erforderlich.

Echtzeitaktualisierungen

Wenn ein Nutzer seine Buchung vor der Stornierungsfrist storniert, müssen Sie die Anzahlung, die von der Nutzerkarte abgebucht wurde, zurückerstatten. Wenn Sie die Anzahlung erstattet haben, müssen Sie ein Echtzeit-Update senden, aus dem die Erstattung hervorgeht.

Bei Buchungen, die von CreateBooking erstellt wurden, sollte ein Update an notification.partners.bookings.patch gesendet werden. Im Text dieser Anfrage sollte die aktualisierte Buchung mit dem Status CANCELED und dem Feld paymentInformation.prepaymentStatus auf PREPAYMENT_REFUNDED gesetzt sein. Dadurch wird Google darüber informiert, dass die Anzahlung erstattet wurde.

Eine Anfrage kann beispielsweise an folgende Adresse gesendet werden:

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

Mit einem Anfragetext:

JSON

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

Kreditkarte erforderlich

Für einen Dienst ist möglicherweise eine Kreditkarte als zusätzliche Bestätigung der Identität des Nutzers erforderlich. Sie sollten jedoch nicht für Vorauszahlungen, Anzahlungen oder Gebühren für Vorführungen verwendet werden. Wenn diese Anwendungsfälle erforderlich sind, sollten sie explizit wie oben beschrieben konfiguriert werden. Hinweis: Wenn du eine Kreditkarte benötigst, ist die Zahl der Buchungen für diese Dienstleistung oft deutlich geringer.

Wenn Sie möchten, dass beim Bezahlen eine Kreditkarte angegeben werden muss, müssen Sie das Feld require_credit_card auf REQUIRE_CREDIT_CARD_ALWAYS setzen.

JSON

{
    "merchant_id": "merchant-1",
    "service_id": "reservation",
    "name": "reservation",
    "description": "Food reservation",
    "require_credit_card": "REQUIRE_CREDIT_CARD_ALWAYS"
}

Buchungsserver

Bei der Verarbeitung einer Anfrage, die eine Kreditkartenanforderung enthält, wird im Aufruf von CreateBooking über das Feld payment_processing_parameters.unparsed_payment_method_token ein Zahlungstoken an Ihren Buchungsserver übergeben. Dieses Token wird auf die gleiche Weise wie im Fall der Vorauszahlung übergeben. Da das Token jedoch nur für kurze Zeit autorisiert ist, müssen Sie die entsprechende API Ihres Zahlungsabwicklers aufrufen, um dieses Token in eine Version zu aktualisieren, die Sie für die spätere Verwendung beibehalten können.

In der Antwort des Buchungsservers sind neben dem Anwendungsfall bei Ankunft keine weiteren Informationen erforderlich.

Preise auf Verfügbarkeitsebene überschreiben

In allen oben genannten Beispielen wird die Preis-/Gebührenstruktur auf Dienstebene angegeben. In den meisten Fällen sollten diese Service-Level-Preise verwendet werden. In manchen Fällen ist es jedoch sinnvoll, die Zahlungsstruktur für bestimmte verfügbare Slots zu ändern. In den folgenden Situationen könnten beispielsweise Preise und Gebühren auf Verfügbarkeitsebene überschrieben werden:

  • Die Preise sind dienstags und samstags höher.
  • Zwischen 17:00 und 19:00 Uhr fallen keine Gebühren für die Ausstellung an.
  • Für Gruppen mit mehr als 6 Personen ist eine Anzahlung erforderlich.
  • Für Buchungen in einem bestimmten Zimmer ist eine Kreditkarte erforderlich.

In der folgenden Tabelle ist aufgeführt, welches Feld im Verfügbarkeitsfeed für jede Zahlungsmethode oder Gebührenmethode die Definition des Service Levels überschreibt.

Zahlungsart Gebühr / Preisdefinition Überschreibbar?
Keine Gebühr für die Show Service.no_show_fee Availability.no_show_fee
Deposit Service.deposit Availability.deposit
Kreditkarte erforderlich Service.require_credit_card Availability.require_credit_card

Wenn du den Preis auf Verfügbarkeitsebene überschreiben möchtest, musst du zuerst eine Zahlungsoption auf Händlerebene definieren. Weitere Informationen zum Hinzufügen von Kündigungsfenstern auf Verfügbarkeitsebene finden Sie im Leitfaden Stornierungsfenster hinzufügen.