Die Actions Center-Plattform unterstützt eine Vielzahl von Konfigurationen für die Annahme von Zahlungen. Im Leitfaden zur Aktivierung von Zahlungen werden die Aspekte der Integration behandelt, die für alle Zahlungsintegrationen gelten, darunter:
- Feeds mit Informationen zu
tokenization_parameter
konfigurieren - Buchungsserver wird aktualisiert, damit
payment_method_token
Objekte akzeptiert werden - Übersicht über die Informationen, die zwischen einem Nutzer, dem Actions Center, dem Partner / Händler und dem Zahlungsabwickler ausgetauscht werden.
In diesem Leitfaden erfährst du ausführlicher, wie du deine Feeds konfigurieren kannst, um festzulegen, welche der verschiedenen Zahlungskonfigurationen für deine Händler und Dienstleistungen geeignet ist.
- Keine Zahlungen / Zahlung bei Ankunft
- Vollständige Vorauszahlung
- Gebühr bei Nichterscheinen / Stornogebühr
- Deposit
Alle Anwendungsfälle für Zahlungen sind Erweiterungen des Anwendungsfalls „Keine Zahlungen“ / „Bei Ankunft“, 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 behandelt, die auf dem Buchungsserver beobachtet werden sollen, damit die jeweilige Zahlungskonfiguration akzeptiert wird.
Keine Zahlungen / Zahlung bei Ankunft
Bei Dienstleistungen, für die bei der Buchung keine Zahlung erforderlich ist, ist keine Zahlungskonfiguration auf Händler- oder Serviceebene erforderlich. Preise sind jedoch weiterhin erforderlich.
Dies ist die Basiskonfiguration 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": "service-1-a", "name": "Men's haircut", "description": "One of our stylists will cut your hair", "price": { "price_micros": 15000000, "currency_code": "USD" } }
Auf dem Buchungsserver ist keine weitere Konfiguration erforderlich, um die Zahlung bei Ankunft zu ermöglichen.
Vorauszahlung
Mit dieser Konfiguration wird angegeben, dass der Preis für die Dienstleistung bei der Buchung vollständig bezahlt werden muss.
Die Vorauszahlung wird auf Serviceebene im Feld prepayment_type
der Service
angegeben. Wenn für einen Dienst Zahlungen erforderlich sein sollen, sollte dieser Wert wie im Beispiel unten auf REQUIRED
festgelegt werden. Der Preis wird genauso angegeben wie im Beispiel für die Zahlung bei Ankunft. Da wir die Vorauszahlungsart hier auf „erforderlich“ setzen, wird eine Kreditkarte erfasst. Dieser Preis kann beim Bezahlen in Rechnung gestellt werden.
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" }
Buchungsserver
Wenn du Vorauszahlungen akzeptierst, wird im Aufruf von CreateBooking
über das Feld payment_processing_parameters.unparsed_payment_method_token
ein Zahlungstoken an deinen Buchungsserver übergeben.
Sie müssen genau den im Preisfeld in den Feeds angegebenen Betrag in Rechnung stellen und die in den Feeds angegebene Währung verwenden. Diese Gebühren müssen dem im Leitfaden zur Aktivierung von Zahlungen beschriebenen Ablauf folgen.
Wenn ein CreateBookingResponse
zurückgegeben wird, muss das Feld booking.payment_information
so festgelegt sein, dass korrekt angegeben ist, dass die Vorauszahlung geleistet und verarbeitet wurde.
Die PaymentInformation
-Spezifikation enthält die vollständige Dokumentation für alle Optionen für Zahlungsinformationen. Ein Beispiel für die Verarbeitung der Vorauszahlung finden Sie unten. Der im Preisfeld zurückgegebene Preis muss genau mit dem in der Anfrage angegebenen Preis übereinstimmen. Wenn im Feed bzw. in der Anfrage ein Steuersatz angegeben ist, muss dieser ebenfalls genau angegeben werden.
Außerdem muss eine Transaktions-ID angegeben werden. Diese Transaktions-ID muss unter den Transaktionen mit diesem Händler mindestens eindeutig sein. Ein guter Kandidaten für eine Transaktions-ID ist die Transaktions-ID, die Ihnen vom Zahlungsabwickler bereitgestellt 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" } }
Gebühr bei Nichterscheinen
Bei Nichterscheinen kann dem Nutzer eine Gebühr in Rechnung gestellt werden, wenn er nicht an der Reservierung teilnimmt oder nach Ablauf der Stornierungsfrist storniert. Wenn kein Stornierungsfenster angegeben ist, wird standardmäßig die Startzeit des Slots verwendet.
Wenn du eine Gebühr bei Nichterscheinen angeben möchtest, musst du im Dienstleistungsfeed das Feld no_show_fee
angeben, 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 obigen Beispiel ist der Partner oder Händler berechtigt, einen Festpreis von 25 $wie im Feld no_show_fee.fee.price_micros
angegeben zu berechnen, wenn der Termininhaber nicht am Termin teilnimmt. Diese Gebühr kann auch erhoben werden, wenn der Nutzer innerhalb von 4 Stunden (14.400 Sekunden) vor dem Termin abgesagt hat, wie im Feld scheduling_rules.min_advance_online_canceling
angegeben.
Informationen dazu, wie Gebühren bei Nichterscheinen auf Verfügbarkeitsebene definiert werden können, findest du in diesem Abschnitt.
Buchungsserver
Bei der Verarbeitung einer Anfrage, die eine Gebühr bei Nichterscheinen enthält, wird im Aufruf an CreateBooking
über das Feld payment_processing_parameters.unparsed_payment_method_token
ein Zahlungstoken an deinen Buchungsserver gesendet.
Dieses Token wird auf dieselbe Weise wie im Vorauszahlungsfall übergeben. 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 eine spätere Verwendung beibehalten können. Dies wird im Abschnitt zum Aktivieren von Zahlungen im Leitfaden zum Vorgang für Tokens bei Nichterscheinen beschrieben.
Wenn ein CreateBookingResponse
zurückgegeben wird, muss das Feld booking.payment_information
festgelegt sein, damit der Status der Gebühr bei Nichterscheinen korrekt zurückgegeben wird (siehe Beispiel unten).
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" } }
Beachten Sie, dass no_show_fee
den Preis und die Struktur der gegebenenfalls anfallenden Gebühr widerspiegelt. Ähnlich wie im Beispiel für Vorauszahlungen ist in dieser Nachricht ein transaction_id
erforderlich.
Das in CreateBookingResponse
festgelegte booking_id
-Feld ist ein Pflichtfeld für Echtzeitaktualisierungen, die gesendet werden müssen, wenn eine Gebühr bei Nichterscheinen erhoben wird. Diese ID sollte zusammen mit Informationen zur Buchung gespeichert werden.
Echtzeitaktualisierungen
Wenn ein Nutzer nicht zu seiner geplanten Buchung ankommt oder nach Ablauf der Stornierungsfrist storniert (z.B. durch direkte Kontaktaufnahme mit dir), kannst du optional die angegebene Gebühr bei Nichterscheinen mit den Zahlungsinformationen berechnen, die du bei der Buchung gespeichert hast. Wenn du eine Gebühr bei Nichterscheinen berechnest, musst du ein Echtzeitupdate senden, in dem die Gebühr für Nichterscheinen angegeben ist.
Für Buchungen, die von CreateBooking
erstellt wurden, sollte eine Aktualisierung an notification.partners.bookings.patch
gesendet werden. Der Text dieser Anfrage sollte die aktualisierte Buchung mit dem Status NO_SHOW_PENALIZED
enthalten. Dieser Status informiert Google darüber, dass eine Belastung erfolgt ist.
Beispielsweise könnte eine Anfrage 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
Die Anzahlung wird als erste Zahlung als Voraussetzung für die Buchung eingezogen. Anzahlungen können bei der Buchung oder zu einem späteren Zeitpunkt in Rechnung gestellt werden. Möglicherweise müssen Sie festlegen, unter welchen Bedingungen eine Anzahlung erstattungsfähig ist und wann eine Buchung online storniert werden kann.
Wenn du eine Anzahlung angeben möchtest, musst du das Feld deposit
im Dienstleistungsfeed angeben, 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 der min_advance_online_canceling
die Stornierungsfrist und der deposit.min_advance_cancellation_sec
definiert, wann die Anzahlung erstattungsfähig ist. Im obigen Beispiel kann für eine Anzahlung eine Stornierungszeit unabhängig von den Erstattungsbedingungen angegeben werden. In diesem Fall kann ein Nutzer den Dienst bis zu 24 Stunden im Voraus (86.400 Sekunden) online stornieren. So wird der Händler direkt über verspätete Stornierungen informiert. Der Nutzer hat jedoch möglicherweise bis 4 Stunden im Voraus (14.400 Sekunden) vor der Buchung Anspruch auf eine Erstattung, indem er Sie oder den Händler zur Stornierung kontaktiert. 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, findest du in diesem Abschnitt.
Buchungsserver
Bei der Verarbeitung einer Anfrage, die eine Anzahlung enthält, wird im Aufruf an CreateBooking
über das Feld payment_processing_parameters.unparsed_payment_method_token
ein Zahlungstoken an deinen Buchungsserver übergeben.
Dieses Token wird auf dieselbe Weise übergeben wie im Vorauszahlungsfall. Wenn Sie die Anzahlung in Rechnung stellen oder die Vorautorisierung bei der Buchung abheben, können Sie das während dieser Anfrage tun.
Wenn Sie beabsichtigen, die Zahlung zu einem späteren Zeitpunkt zu belasten, müssen Sie die entsprechende API Ihres Zahlungsabwicklers aufrufen, um das Token in eine Version hochzustufen, die Sie für eine spätere Verwendung beibehalten können, da das Token nur für kurze Zeit autorisiert ist. Dies wird im Abschnitt zum Aktivieren von Zahlungen unter Vorgang für Zahlungstokens beschrieben.
Wenn ein CreateBookingResponse
zurückgegeben wird, muss das Feld booking.payment_information
den Status der Zahlung wie im folgenden Beispiel korrekt zurückgeben.
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" } }
Beachten Sie, dass die Anzahlung auf den Preis und die Struktur der Kaution festgelegt ist, die berechnet oder einbehalten wird. Ähnlich wie im Beispiel für Vorauszahlungen ist in dieser Nachricht ein transaction_id
erforderlich.
Echtzeitaktualisierungen
Wenn ein Nutzer seine Buchung vor Ablauf der Stornierungsfrist storniert, musst du jede Anzahlung erstatten, die du auf der Nutzerkarte belastet hast. Bei Erstattung einer Anzahlung musst du ein Echtzeitupdate senden, in dem die Erstattung der Zahlung bestätigt wird.
Für Buchungen, die von CreateBooking
erstellt wurden, sollte eine Aktualisierung an notification.partners.bookings.patch
gesendet werden. Der Text dieser Anfrage sollte die aktualisierte Buchung enthalten. Dabei muss der Status auf CANCELED
und das Feld paymentInformation.prepaymentStatus
auf PREPAYMENT_REFUNDED
gesetzt sein. Dadurch wird Google darüber informiert, dass die Zahlung erstattet wurde.
Beispielsweise könnte eine Anfrage 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
Ein Dienst kann eine Kreditkarte erfordern, um die Identität des Nutzers zusätzlich zu bestätigen. Sie sollte jedoch nicht für Vorauszahlungen, Anzahlungen oder Gebühren bei Nichterscheinen verwendet werden. Wenn diese Anwendungsfälle erforderlich sind, sollten sie explizit mit den oben genannten Schritten konfiguriert werden. Beachte bitte auch, dass die Angabe einer Kreditkarte häufig zu einem erheblichen Rückgang der Buchungen für diese Dienstleistung führt.
Damit 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": "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, für die Kreditkarten erforderlich sind, wird im Aufruf an CreateBooking
über das Feld payment_processing_parameters.unparsed_payment_method_token
ein Zahlungstoken an deinen Buchungsserver übergeben.
Dieses Token wird auf dieselbe Weise wie im Vorauszahlungsfall übergeben. 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 eine spätere Verwendung beibehalten können.
In der Antwort des Buchungsservers sind außer dem Anwendungsfall „Pay-on-Arrival“ keine weiteren Informationen erforderlich.
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ügbare Slots zu ändern. In den folgenden Situationen können Sie beispielsweise Preise / Gebühren auf Verfügbarkeitsebene überschreiben:
- Die Preise werden dienstags reduziert und samstags erhöht.
- Bei Nichterscheinen fällt eine Gebühr zwischen 17:00 und 19:00 Uhr an.
In der folgenden Tabelle ist für jede Zahlungs-/Gebührenmethode angegeben, welches Feld im Verfügbarkeitsfeed verwendet werden soll, um die Definition des Servicelevels zu überschreiben.
Zahlungsart | Gebühr / Preis – Definition | Überschreibbar? |
---|---|---|
Bei Ankunft bezahlen | Service.price
|
Der Preis kann durch Availability.payment_option_id überschrieben werden und bezieht sich auf Merchant.payment_option
|
Vorauszahlung | Service.price
|
Der Preis kann durch Availability.payment_option_id überschrieben werden und verweist auf Merchant.payment_option
|
Gebühr bei Nichterscheinen | Service.no_show_fee
|
Availability.no_show_fee
|
Deposit | Service.deposit
|
Availability.deposit
|
Kreditkarte erforderlich | Service.require_credit_card
|
Availability.require_credit_card
|
Wenn Sie Preise auf Verfügbarkeitsebene überschreiben möchten, müssen Sie 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.