Transakcje podlegające rozliczeniu

Jeśli Twoja umowa z Google określa rozliczenia w odniesieniu do poszczególnych transakcji, aplikacja musi wywoływać metody NavigationTransactionRecorder.pickup() i NavigationTransactionRecorder.dropoff() w celu oznaczenia rozpoczęcia i zakończenia każdej transakcji, dzięki czemu Google będzie mogło śledzić i rejestrować transakcje podlegające rozliczeniu. Aby określić, jak przypisać transakcje podlegające rozliczeniu do Przejazdów i dostaw, zapoznaj się ze wskazówkami dotyczącymi implementacji na tej stronie.

Pobieranie obiektu NavigationTransactionRecorder

Aby używać metod pickup() i dropoff(), musisz najpierw utworzyć wystąpienie NavigationTransactionRecorder, wywołując NavigationApi.getTransactionRecorder, jak w tym przykładzie:

NavigationTransactionRecorder transactionRecorder = NavigationApi.getTransactionRecorder(application);

Rozpocznij transakcję od pickup()

Gdy kierowca podniesie pasażera lub odbierze przedmiot do dostawy, aplikacja musi wywołać numer NavigationTransactionRecorder.pickup(). Zainicjuj to połączenie, gdy kierowca podejmie działanie w Twojej aplikacji, aby zarejestrować odbiór. Nie wykonuj tego połączenia w ramach wywołania zwrotnego onArrival().

W tym przykładowym kodzie założono, że kierowca podnosi pasażera lub urządzenie dostarczane przez kierowcę, klikając przycisk w interfejsie aplikacji:

Button b = (Button) findViewById(R.id.btn_pickup);
b.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    transactionRecorder.pickup(
        null /* waypoint */,
        Arrays.asList("MY_TRANSACTION_ID"));
  }
});

Przekaż do metody pickup() te parametry:

  • Waypoint, w którym odbiór jest realizowany, lub null, jeśli odbiór nie jest częścią istniejącej sesji nawigacji.
  • Co najmniej jeden identyfikator transakcji dotyczący tego odbioru. Identyfikator transakcji to dowolny ciąg znaków, który jednoznacznie identyfikuje transakcję podlegającą rozliczeniu. Więcej informacji o identyfikatorach transakcji znajdziesz poniżej.

Zakończ transakcję z dropoff()

Gdy kierowca zawiezie pasażera lub dostarcza towar, aplikacja musi wywołać metodę NavigationTransactionRecorder.dropoff(). Zainicjuj to połączenie, gdy kierowca podejmie interakcję z Twoją aplikacją, aby zarejestrować porzucenie. Nie wykonuj tego połączenia w ramach wywołania zwrotnego onArrival().

W tym przykładowym kodzie założono, że kierowca musi kliknąć przycisk w interfejsie aplikacji podczas zabierania pasażera lub dostawy:

Waypoint waypoint = mNavigator.getCurrentRouteSegment().getDestinationWaypoint();

Button b = (Button) findViewById(R.id.btn_dropoff);
b.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    transactionRecorder.dropoff(
        waypoint,
        Arrays.asList("MY_TRANSACTION_ID"));
  }
});

Przekaż do metody dropoff() te parametry:

  • Waypoint, w którym następuje porzucenie, lub null, jeśli ta sesja nie jest częścią istniejącej sesji nawigacji.
  • Co najmniej jeden identyfikator transakcji odnoszący się do tego rezygnacji. Identyfikator transakcji to dowolny ciąg znaków, który jednoznacznie identyfikuje transakcję podlegającą rozliczeniu. Więcej informacji o identyfikatorach transakcji znajdziesz poniżej.

Użyj własnego identyfikatora transakcji lub wygeneruj go

Identyfikator transakcji pozwala połączyć przejazd z transakcją rozliczeniową od Google. Identyfikator transakcji to dowolny ciąg znaków o maksymalnej długości 64 znaków. Identyfikator musi być unikalny dla wszystkich transakcji.

Najlepiej jest podać własny identyfikator transakcji, który jest już używany i przechowywany przez Twoje systemy.

Możesz też wygenerować losowy, unikalny identyfikator transakcji, wywołując metodę NavigationTransactionRecorder.generateTransactionId(). Zapisz wygenerowany identyfikator na wypadek, gdyby Twoja organizacja potrzebowała go do uzgadniania transakcji przejazdów.

Wytyczne dotyczące implementacji rejestru transakcji nawigacji

Aby określić, jak przypisywać transakcje podlegające rozliczeniu do Przejazdów i dostaw, skorzystaj z tych wytycznych.

