Ustawianie różnych form płatności

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:

  1. Konfigurowanie plików danych tak, aby zawierały informacje: tokenization_parameter
  2. Aktualizuję serwer rezerwacji, aby akceptował payment_method_token obiekty
  3. 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.

  1. Brak płatności / płatność przy przyjeździe
  2. Pełna przedpłata
  3. Brak opłaty za udział / opłaty za anulowanie
  4. 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. 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.

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