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:
- Feeds mit Informationen zum
tokenization_parameter
konfigurieren - Buchungsserver wird aktualisiert, um
payment_method_token
-Objekte zu akzeptieren - 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.
- Keine Zahlung / Zahlung bei Ankunft
- Vollständige Vorauszahlung
- Gebühr bei Nichterscheinen / Stornierungsgebühr
- 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.