Transazioni fatturabili

Se il tuo contratto con Google prevede la fatturazione in base alle singole transazioni, la tua app deve chiamare NavigationTransactionRecorder.pickup() e NavigationTransactionRecorder.dropoff() per contrassegnare l'inizio e la fine di ogni transazione, in modo che Google possa monitorare e registrare le transazioni fatturabili. Consulta le linee guida per l'implementazione su questa pagina per determinare come allocare le transazioni fatturabili a corse e consegne.

Ottieni un oggetto NavigationTransactionRecorder

Per utilizzare i metodi pickup() e dropoff(), devi prima creare un'istanza di NavigationTransactionRecorder chiamando NavigationApi.getTransactionRecorder, come mostrato nell'esempio seguente:

NavigationTransactionRecorder transactionRecorder = NavigationApi.getTransactionRecorder(application);

Avvia una transazione con pickup()

Quando l'autista prende un passeggero o ritira un articolo per la consegna, la tua richiesta deve chiamare il numero NavigationTransactionRecorder.pickup(). Devi avviare questa chiamata quando il conducente interagisce con la tua app per registrare il ritiro. Non effettuare questa chiamata nell'ambito del callback onArrival().

Il seguente codice di esempio presuppone che il conducente tocchi un pulsante nell'UI della tua app durante il ritiro di un passeggero o di un articolo in consegna:

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"));
  }
});

Passa i seguenti parametri al metodo pickup():

  • Il valore Waypoint in cui viene effettuato il ritiro o null se il ritiro non fa parte di una sessione di navigazione esistente.
  • Uno o più ID transazione applicabili a questo ritiro. Un ID transazione è una stringa arbitraria che identifica in modo univoco una transazione fatturabile. Scopri di più sugli ID transazione di seguito.

Terminare una transazione con dropoff()

Quando l'autista consegna un passeggero o consegna un articolo, la richiesta deve chiamare il numero NavigationTransactionRecorder.dropoff(). Devi avviare questa chiamata quando il conducente interagisce con la tua app per registrare la consegna. Non effettuare questa chiamata nell'ambito del callback onArrival().

Il seguente codice di esempio presuppone che il conducente tocchi un pulsante nell'UI della tua app quando lascia un passeggero o un articolo in consegna:

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"));
  }
});

Passa i seguenti parametri al metodo dropoff():

  • Il valore Waypoint in cui si verifica l'abbandono o null se l'abbandono non fa parte di una sessione di navigazione esistente.
  • Uno o più ID transazione applicabili a questo abbandoni. Un ID transazione è una stringa arbitraria che identifica in modo univoco una transazione fatturabile. Scopri di più sugli ID transazione di seguito.

Utilizza il tuo ID transazione o generane uno

L'ID transazione consente di collegare una corsa a una transazione di fatturazione di Google. Un ID transazione è una stringa arbitraria con una lunghezza massima di 64 caratteri. L'ID deve essere univoco in tutte le transazioni.

La soluzione migliore è fornire il tuo ID transazione, che i tuoi sistemi già utilizzano e memorizzano.

In alternativa, puoi generare un ID transazione casuale e univoco chiamando NavigationTransactionRecorder.generateTransactionId(). Archivia l'ID generato nel caso in cui la tua organizzazione ne abbia bisogno per riconciliare le transazioni delle corse.

Linee guida per l'implementazione del registratore delle transazioni di navigazione

Utilizza le seguenti linee guida per determinare come assegnare le transazioni fatturabili a corse e consegne.

Linee guida generali:

  • Devi segnalare le transazioni fatturabili ogni volta che viene in uso l'SDK di navigazione per Android, compreso l'uso del fornitore di servizi di geolocalizzazione per strade alternative e anche se l'app non è in primo piano per un percorso specifico. Quando vuoi interrompere la segnalazione delle transazioni fatturabili, disattiva la navigazione chiamando stopGuidance() e disattiva la posizione individuata dalla strada con stopRequestingLocationUpdates().
  • Devi registrare le corse e le consegne come transazioni separate e indipendenti, anche se un autista effettua una corsa e una consegna contemporaneamente.
  • Devi registrare gli eventi di prelievo e ritiro non appena si verificano.

