Transactions facturables

Si votre contrat avec Google spécifie la facturation par transaction, votre application doit appeler NavigationTransactionRecorder.pickup() et NavigationTransactionRecorder.dropoff() pour indiquer le début et la fin de chaque transaction, afin que Google puisse suivre et consigner les transactions facturables. Consultez les consignes d'implémentation sur cette page pour déterminer comment affecter les transactions facturables aux courses et aux livraisons.

Obtenir un objet NavigationTransactionRecorder

Pour utiliser les méthodes pickup() et dropoff(), vous devez d'abord créer une instance de NavigationTransactionRecorder en appelant NavigationApi.getTransactionRecorder, comme illustré dans l'exemple suivant:

NavigationTransactionRecorder transactionRecorder = NavigationApi.getTransactionRecorder(application);

Lancer une transaction avec pickup()

Lorsque le chauffeur récupère un passager ou récupère un article à livrer, votre application doit appeler NavigationTransactionRecorder.pickup(). Vous devez lancer cet appel lorsque le conducteur interagit avec votre application pour enregistrer le retrait. N'effectuez pas cet appel dans le cadre du rappel onArrival().

L'exemple de code suivant suppose que le chauffeur appuie sur un bouton dans l'interface utilisateur de votre application lorsqu'il récupère un passager ou un article en livraison:

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

Transmettez les paramètres suivants à la méthode pickup():

  • Valeur Waypoint associée à la prise en charge, ou null si le retrait ne fait pas partie d'une session de navigation existante.
  • Un ou plusieurs ID de transaction s'appliquant à ce retrait. Un ID de transaction est une chaîne arbitraire qui identifie de manière unique une transaction facturable. Vous trouverez plus d'informations sur les ID de transaction ci-dessous.

Mettre fin à une transaction avec dropoff()

Lorsque le conducteur dépose un passager ou livre un article, votre application doit appeler NavigationTransactionRecorder.dropoff(). Vous devez lancer cet appel lorsque le conducteur interagit avec votre application pour enregistrer le dépôt. N'effectuez pas cet appel dans le cadre du rappel onArrival().

L'exemple de code suivant suppose que le chauffeur appuie sur un bouton dans l'interface utilisateur de votre application lorsqu'il dépose un passager ou un article livré:

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

Transmettez les paramètres suivants à la méthode dropoff():

  • Waypoint auquel le dépôt se produit ou null si le dépôt ne fait pas partie d'une session de navigation existante.
  • Un ou plusieurs ID de transaction qui s'appliquent à cet abandon. Un ID de transaction est une chaîne arbitraire qui identifie de manière unique une transaction facturable. Vous trouverez plus d'informations sur les ID de transaction ci-dessous.

Utilisez votre propre ID de transaction ou générez-en un

L'ID de transaction permet d'associer un trajet à une transaction de facturation provenant de Google. Un ID de transaction est une chaîne arbitraire d'une longueur maximale de 64 caractères. L'identifiant doit être unique pour toutes les transactions.

Il est préférable de fournir votre propre ID de transaction, c'est-à-dire un ID que vos systèmes utilisent et stockent déjà.

Vous pouvez également générer un ID de transaction aléatoire et unique en appelant NavigationTransactionRecorder.generateTransactionId(). Stockez l'ID généré au cas où votre organisation en aurait besoin pour rapprocher les transactions de course.

Consignes d'implémentation pour l'enregistreur de transactions de navigation

Utilisez les instructions suivantes pour déterminer comment allouer les transactions facturables aux courses et aux livraisons.

Consignes générales:

  • Vous devez enregistrer les transactions facturables chaque fois que le SDK Navigation pour Android est utilisé, y compris via le fournisseur de services de localisation enregistré sur la route, et même si l'application n'est pas au premier plan pour un trajet spécifique. Lorsque vous ne souhaitez plus signaler les transactions facturables, désactivez la navigation en appelant stopGuidance() et désactivez la localisation enregistrée sur la route avec stopRequestingLocationUpdates().
  • Vous devez enregistrer les courses et les livraisons en tant que transactions distinctes et indépendantes, même si un chauffeur effectue un trajet et une livraison en même temps.
  • Vous devez enregistrer les événements de prise en charge et de dépose dès qu'ils se produisent.

