請求対象取引

Google との契約でトランザクションごとの請求が指定されている場合、アプリは NavigationTransactionRecorder.pickup()NavigationTransactionRecorder.dropoff() を呼び出して各トランザクションの開始と終了をマークする必要があります。これにより、Google が請求対象トランザクションを追跡してログに記録できるようになります。請求対象トランザクションを配車と配達に割り当てる方法については、このページの実装ガイドラインをご覧ください。

NavigationTransactionRecorder オブジェクトを取得する

pickup() メソッドと dropoff() メソッドを使用するには、次の例に示すように、まず NavigationApi.getTransactionRecorder を呼び出して NavigationTransactionRecorder のインスタンスを作成する必要があります。

NavigationTransactionRecorder transactionRecorder = NavigationApi.getTransactionRecorder(application);

pickup() でトランザクションを開始する

ドライバーが乗客を迎えるか、配達する商品を受け取る場合、アプリは NavigationTransactionRecorder.pickup() を呼び出す必要があります。この呼び出しは、ドライバーがアプリとやり取りして乗車を登録する際に開始する必要があります。この呼び出しを onArrival() コールバックの一部としては行わないでください。

次のサンプルコードは、ドライバーが乗客または配達アイテムを受け取るときにアプリの UI のボタンをタップすることを前提としています。

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

次のパラメータを pickup() メソッドに渡します。

  • 乗車が行われる Waypoint、または乗車が既存のナビゲーション セッションの一部でない場合は null
  • この受け取りに適用される 1 つ以上のトランザクション ID。トランザクション ID は、請求対象のトランザクションを一意に識別する任意の文字列です。詳細については、後述のトランザクション ID をご覧ください。

dropoff() との取引を終了する

ドライバーが乗客を降車するとき、または荷物を配達したときに、アプリは NavigationTransactionRecorder.dropoff() を呼び出す必要があります。この呼び出しは、ドライバーがアプリを操作して降車を登録する際に開始します。この呼び出しを onArrival() コールバックの一部としては行わないでください。

次のサンプルコードは、ドライバーが乗客または配達用のアイテムを降ろすときにアプリの UI のボタンをタップすることを前提としています。

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

次のパラメータを dropoff() メソッドに渡します。

  • 離脱が発生している Waypoint、または離脱が既存のナビゲーション セッションの一部でない場合は null
  • このドロップオフに適用される 1 つ以上のトランザクション ID。トランザクション ID は、請求対象のトランザクションを一意に識別する任意の文字列です。詳細については、後述のトランザクション ID をご覧ください。

独自の取引 ID を使用するか、トランザクション ID を生成する

トランザクション ID は、配車を Google の請求トランザクションとリンクするために使用します。トランザクション ID は 64 文字以下の任意の文字列です。ID はトランザクション間で一意である必要があります。

システムですでに使用および保存されている独自の取引 ID を指定することをおすすめします。

または、NavigationTransactionRecorder.generateTransactionId() を呼び出して、ランダムな一意のトランザクション ID を生成することもできます。生成された ID は、組織が乗車トランザクションの調整で必要になった場合に備えて保存します。

ナビゲーション トランザクション レコーダーの実装ガイドライン

次のガイドラインを使用して、請求対象トランザクションを配車と配達に割り当てる方法を決定します。

全般的なガイドライン:

  • Android 向け Navigation SDK を使用している場合は、ロードスナップ位置情報プロバイダの使用を含め、請求対象トランザクションを報告する必要があります。また、アプリが特定の行程でフォアグラウンドにない場合でも、請求対象トランザクションを報告する必要があります。請求対象の取引の報告を停止するには、stopGuidance() を呼び出してナビゲーションを無効にし、stopRequestingLocationUpdates() を使用して「交通規制」をオフにします。
  • 配車と配達は、ドライバーが配車と配達を同時に行う場合でも、個別の独立したトランザクションとして登録する必要があります。
  • 乗車と降車は、イベントが発生したらすぐに記録する必要があります。

乗車取引のガイドライン:

  • 乗客が関与しないナビゲーション セッション(ピックアップ地点まで車で行く場合や、将来のピックアップのために人気のある場所にドライバーを誘導する場合など)は、請求対象トランザクションとしてカウントされません。
  • 乗客 1 名の乗車と降車は、1 件の請求対象取引としてカウントされます。
  • グループとして請求される乗客のグループ 1 人分の乗車は、1 件の請求対象トランザクションとしてカウントされます。より詳細に説明すると、ドライバーがある場所で 2 人以上の乗客を乗車し、別の場所で降車し、1 つのグループとして請求した場合、これは 1 つのトランザクションとしてカウントされます。関連するトランザクション ID を使用して、pickup()dropoff() を 1 回だけ呼び出します。
  • 個別に請求される 2 人の乗客が乗車した場合、乗客が同じ場所で乗車と降車を行った場合でも、2 つの請求対象トランザクションとしてカウントされます。運転手が乗客を迎えに行くときに、両方のトランザクション ID(トランザクションごとに 1 つ)で pickup() を呼び出し、ドライバーが乗客を降ろすときに両方のトランザクション ID で dropoff() を呼び出します。
  • 任意の停車地は、個別の請求対象トランザクションとしてカウントされません。たとえば、コーヒーを受け取るために旅を中断したり、別途請求されていない同乗者を降ろしたりする場合などです。このような停車地では、通常どおり dropoff() を呼び出さないでください。
  • 乗車時に課金するのではなく、間接的に乗車料金を請求する場合は、これらの乗車を乗車あたりの課金と同様に処理する必要があります。たとえば、組織で乗車無制限の月間サブスクリプション モデルを提供しているとします。これらの配車については、pickup()dropoff() に電話でお問い合わせください。
  • お客様の組織が、一定の停車地で乗客を乗り降りするバスサービスを提供しており、各停車地で乗り降りする人数を追跡していない場合は、個別のプロダクト ライセンスを取得する必要があります。このようなタイプのバスの運行は、トランザクションごとの課金の対象外です。
  • レンタル車両で、乗客が長期にわたって無制限に立ち寄れるサービスを提供している場合(すべて 1 つの料金として請求される)は、別途サービス ライセンスを取得する必要があります。これらのサービスはトランザクションごとの課金の対象外です。

配送取引のガイドライン:

  • 配達するアイテムが含まれないナビゲーション セッション(配達される商品を受け取る店舗まで運転するなど)は、課金対象トランザクションとしてカウントされません。
  • 1 つの場所で注文した商品の集荷と受け取りは、1 件の請求対象取引としてカウントされます。1 つの注文に複数の物理的なオブジェクト(たとえば、食料品が 2 袋ずつ)が含まれている場合があります。ドライバーが注文を受けたときに pickup() を呼び出し、ドライバーが注文品を配達したときに dropoff() を呼び出します。
  • ドライバーが同じ注文の一環として複数の場所(店舗やレストランなど)から商品を受け取る場合、各場所は別々の請求対象トランザクションとしてカウントされます。ビジネスごとに異なるトランザクション ID を使用します。
  • ドライバーが同じ場所で複数の顧客の注文品を受け取る場合、各注文は個別の請求対象トランザクションとしてカウントされます。注文ごとに異なるトランザクション ID を使用します。
  • 同じ顧客注文の一部として、2 人のドライバーが別々に荷物の集荷と降車を行った場合、商品が同じ店舗にある場合でも、各ドライバーの配達は別々の請求対象取引としてカウントされます。ドライバごとに異なるトランザクション ID を使用します。