Platforma Actions Center obsługuje różne konfiguracje za przyjmowanie płatności. W artykule Włączanie Przewodnika po płatnościach omawiamy aspekty integracji, które są wspólne dla wszystkich integracji płatności, w tym:
- Konfigurowanie plików danych tak, aby zawierały informacje:
tokenization_parameter
- Aktualizuję serwer rezerwacji, aby akceptował
payment_method_token
obiekty - Przegląd informacji wymienianych między użytkownikiem, Centrum działań, partnera / sprzedawcy oraz firmę obsługującą płatności.
W tym przewodniku omówimy bardziej szczegółowo: skonfigurować pliki danych, aby określić, które z nich dotyczą. konfiguracji płatności obowiązują w przypadku Twoich sprzedawców i Twoich usług.
- Brak płatności / płatność przy przyjeździe
- Pełna przedpłata
- Brak opłaty za udział / opłaty za anulowanie
- Wpłata
Wszystkie przypadki użycia płatności to przedłużenie okresu braku płatności. / płatności po przyjeździe (który nie wymaga konfiguracji płatności). samouczek rozpocznie się od opisania tej konfiguracji i zastosowania jako rozszerzenia.
W każdej sekcji omówione zostaną również pola do śledzenia w sekcji serwer rezerwacji, by zaakceptować konkretną płatność konfiguracji.
Brak płatności / płatność przy przyjeździe
W przypadku usług, za które nie są pobierane żadne opłaty w momencie rezerwacji, nie jest wymagana konfiguracja płatności u sprzedawcy ani w usłudze na poziomie 300%. Podanie cen jest jednak wymagane.
To jest podstawowa konfiguracja usługi, która zawiera
nazwę, opis i cenę. To będzie pojedyncza wiadomość dotycząca usługi
w ciągu
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" } }
Poza wdrożeniem nie jest wymagana dodatkowa konfiguracja na serwerze rezerwacji, aby obsługiwać płatność po przyjeździe.
Przedpłata
Ta konfiguracja służy do określania, że kwota za usługę musi zostać zapłacona w całości w momencie rezerwacji.
Przedpłatę określa się na poziomie usługi w
prepayment_type
Service
Aby wymagać płatności za usługę,
powinna być ustawiona na REQUIRED
, jak w przykładzie poniżej. Pamiętaj, że
cena jest określona w taki sam sposób jak w przykładzie płatności po przyjeździe. Tutaj
ponieważ zmieniamy typ przedpłaty, karta kredytowa zostanie
została pobrana, a cena może zostać naliczona w momencie płatności.
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" }
Serwer rezerwacji
W przypadku akceptowania przedpłat token płatności jest przekazywany do rezerwacji
serwer w wywołaniu do
CreateBooking
przez pole
payment_processing_parameters.unparsed_payment_method_token
Musisz pobrać dokładnie kwotę podaną w
ceny w plikach danych i musisz użyć waluty
określone w plikach danych. Obciążenia te powinny być zgodne z opisanym tu procesem.
w
Włączanie przewodnika po płatnościach
Gdy zwracasz
CreateBookingResponse
pole booking.payment_information
musi być ustawione na poprawnie
potwierdza, że płatność została zrealizowana i przetworzona.
Specyfikacja PaymentInformation
zawiera pełną
dokumentację dotyczącą wszystkich opcji danych do płatności. Minimalistyczny przykład dla
informacje na temat sposobu przetwarzania przedpłaty podano poniżej. Ważne jest, aby cena
zwracany w polu price [cena] jest zgodny z wartością podaną w
użytkownika. Ponadto, jeśli w plikach danych lub żądaniach określono stawkę podatku,
musi także zostać uwzględniony w dokładnym brzmieniu.
Pamiętaj też, że musisz podać identyfikator transakcji. Ten identyfikator transakcji muszą być co najmniej unikalne wśród transakcji z tym sprzedawcą. O dobrym kandydatem do identyfikatora transakcji jest identyfikator transakcji podany w przez firmę obsługującą płatności.
JSON
{ "prepayment_status": "PREPAYMENT_PROVIDED", "payment_processed_by": "PROCESSED_BY_PARTNER", "payment_transaction_id": "[this-transaction-id]", "price": { "price_micros": "200000000", "currency_code": "USD" } }
Opłata za niestawienie się
Opłaty za niestawienie się mogą być naliczane użytkownikowi, jeśli nie weźmie on udziału w wydarzeniu lub jeśli anuluje rezerwację po okres anulowania. Jeśli nie podasz okresu anulowania, domyślnie jest ustawiana godzina rozpoczęcia przedziału.
Aby określić opłatę za niestawienie się, w pliku danych o usługach umieść w pliku danych o usługach
no_show_fee
(jak w przykładzie poniżej):
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" } }
W tym przykładzie partner lub sprzedawca jest upoważniony do
pobierać stałą opłatę w wysokości 25 USD, zgodnie z
Pole no_show_fee.fee.price_micros
, jeśli właściciel spotkania
nie uczestniczy w spotkaniu. Opłata może zostać naliczona również wtedy, gdy użytkownik
anuluje spotkanie w ciągu 4 godzin (14 400 sekund) przed spotkaniem,
określona w funkcji scheduling_rules.min_advance_online_canceling
.
Aby dowiedzieć się, jak można zdefiniować brak opłat za program na poziomie dostępności, zapoznaj się z artykułem tej sekcji.
Serwer rezerwacji
Podczas przetwarzania żądania, które obejmuje opłatę za niestawienie się, token płatności
jest przekazywane do serwera rezerwacji w wywołaniu z
CreateBooking
przez pole
payment_processing_parameters.unparsed_payment_method_token
Token jest przekazywany w taki sam sposób jak w przypadku przedpłaty.
tych kwestii. Token jest jednak autoryzowany tylko na krótki czas
musisz wywołać odpowiedni interfejs API firmy obsługującej płatności,
uaktualnij ten token do wersji, którą można zachować do użytku
później. Opisaliśmy to w sekcji Przewodnik dotyczący włączania płatności
włączono
Proces przesyłania tokenów opłaty za nieudostępnianie.
Gdy zwracasz
CreateBookingResponse
pole booking.payment_information
musi być ustawione prawidłowo
powtórz stan opłaty za niestawienie się, jak w przykładzie poniżej.
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" } }
Pamiętaj, że no_show_fee
jest ustawiony tak, aby odzwierciedlać cenę oraz
struktury opłat, które mogą zostać naliczone. Pamiętaj też, że podobnie jak w przypadku
przykład przedpłat, w tej wiadomości wymagane jest pole transaction_id
.
Pamiętaj też, że pole booking_id
ustawione w
CreateBookingResponse
.
to pole wymagane w przypadku aktualizacji w czasie rzeczywistym, które muszą być wysyłane podczas ładowania
opłaty za niestawienie się. Ten identyfikator powinien być przechowywany razem z informacjami
o rezerwacji.
Aktualizacje w czasie rzeczywistym
Jeśli użytkownik nie przybędzie na miejsce po zaplanowanej rezerwacji lub anuluje rezerwację po upływie okresu anulowania (np. przez skontaktowanie się z Tobą bezpośrednio), może opcjonalnie pobrać określoną opłatę za niestawienie się, korzystając z danych do płatności zapisanych w momencie rezerwacji. Jeśli pobierasz opłatę za niestawienie się, musisz przesłać Aktualizacja w czasie rzeczywistym z informacją, że została pobrana opłata za niestawienie się.
W przypadku rezerwacji utworzonych przez
CreateBooking
, aktualizację należy wysłać na adres
notification.partners.bookings.patch
W treści tego żądania powinno być:
zaktualizowanej rezerwacji z stanem ustawionym na
NO_SHOW_PENALIZED
Ten stan informuje Google, że obciążenie
podjętych działań.
Żądanie może zostać na przykład wysłane do:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status
Z treścią żądania:
JSON
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "NO_SHOW_PENALIZED" }
Wpłata
Wpłaty służą do pobrania opłaty wstępnej jako wymóg rezerwacji. Zaliczkę można opłacić w momencie rezerwacji lub później obecnie się znajdujesz. Konieczne może być określenie warunków, na jakich zaliczka jest zwracana, oraz gdy rezerwację można anulować online.
Aby określić wpłatę, w pliku danych usługi musisz umieścić atrybut
deposit
(jak w przykładzie poniżej):
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" } }
W tym przykładzie para klucz-wartość
min_advance_online_canceling
określa okres anulowania i
deposit.min_advance_cancellation_sec
określa termin zwrotu kaucji. Zwróć uwagę, że w przykładzie powyżej wpłata może określać
czasu anulowania niezależnie od warunków zwrotu środków. W takim przypadku użytkownik może anulować
usługę w trybie online z maksymalnie 24-godzinnym wyprzedzeniem (86 400 sekund). Dzięki temu sprzedawca
bezpośrednio informować o opóźnionych anulowaniu. Jednak użytkownik może nadal
jest uprawniona do otrzymania zwrotu zaliczki maksymalnie 4 godziny przed jej zgłoszeniem.
(14 400 sekund) przed rezerwacją (poprzez skontaktowanie się z Tobą lub sprzedawcą w celu anulowania),
, która pojawi się w warunkach płatności i w e-mailu z potwierdzeniem.
Aby dowiedzieć się, jak można definiować wpłaty na poziomie dostępności, zapoznaj się z artykułem tej sekcji.
Serwer rezerwacji
Podczas przetwarzania żądania, które obejmuje wpłatę, token płatności jest
przekazywane do serwera rezerwacji w wywołaniu z
CreateBooking
przez pole
payment_processing_parameters.unparsed_payment_method_token
Token jest przekazywany w taki sam sposób jak w przypadku przedpłaty. Jeśli
pobrać zaliczkę lub anulować blokadę w momencie rezerwacji, możesz to zrobić
podczas realizacji tej prośby.
Jeśli zamierzasz obciążyć depozyt w późniejszym czasie, ponieważ token jest autoryzowany tylko na krótki czas, musisz wywołać interfejsu API firmy obsługującej płatności, aby uaktualnić ten token do wersję, którą możesz zachować do późniejszego wykorzystania. To jest opisane w sekcji Przewodnik dotyczący włączania płatności na stronie procesu depozytu.
Gdy zwracasz
CreateBookingResponse
pole booking.payment_information
musi
odczytać stan wpłaty, tak jak w przykładzie poniżej.
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" } }
Pamiętaj, że wpłata odzwierciedla cenę i strukturę
która zostanie pobrana lub wstrzymana. Pamiętaj też, że podobnie jak w przypadku
przykład przedpłat, w tej wiadomości wymagane jest pole transaction_id
.
Aktualizacje w czasie rzeczywistym
Jeśli użytkownik anuluje rezerwację przed upływem okresu anulowania wpłaty, musi zwrócić wszelkie środki, które zostały pobrane z karty użytkownika. Kiedy zwrotu zaliczki, musisz przesłać Aktualizacja w czasie rzeczywistym z informacją, że wpłata została zwrócona.
W przypadku rezerwacji utworzonych przez
CreateBooking
, aktualizację należy wysłać na adres
notification.partners.bookings.patch
W treści
prośba powinna być zaktualizowaną rezerwacją, a jej stan to
CANCELED
oraz
Pole paymentInformation.prepaymentStatus
zostało ustawione na
PREPAYMENT_REFUNDED
Informuje to Google, że wpłata została
zwrócono środki.
Żądanie może zostać na przykład wysłane do:
PATCH https://mapsbooking.googleapis.com/v1alpha/notification/partners/12345678/bookings/123123123?updateMask=status
Z treścią żądania:
JSON
{ "name": "partners/12345678/bookings/123123123" "merchantId": "merchant-1" "serviceId": "service-2-b" "status": "CANCELED" "paymentInformation": { "prepaymentStatus": "PREPAYMENT_REFUNDED" } }
Wymagana karta kredytowa
Usługa może wymagać karty kredytowej jako dodatkowej weryfikacji tożsamości użytkownika. Nie należy jednak używać tej funkcji w przypadku przedpłat, wpłat lub opłat za niestawienie się. Jeśli te przypadki użycia są są wymagane, należy je skonfigurować bezpośrednio za pomocą instrukcji powyżej. Pamiętaj też, że prośba o kartę kredytową często skutkuje znacznie spadła liczba rezerwacji w przypadku tej usługi.
Aby wymagać podania karty kredytowej podczas płatności, należy ustawić
pole require_credit_card
do
REQUIRE_CREDIT_CARD_ALWAYS
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" }
Serwer rezerwacji
Przy przetwarzaniu żądania, które wymaga podania karty kredytowej,
token jest przekazywany do serwera rezerwacji w wywołaniu
CreateBooking
przez pole
payment_processing_parameters.unparsed_payment_method_token
Token jest przekazywany w taki sam sposób jak w przypadku przedpłaty.
tych kwestii. Ponieważ jednak token jest autoryzowany tylko na krótki czas
musisz wywołać odpowiedni interfejs API firmy obsługującej płatności,
uaktualnij ten token do wersji, którą można zachować do użytku
później.
W odpowiedzi serwera rezerwacji nie są wymagane żadne dodatkowe informacje niż w przypadku płatności po przybyciu.
Zastępowanie cen na poziomie dostępności
We wszystkich powyższych przykładach określono strukturę ceny / opłaty na poziomie usługi. W większości przypadków powinien być . W niektórych przypadkach warto jednak zmienić strukturę płatności w przypadku określonych przedziałów dostępności. Na przykład: można zastąpić ceny / opłaty na poziomie dostępności:
- Ceny są obniżone we wtorki, a w soboty rosną.
- Dostępność w godzinach 17:00–19:00 nie wiąże się z opłatami za udział w wydarzeniu.
W tabeli poniżej podano pole, które należy podać w przypadku każdej formy płatności / opłaty można użyć w pliku danych o dostępności, aby zastąpić definicję poziomu usługi.
Forma płatności | Definicja opłaty / ceny | Zastąpić? |
---|---|---|
Zapłać po przyjeździe | Service.price
|
Cenę można zastąpić do
Availability.payment_option_id – odsyłają
Merchant.payment_option
|
Przedpłata | Service.price
|
Cenę można zastąpić w:
Availability.payment_option_id – odsyłają
Merchant.payment_option
|
Brak opłaty za udział w programie | Service.no_show_fee
|
Availability.no_show_fee
|
Wpłata | Service.deposit
|
Availability.deposit
|
Wymagaj karty kredytowej | Service.require_credit_card
|
Availability.require_credit_card
|
Aby zastąpić cenę na poziomie dostępności, musisz najpierw zdefiniować jako opcji płatności na poziomie sprzedawcy. Dodatkowe wskazówki dotyczące dodawania okresy anulowania na poziomie dostępności, zobacz przewodnik Jak dodać okna anulowania