Consignes concernant les transactions de covoiturage:

  • Les sessions de navigation n'impliquant pas un passager (par exemple, conduire jusqu'à un point de prise en charge ou diriger un chauffeur vers un lieu populaire pour un futur retrait) ne sont pas comptabilisées comme des transactions facturables.
  • L'embarquement d'un passager est comptabilisé comme une transaction facturable.
  • Un trajet pour un groupe de passagers facturé de manière groupée est comptabilisé comme une transaction facturable. Plus précisément, si le chauffeur récupère deux passagers ou plus à un endroit et les dépose à un autre endroit, et que vous les facturez de manière groupée, cela compte comme une transaction unique. Appelez pickup() une seule fois et dropoff() une seule fois avec l'ID de transaction approprié.
  • Un trajet partagé pour deux passagers facturés séparément compte comme deux transactions facturables, même si les passagers sont pris en charge et déposés aux mêmes endroits. Appelez pickup() avec les deux ID de transaction (un pour chaque transaction) lorsque le chauffeur récupère les passagers, puis dropoff() avec les deux ID de transaction lorsque le conducteur dépose les passagers.
  • Les arrêts discrétionnaires ne sont pas comptabilisés comme des transactions facturables distinctes. (par exemple, interrompre le trajet pour aller chercher du café ou déposer un passager qui n'est pas facturé séparément). Comme d'habitude, n'appelez pas dropoff() pour les arrêts de ce type.
  • Si votre organisation facture certains trajets indirectement plutôt qu'au moment du trajet, vous devez considérer ces trajets comme si vous les facturiez à un trajet. Par exemple, votre organisation peut proposer un modèle d'abonnement mensuel pour des trajets illimités. Appeler pickup() et dropoff() pour ces trajets.
  • Si votre organisation fournit des services de bus qui embarquent et déposent des passagers à des arrêts fixes, mais qui ne suivent pas les personnes qui entrent et sortent à chaque arrêt, vous devez obtenir une licence de produit distincte. Ces types de services de bus sont en dehors du champ d'application de la facturation à la transaction.
  • Si votre organisation propose des services de location de véhicules permettant aux passagers d'effectuer des arrêts illimités sur une période prolongée, tous facturés à un prix unique, vous devez obtenir une licence de produit distincte. Ces services n'entrent pas dans le champ d'application de la facturation par transaction.

Consignes pour les transactions de livraison:

  • Les sessions de navigation qui n'impliquent pas la livraison d'un article (par exemple, un véhicule pour récupérer un produit à livrer) ne sont pas comptabilisées comme des transactions facturables.
  • Le retrait et le dépôt d'une commande à partir d'un même point de dépôt sont comptabilisés comme une seule transaction facturable. Une commande peut inclure plusieurs objets physiques, par exemple deux sacs de courses. Appelez pickup() lorsque le chauffeur la récupère, et dropoff() lorsqu'il la livre.
  • Lorsqu'un chauffeur récupère des articles à plusieurs endroits (par exemple, des magasins ou des restaurants) dans le cadre d'une même commande, chaque établissement est comptabilisé comme une transaction facturable distincte. Utilisez un ID de transaction différent pour chaque établissement.
  • Lorsqu'un chauffeur récupère des articles pour plusieurs commandes de clients au même établissement, chaque commande est comptabilisée comme une transaction facturable distincte. Utilisez un ID de transaction différent pour chaque commande.
  • Lorsque deux livreurs récupèrent et déposez séparément des articles dans le cadre de la même commande client, la livraison de chaque chauffeur est comptabilisée comme une transaction facturable distincte, même si les articles se trouvent dans le même magasin. Utilisez un ID de transaction différent pour chaque conducteur.