Linee guida per le transazioni relative alle corse:

  • Le sessioni di navigazione che non coinvolgono un passeggero (ad esempio, la guida verso un punto di ritiro o l'indirizzamento di un autista in un luogo popolare per i ritiri futuri) non vengono conteggiate come transazioni fatturabili.
  • Il ritiro e la consegna di un passeggero vengono conteggiati come un'unica transazione fatturabile.
  • Una corsa per un gruppo di passeggeri fatturata come gruppo viene conteggiata come una transazione fatturabile. In maggiore dettaglio, se il conducente prende due o più passeggeri in un luogo e li lascia in un altro luogo, addebitando loro la fatturazione in gruppo, viene conteggiata una singola transazione. Chiama pickup() una sola volta e dropoff() una sola volta, con l'ID transazione pertinente.
  • Una corsa condivisa per due passeggeri fatturati separatamente viene conteggiata come due transazioni fatturabili, anche se i passeggeri vengono presi in carico e lasciati negli stessi luoghi. Chiama pickup() con entrambi gli ID transazione (uno per ogni transazione) quando il conducente prende i passeggeri e chiama il numero dropoff() con entrambi gli ID transazione quando il conducente fa scendere i passeggeri.
  • Gli arresti anomali discrezionali non vengono conteggiati come transazioni fatturabili separate. Ad esempio, interrompere il viaggio per prendere il caffè o lasciare un passeggero senza costi aggiuntivi. Non chiamare dropoff() per stopover come questi, come di consueto.
  • Se la tua organizzazione fattura alcune corse indirettamente anziché al momento della corsa, devi considerare queste corse come se fossero calcolate per singola corsa. Ad esempio, la tua organizzazione potrebbe fornire un modello di abbonamento mensile per corse illimitate. Chiama pickup() e dropoff() per queste corse.
  • Se la tua organizzazione fornisce servizi di autobus che fanno salire e scendere i passeggeri in un insieme fisso di fermate, ma non tengono traccia delle persone che entrano ed escono da ogni fermata, devi ottenere una licenza di prodotto separata. Questi tipi di servizi bus non rientrano nell'ambito della fatturazione per transazione.
  • Se la tua organizzazione fornisce servizi di noleggio veicoli che consentono a un passeggero di effettuare un numero illimitato di scali, per un periodo di tempo prolungato, il tutto fatturato come un'unica tariffa, devi ottenere una licenza di prodotto separata. Questi servizi non rientrano nell'ambito della fatturazione per transazione.

Linee guida per le transazioni di pubblicazione:

  • Le sessioni di navigazione che non riguardano un articolo per la consegna (ad esempio, la guida in un negozio per il ritiro di prodotti da consegnare) non vengono conteggiate come transazioni fatturabili.
  • Il ritiro e la consegna di un ordine da una singola località vengono conteggiati come un'unica transazione fatturabile. Un ordine può includere più oggetti fisici, ad esempio due sacchetti della spesa. Chiama pickup() quando l'autista prende l'ordine e dropoff() quando l'autista consegna l'ordine.
  • Quando un autista preleva gli articoli da più sedi (ad esempio negozi o ristoranti) nell'ambito dello stesso ordine, ogni sede viene conteggiata come una transazione fatturabile separata. Utilizza un ID transazione diverso per ogni località.
  • Quando un autista ritira gli articoli per più ordini dei clienti dalla stessa località, ogni ordine viene conteggiato come una transazione fatturabile separata. Utilizza un ID transazione diverso per ogni ordine.
  • Quando due conducenti ritirano e consegnano separatamente gli articoli nell'ambito dello stesso ordine del cliente, la consegna di ciascun conducente viene conteggiata come una transazione fatturabile separata, anche se gli articoli provengono dalla stessa sede del negozio. Utilizza un ID transazione diverso per ogni conducente.