Ogólne wskazówki:

  • Transakcje musisz zgłaszać za każdym razem, gdy używasz pakietu SDK nawigacji na Androida, w tym korzystania z dostawcy lokalizacji korzystającej z danych o drogach, nawet jeśli w przypadku konkretnej podróży aplikacja nie działa na pierwszym planie. Jeśli chcesz zatrzymać raportowanie płatnych transakcji, wyłącz nawigację, wywołując metodę stopGuidance(), a lokalizację wyznaczaną na drodze wyłącz za pomocą funkcji stopRequestingLocationUpdates().
  • Musisz rejestrować Przejazdy i dostawy jako osobne, niezależne transakcje, nawet jeśli kierowca zarówno je zamawia, jak i z dostawą w tym samym czasie.
  • Zdarzenia odbioru i dostawy musisz rejestrować natychmiast po wystąpieniu zdarzenia.

Zasady dotyczące transakcji przejazdów:

  • Sesje nawigacji, które nie obejmują pasażera (np. jazdę do punktu odbioru lub przekierowanie kierowcy do popularnej lokalizacji w celu późniejszego odbioru), nie są liczone jako transakcje podlegające rozliczeniu.
  • Odbiór i dostawa jednego pasażera są liczone jako jedna transakcja podlegająca rozliczeniu.
  • Przejazd dla grupy pasażerów rozliczany jako grupa jest liczony jako 1 transakcja podlegająca rozliczeniu. Więcej informacji: jeśli kierowca zabierze co najmniej 2 pasażerów w jednym miejscu i zawiezie ich w innym miejscu, a Ty naliczysz ich jako grupę, zostanie to zliczone jako jedna transakcja. Zadzwoń do firmy pickup() tylko raz i do firmy dropoff() tylko raz, podając odpowiedni identyfikator transakcji.
  • Wspólny przejazd dla 2 osobnych opłacanych pasażerów liczy się jako 2 transakcje podlegające rozliczeniu, nawet jeśli pasażerowie są wstrzymani i wysiedzeni w tych samych miejscach. Wywołaj połączenie pickup() z oboma identyfikatorami transakcji (po jednym na każdą transakcję), gdy kierowca zabiera pasażerów, a dropoff() z oboma identyfikatorami transakcji, gdy kierowca zabiera pasażerów.
  • Czasowe przerwy w działaniu usługi nie są liczone jako osobne transakcje podlegające rozliczeniu. Może to być na przykład przerwanie przejazdu, aby odebrać kawę lub zabrać współpasażera, który nie jest osobno rozliczany. Nie dzwoń jak zwykle w przypadku takich przesiadek: dropoff().
  • Jeśli Twoja organizacja rozlicza niektóre przejazdy pośrednio, a nie za przejazdy, musisz traktować te przejazdy tak, jakby opłaty były naliczane za każdy przejazd. Twoja organizacja może na przykład oferować model miesięcznej subskrypcji na nieograniczoną liczbę przejazdów. Zadzwoń do firm pickup() i dropoff(), aby zamówić przejazd.
  • Jeśli Twoja organizacja świadczy usługi autobusowe, które odbierają i wysadzają pasażerów na określonych postojach, ale nie monitorują osób wsiadających i wyjeżdżających na poszczególnych przystanku, musisz uzyskać osobną licencję na usługę. Płatności autobusowe tego typu nie są uwzględnione w rozliczeniach według transakcji.
  • Jeśli Twoja organizacja oferuje usługi wynajmu pojazdów, które umożliwiają pasażerowi nieograniczoną liczbę przesiadek w dłuższym okresie, w ramach jednej opłaty, musisz uzyskać oddzielną licencję na usługę. Usługi te nie są objęte rozliczeniami za transakcję.

Wskazówki dotyczące transakcji realizowanych z dostawą:

  • Sesje nawigacji, które nie obejmują przedmiotu przeznaczonego do dostawy (np. jazdę do sklepu, aby odebrać towar do dostarczenia), nie są uznawane za transakcje podlegające rozliczeniu.
  • Odbiór i zwrot zamówienia w jednym miejscu są liczone jako jedna transakcja podlegająca rozliczeniu. Zamówienie może obejmować wiele przedmiotów fizycznych, np. 2 torebki zakupów spożywczych. Zadzwoń pod numer pickup(), gdy kierowca odbierze zamówienie, i dropoff(), gdy kierowca dostarczy zamówienie.
  • Gdy kierowca odbiera pozycje z wielu lokalizacji (np. ze sklepów lub restauracji) w ramach tego samego zamówienia, każda z nich jest liczona jako osobna transakcja podlegająca rozliczeniu. Użyj innego identyfikatora transakcji dla każdej lokalizacji.
  • Gdy kierowca odbierze z tej samej lokalizacji produkty dla wielu klientów, każde zamówienie będzie liczone jako osobna transakcja podlegająca rozliczeniu. Do każdego zamówienia użyj innego identyfikatora transakcji.
  • Gdy 2 kierowców oddzielnie odbiera i dostarcza produkty w ramach tego samego zamówienia klienta, dostawa każdego z nich jest liczona jako osobna transakcja podlegająca rozliczeniu, nawet jeśli produkty pochodzą z tego samego sklepu. Użyj innego identyfikatora transakcji dla każdego kierowcy.