Transações faturáveis

Caso seu contrato com o Google especifique o faturamento por transação, seu app precisa chamar NavigationTransactionRecorder.pickup() e NavigationTransactionRecorder.dropoff() para marcar o início e o fim de cada transação. Assim, o Google pode acompanhar e registrar transações faturáveis. Consulte as diretrizes de implementação nesta página para determinar como alocar transações faturáveis para viagens e entregas.

Gerar um objeto NavigationTransactionRecorder

Para usar os métodos pickup() e dropoff(), primeiro é necessário criar uma instância de NavigationTransactionRecorder chamando NavigationApi.getTransactionRecorder, como mostrado no exemplo a seguir:

NavigationTransactionRecorder transactionRecorder = NavigationApi.getTransactionRecorder(application);

Iniciar uma transação com pickup()

Quando o motorista pega um passageiro ou coleta um item para entrega, seu aplicativo precisa chamar NavigationTransactionRecorder.pickup(). Você precisa iniciar essa chamada quando o motorista interagir com o app para registrar o embarque. Não faça essa chamada como parte do callback onArrival().

O exemplo de código abaixo pressupõe que o motorista toca em um botão na interface do app ao retirar um passageiro ou item de entrega:

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

Transmita os seguintes parâmetros para o método pickup():

  • A Waypoint em que a retirada está ocorrendo, ou null se ela não fizer parte de uma sessão de navegação atual.
  • Um ou mais IDs de transação que se aplicam a esta retirada. Um ID da transação é uma string arbitrária que identifica exclusivamente uma transação faturável. Saiba mais sobre IDs de transação abaixo.

Encerre uma transação com dropoff()

Quando o motorista deixa um passageiro ou entrega um item, seu aplicativo precisa chamar NavigationTransactionRecorder.dropoff(). Inicie essa chamada quando o motorista interagir com o app para registrar o desembarque. Não faça essa chamada como parte do callback onArrival().

O exemplo de código abaixo pressupõe que o motorista toca em um botão na interface do app ao deixar um passageiro ou item de entrega:

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

Transmita os seguintes parâmetros para o método dropoff():

  • A Waypoint em que a desistência está ocorrendo ou null se ela não fizer parte de uma sessão de navegação atual.
  • Um ou mais IDs de transação que se aplicam a essa entrega. Um ID da transação é uma string arbitrária que identifica exclusivamente uma transação faturável. Saiba mais sobre IDs de transação abaixo.

Use seu próprio ID da transação ou gere um

Com o ID da transação, é possível vincular uma viagem a uma transação de faturamento do Google. Um ID da transação é uma string arbitrária com um tamanho máximo de 64 caracteres. O ID precisa ser exclusivo em todas as transações.

Recomendamos que você forneça seu próprio ID da transação: um que seus sistemas já usam e armazenam.

Como alternativa, você pode gerar um ID da transação aleatório e exclusivo chamando NavigationTransactionRecorder.generateTransactionId(). Armazene o ID gerado caso sua organização precise dele para reconciliar transações de viagens.

Diretrizes de implementação para o gravador de transações de navegação

Use as diretrizes a seguir para determinar como alocar transações faturáveis para viagens e entregas.

Diretrizes gerais:

  • É necessário informar transações faturáveis sempre que o SDK do Navigation para Android estiver em uso, incluindo o uso do provedor de localização capturada na via, e mesmo que o app não esteja em primeiro plano para uma jornada específica. Se quiser parar de informar transações faturáveis, desative a navegação chamando stopGuidance() e desative a localização da via com stopRequestingLocationUpdates().
  • É necessário registrar viagens e entregas como transações separadas e independentes, mesmo que um motorista faça uma viagem e uma entrega ao mesmo tempo.
  • Você precisa registrar os eventos de embarque e desembarque imediatamente quando eles ocorrerem.

Diretrizes para transações de viagem:

  • Sessões de navegação que não envolvem um passageiro (por exemplo, dirigir até um ponto de embarque ou direcionar um motorista a um local conhecido para futuras embarques) não contam como transações faturáveis.
  • O embarque e o desembarque de um passageiro são contabilizados como uma transação faturável.
  • Uma viagem feita para um grupo de passageiros é contabilizada como uma transação faturável. Mais detalhes: se o motorista pega dois ou mais passageiros em um local e os deixa em outro, e você faz a cobrança como um grupo, isso conta como uma única transação. Chame pickup() apenas uma vez e dropoff() apenas uma vez, com o ID da transação relevante.
  • Uma viagem compartilhada para dois passageiros faturados separadamente é contabilizada como duas transações faturáveis, mesmo que eles sejam embarcados e desembarcados nos mesmos locais. Chame pickup() com os dois IDs de transação (um para cada transação) quando o motorista pegar os passageiros e chamar dropoff() com os dois IDs da transação quando o motorista desembarcar.
  • Com paradas discricionárias não conta como transações faturáveis separadas. Por exemplo, interromper a viagem para buscar café ou deixar um passageiro que não é cobrado separadamente. Não chame dropoff() para paradas como essas normalmente.
  • Se sua organização cobrar algumas viagens indiretamente em vez de cobrar no momento da viagem, trate essas viagens como se o faturamento fosse por viagem. Por exemplo, sua organização pode fornecer um modelo de assinatura mensal para viagens ilimitadas. Chame pickup() e dropoff() nessas viagens.
  • Se sua organização oferece serviços de ônibus que pegam e deixam passageiros em um conjunto fixo de paradas, mas não monitoram as pessoas que chegam e saem em cada parada, você precisa conseguir uma licença de produto separada. Esses tipos de serviços de ônibus estão fora do escopo do faturamento por transação.
  • Se sua organização oferece serviços de aluguel de veículos que permitem que um passageiro faça paradas ilimitadas durante um período prolongado cobrado como uma taxa, você precisa conseguir uma licença de produto separada. Esses serviços estão fora do escopo do faturamento por transação.

Diretrizes para transações de entrega:

  • Sessões de navegação que não envolvem um item para entrega (por exemplo, dirigir até uma loja para retirar produtos para entrega) não contam como transações faturáveis.
  • As retiradas e as entregas de um pedido em um único local contam como uma transação faturável. Um pedido pode incluir vários objetos físicos, como duas sacolas de mantimentos. Chame pickup() quando o motorista retirar o pedido e dropoff() quando ele entregar o pedido.
  • Quando um motorista retira itens em vários locais (por exemplo, lojas ou restaurantes) como parte do mesmo pedido, cada local é contabilizado como uma transação faturável separada. Use um ID da transação diferente para cada local.
  • Quando um motorista retira itens dos pedidos de vários clientes no mesmo local, cada pedido é contabilizado como uma transação faturável separada. Use um ID da transação diferente para cada pedido.
  • Quando dois motoristas retiram e entregam itens separadamente como parte do mesmo pedido do cliente, a entrega de cada um deles é contabilizada como uma transação faturável separada, mesmo que os itens sejam da mesma loja. Use um ID da transação diferente para cada motorista.