Die Actions Center-Plattform unterstützt eine Vielzahl von Konfigurationen für die Abwicklung von Zahlungen. Im Leitfaden zum Aktivieren von Zahlungen werden die Aspekte der Integration behandelt, die für alle Zahlungsintegrationen gemeinsam sind. Dazu gehören:
- Feeds so konfigurieren, dass
tokenization_parameter
-Informationen enthalten sind - Buchungsserver aktualisieren, um
payment_method_token
-Objekte zu akzeptieren - Ein Überblick über die Informationen, die zwischen einem Nutzer, dem Actions Center, dem Partner / Händler und dem Zahlungsabwickler ausgetauscht werden.
In diesem Leitfaden erfahren Sie, wie Sie Ihre Feeds konfigurieren, um anzugeben, welche der verschiedenen Zahlungskonfigurationen für Ihre Händler und Dienste gilt.
- Keine Zahlungen / Bezahlung vor Ort
- Vollständige Vorauszahlung
- Gebühr bei Nichterscheinen / Stornogebühr
- Zahlung
Alle Anwendungsfälle für Zahlungen sind Erweiterungen des Anwendungsfalls „Keine Zahlungen“ bzw. „Bei Ankunft bezahlen“ (für den keine Zahlungskonfiguration erforderlich ist). Daher wird in dieser Anleitung zuerst diese Konfiguration beschrieben und andere Konfigurationen als Erweiterungen behandelt.
In jedem Abschnitt werden auch die Felder beschrieben, die im Buchungsserver erfasst werden müssen, um die jeweilige Zahlungskonfiguration zu akzeptieren.
Keine Zahlungen / Bezahlung vor Ort
Für Dienstleistungen, für die bei der Buchung keine Zahlung erforderlich ist, ist keine Zahlungskonfiguration auf Händler- oder Dienstleistungsebene erforderlich. Preise sind jedoch weiterhin erforderlich.
Dies ist die Standardkonfiguration für einen Dienst, die einen Namen, eine Beschreibung und einen Preis enthält. Dies wäre eine einzelne Servicenachricht in einer ServiceFeed
:
{ "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" } }
Für die Unterstützung der Zahlung bei Ankunft ist keine zusätzliche Konfiguration über die Standardimplementierung hinaus auf dem Buchungsserver erforderlich.
Vorauszahlung
Mit dieser Konfiguration wird angegeben, dass der Betrag für die Dienstleistung zum Zeitpunkt der Buchung vollständig bezahlt werden muss.
Die Vorauszahlung wird auf Dienstebene über das Feld prepayment_type
der Service
angegeben. Wenn für einen Dienst Zahlungen erforderlich sind, sollte dieser Wert auf REQUIRED
festgelegt werden, wie im Beispiel unten. Der Preis wird auf die gleiche Weise wie im Beispiel für die Bezahlung bei Ankunft angegeben. Da wir den Vorauszahlungstyp auf „erforderlich“ festlegen, wird eine Kreditkarte erfasst und dieser Preis kann an der Kasse belastet werden.
{ "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" }
Buchungsserver
Wenn Sie Vorabzahlungen akzeptieren, wird beim Aufruf von CreateBooking
ein Zahlungstoken über das Feld payment_processing_parameters.unparsed_payment_method_token
an Ihren Buchungsserver übergeben.
Sie müssen genau den Betrag in Rechnung stellen, der im Preisfeld in den Feeds angegeben ist, und die in den Feeds angegebene Währung verwenden. Diese Abbuchungen sollten dem Ablauf folgen, der im Leitfaden zum Aktivieren von Zahlungen beschrieben ist.
Wenn du eine CreateBookingResponse
zurückgibst, muss das Feld booking.payment_information
so festgelegt sein, dass es korrekt widerspiegelt, dass eine Vorauszahlung geleistet und verarbeitet wurde.
Die PaymentInformation
-Spezifikation enthält eine vollständige Dokumentation aller Optionen für Zahlungsinformationen. Unten findest du ein minimales Beispiel für die Verarbeitung einer Vorauszahlung. Der im Preisfeld zurückgegebene Preis muss genau mit dem in der Anfrage angegebenen Preis übereinstimmen. Wenn in den Feeds/Anfragen ein Steuersatz angegeben ist, muss er auch genau enthalten sein.
Außerdem müssen Sie eine Transaktions-ID angeben. Diese Transaktions-ID muss mindestens für Transaktionen mit diesem Händler eindeutig sein. Eine gute Wahl für eine Transaktions-ID ist die Transaktions-ID, die Ihnen vom Zahlungsabwickler zur Verfügung gestellt wird.
{ "prepayment_status": "PREPAYMENT_PROVIDED", "payment_processed_by": "PROCESSED_BY_PARTNER", "payment_transaction_id": "[this-transaction-id]", "price": { "price_micros": "200000000", "currency_code": "USD" } }
Gebühr bei Nichterscheinen
Nutzern können Gebühren für Nichterscheinen berechnet werden, wenn sie zu ihrer Reservierung nicht erscheinen oder nach Ablauf der Stornierungsfrist stornieren. Ist keine Stornierungsfrist angegeben, wird standardmäßig die Startzeit des Slots verwendet.
Wenn Sie eine Gebühr bei Nichterscheinen angeben möchten, fügen Sie im Dienstfeed das Feld no_show_fee
ein, wie im folgenden Beispiel gezeigt:
{ "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 obigen Beispiel ist der Partner oder Händler berechtigt, eine feste Gebühr in Höhe von 25 $zu erheben, wie im Feld no_show_fee.fee.price_micros
angegeben, wenn der Termininhaber nicht zum Termin erscheint. Diese Gebühr kann auch berechnet werden, wenn der Nutzer innerhalb von 4 Stunden (14.400 Sekunden) vor dem Termin storniert, wie im Feld scheduling_rules.min_advance_online_canceling
angegeben.
Wie Gebühren bei Nichterscheinen auf Ebene der Verfügbarkeit definiert werden können, erfahren Sie hier.
Buchungsserver
Bei der Verarbeitung einer Anfrage, die eine Nichterscheinen-Gebühr enthält, wird beim 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 übergeben wie im Fall der Vorauszahlung. Da das Token jedoch nur für einen kurzen Zeitraum autorisiert ist, müssen Sie die entsprechende API Ihres Zahlungsabwicklers aufrufen, um dieses Token in eine Version umzuwandeln, die Sie für die spätere Verwendung speichern können. Weitere Informationen finden Sie im Abschnitt zum Aktivieren von Zahlungen unter Token-Ablauf für Nichterscheinen.
Wenn Sie CreateBookingResponse
zurückgeben, muss das Feld booking.payment_information
festgelegt werden, um den Status der Gebühr bei Nichterscheinen wie im Beispiel unten korrekt zurückzugeben.
{ "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" } }
Beachten Sie, dass no_show_fee
so festgelegt ist, dass der Preis und die Struktur der möglicherweise in Rechnung gestellten Gebühr widergespiegelt werden. Ähnlich wie im Beispiel für Vorauszahlungen ist in dieser Nachricht eine 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 bei Nichterscheinen berechnet wird. Diese ID wird voraussichtlich zusammen mit Informationen zur Buchung gespeichert.
Echtzeitaktualisierungen
Wenn ein Nutzer nicht zu seiner gebuchten Leistung erscheint oder diese nach Ablauf des Stornierungszeitraums storniert (z.B. indem er Sie direkt kontaktiert), können Sie optional die angegebene Gebühr für Nichterscheinen mit den Zahlungsinformationen in Rechnung stellen, die Sie bei der Buchung gespeichert haben. Wenn Sie eine Gebühr bei Nichterscheinen berechnen, müssen Sie eine Echtzeitaktualisierung senden, in der angegeben ist, dass die Gebühr bei Nichterscheinen berechnet wurde.
Bei Buchungen, die von CreateBooking
erstellt wurden, sollte ein Update an notification.partners.bookings.patch
gesendet werden. Der Anfragetext sollte die aktualisierte Buchung mit dem Status NO_SHOW_PENALIZED
enthalten. Mit diesem Status wird Google darüber informiert, dass eine Abbuchung erfolgt ist.
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:
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "NO_SHOW_PENALIZED" }
Zahlung
Anzahlungen werden verwendet, um eine Vorabzahlung als Voraussetzung für die Buchung einzuziehen. Anzahlungen können bei der Buchung oder zu einem späteren Zeitpunkt abgebucht werden. Möglicherweise müssen Sie auch festlegen, unter welchen Bedingungen eine Anzahlung erstattet wird und wann eine Buchung online storniert werden kann.
Wenn Sie eine Anzahlung angeben möchten, sollten Sie im Dienstfeed das Feld deposit
einfügen, wie im folgenden Beispiel gezeigt:
{ "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
, wann die Anzahlung erstattet wird. Beachten Sie, dass im Beispiel oben für eine Anzahlung eine Stornierungsfrist unabhängig von den Erstattungsbedingungen angegeben werden kann. In diesem Fall kann ein Nutzer den Dienst bis zu 24 Stunden im Voraus (86.400 Sekunden) online kündigen. So wird sichergestellt, dass der Händler über verspätete Stornierungen direkt informiert wird. Der Nutzer hat jedoch möglicherweise Anspruch auf eine Erstattung seiner Anzahlung, wenn er bis zu 4 Stunden (14.400 Sekunden) vor der Buchung eine Stornierung beantragt (durch Kontaktaufnahme mit Ihnen oder dem Händler). Dies wird in den Nutzungsbedingungen an der Kasse und in der Bestätigungs-E-Mail angezeigt.
Informationen dazu, wie Anzahlungen auf Verfügbarkeitsebene definiert werden können, finden Sie in diesem Abschnitt.
Buchungsserver
Bei der Verarbeitung einer Anfrage mit einer Anzahlung 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 übergeben wie im Fall der Vorauszahlung. Wenn Sie die Anzahlung bei der Buchung in Rechnung stellen oder eine Vorautorisierung vornehmen möchten, können Sie dies während dieser Anfrage tun.
Wenn Sie die Anzahlung zu einem späteren Zeitpunkt in Rechnung stellen möchten, weil das Token nur für einen kurzen Zeitraum autorisiert ist, müssen Sie die entsprechende API Ihres Zahlungsabwicklers aufrufen, um dieses Token in eine Version umzuwandeln, die Sie für die spätere Verwendung speichern können. Weitere Informationen finden Sie im Abschnitt Ablauf für das Einzahlungstoken des Leitfadens zum Aktivieren von Zahlungen.
Wenn du eine CreateBookingResponse
zurückgibst, muss das Feld booking.payment_information
den Status der Anzahlung korrekt zurückgeben, wie im Beispiel unten.
{ "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 Kaution entspricht dem Preis und der Struktur der Kaution, die in Rechnung gestellt oder einbehalten wird. Ähnlich wie im Beispiel für Vorauszahlungen ist in dieser Nachricht eine transaction_id
erforderlich.
Echtzeitaktualisierungen
Wenn ein Nutzer seine Buchung vor Ablauf der Stornierungsfrist für die Anzahlung storniert, müssen Sie die Anzahlung erstatten, die Sie der Karte des Nutzers belastet haben. Wenn Sie eine Anzahlung erstatten, müssen Sie eine Echtzeitaktualisierung senden, in der angegeben ist, dass die Anzahlung erstattet wurde.
Bei Buchungen, die von CreateBooking
erstellt wurden, sollte ein Update an notification.partners.bookings.patch
gesendet werden. Der Anfragetext muss die aktualisierte Buchung enthalten, deren Status auf CANCELED
und das Feld paymentInformation.prepaymentStatus
auf PREPAYMENT_REFUNDED
gesetzt ist. So 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:
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "CANCELED" "paymentInformation": { "prepaymentStatus": "PREPAYMENT_REFUNDED" } }
Kreditkarte erforderlich
Für einen Dienst kann eine Kreditkarte als zusätzliche Bestätigung der Identität des Nutzers erforderlich sein. Sie sollte jedoch nicht für Vorauszahlungen, Anzahlungen oder Gebühren bei Nichterscheinen verwendet werden. Wenn diese Anwendungsfälle erforderlich sind, sollten sie mithilfe der oben beschriebenen Schritte explizit konfiguriert werden. Bitte beachten Sie auch, dass die Angabe einer Kreditkarte oft zu einem deutlichen Rückgang der Buchungen für diesen Dienst führt.
Wenn Sie beim Bezahlvorgang eine Kreditkarte verlangen möchten, müssen Sie das Feld require_credit_card
auf REQUIRE_CREDIT_CARD_ALWAYS
setzen.
{ "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" }
Buchungsserver
Bei der Verarbeitung einer Anfrage, die eine Kreditkartenanforderung enthält, wird beim 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 übergeben wie im Fall der Vorauszahlung. Da das Token jedoch nur für einen kurzen Zeitraum autorisiert ist, müssen Sie die entsprechende API Ihres Zahlungsabwicklers aufrufen, um dieses Token in eine Version umzuwandeln, die Sie für die spätere Verwendung speichern können.
In der Antwort des Buchungsservers sind keine zusätzlichen Informationen erforderlich, die über den Anwendungsfall „Bei Ankunft bezahlen“ hinausgehen.
Preise auf Verfügbarkeitsebene überschreiben
In allen obigen Beispielen wird die Preis-/Gebührenstruktur auf Dienstebene angegeben. In den meisten Fällen sollten diese Preise auf Dienstebene verwendet werden. In einigen Fällen ist es jedoch sinnvoll, die Zahlungsstruktur für bestimmte Verfügbarkeitsfenster zu ändern. In den folgenden Fällen können Preise / Gebühren auf Ebene der Verfügbarkeit überschrieben werden:
- Die Preise sind dienstags reduziert und samstags erhöht.
- Für die Verfügbarkeit zwischen 17:00 und 19:00 Uhr fallen keine Gebühren bei Nichterscheinen an.
In der folgenden Tabelle ist für jede Zahlungs-/Gebührenmethode aufgeführt, welches Feld im Verfügbarkeitsfeed verwendet werden muss, um die Definition der Dienstebene zu überschreiben.
Zahlungsart | Definition von Gebühren / Preisen | Überschreibbar? |
---|---|---|
Bezahlung bei Ankunft | Service.price
|
Preis kann über Availability.payment_option_id mit Verweis auf Merchant.payment_option überschrieben werden
|
Vorauszahlung | Service.price
|
Der Preis kann überschrieben werden, indem auf Availability.payment_option_id verwiesen wird, das auf Merchant.payment_option verweist.
|
Gebühr bei Nichterscheinen | Service.no_show_fee
|
Availability.no_show_fee
|
Zahlung | Service.deposit
|
Availability.deposit
|
Kreditkarte erforderlich | Service.require_credit_card
|
Availability.require_credit_card
|
Wenn Sie den Preis auf Verfügbarkeitsebene überschreiben möchten, müssen Sie zuerst eine Zahlungsoption auf Händlerebene definieren. Eine Anleitung zum Hinzufügen von Stornierungsfenstern auf Verfügbarkeitsebene finden Sie im Hilfeartikel Stornierungsfenster hinzufügen.