Verschiedene Zahlungsarten festlegen

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:

  1. Feeds mit Informationen zu tokenization_parameter konfigurieren
  2. Buchungsserver wird aktualisiert, damit payment_method_token Objekte akzeptiert werden
  3. Ü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.

  1. Keine Zahlungen / Zahlung bei Ankunft
  2. Vollständige Vorauszahlung
  3. Gebühr bei Nichterscheinen / Stornogebühr
  4. 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.