收費交易

若您與 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
  • 適用於此取貨服務的一或多個交易 ID。交易 ID 是可識別可計費交易的任意字串。詳情請參閱下方「交易 ID」一節。

結束與 dropoff() 的交易

司機下車或送貨時,應用程式必須呼叫 NavigationTransactionRecorder.dropoff()。當駕駛人與應用程式互動以註冊下車時,您應啟動這項呼叫。請勿將此呼叫當做 onArrival() 回呼的一部分。

下列程式碼範例假設駕駛人下車時,輕觸應用程式使用者介面上的按鈕:

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
  • 要套用至這個下車地點的一或多個交易 ID。交易 ID 是可識別可計費交易的任意字串。詳情請參閱下方「交易 ID」一節。

使用自己的交易 ID 或產生 ID

交易 ID 可用於將行程連結至 Google 的帳單交易。交易 ID 是長度上限為 64 個字元的任意字串。每筆交易的 ID 不得重複。

建議您提供自己的交易 ID:您的系統已使用和儲存的交易 ID。

或者,您也可以呼叫 NavigationTransactionRecorder.generateTransactionId() 來產生隨機的不重複交易 ID。請儲存系統產生的 ID,以備貴機構核對乘車交易的需求。

導覽交易記錄的實作指南

請根據以下準則,判斷如何將可計費的交易分配給行程和配送服務。

一般指南:

  • 每當使用 Android 版 Navigation SDK (包括使用道路綁定位置提供者時,以及應用程式並非在特定歷程的前景執行時),您都必須回報可計費交易。如要停止回報可計費交易,請呼叫 stopGuidance() 停用導航,並使用 stopRequestingLocationUpdates() 關閉道路固定位置。
  • 您必須將乘車和配送服務註冊為獨立和獨立交易,即使駕駛人同時在乘車和車輛行駛亦然。
  • 你必須在活動發生時立即記錄上車和下車事件。

乘車交易規範:

  • 不屬於乘客的導航工作階段 (例如開車前往上車地點,或引導司機前往熱門地點,以免日後取貨) 不會計入可計費交易。
  • 其中一位乘客的上車和下車會計為一筆收費交易。
  • 以群組為單位的一組乘客的乘車,只會計為一次可計費的交易。詳細說明:如果司機在某個地點自駕兩名以上乘客後下車,然後在另一個地點下車,而您將兩名乘客一起結帳,則計為一次交易。只呼叫 pickup() 一次,以及使用相關交易 ID 呼叫 dropoff() 一次。
  • 如果兩名分別計費乘客的共用行程,即使乘客在同一地點上下車,系統仍會計為兩筆可計費交易。在司機接聽乘客時,使用兩個交易 ID (每筆交易一個) 呼叫 pickup();在司機下車時,使用兩個交易 ID 呼叫 dropoff()
  • 不同的停靠站不算是不同的可計費交易。相關範例包括中斷領取咖啡的旅程,或放棄不需要單獨收費的共同乘客。請勿照常呼叫 dropoff() 來進行這類停靠站。
  • 如果貴機構是間接計算部分行程費用,而不是在行程期間收費,您必須將這些乘車費用視為每趟行程的計費方式。舉例來說,貴機構可能會提供按月訂閱模式,且不限乘車次數。為這些行程呼叫 pickup()dropoff()
  • 如果貴機構提供可在固定的多個停靠站接送乘客,但不記錄在每個停靠站上下車的客運服務,則您必須取得個別的產品授權。這類客運服務不在單次交易結帳的範圍內。
  • 如果貴機構提供租用車輛,讓乘客在長期期間內無限量停靠站,所有停靠站的費用都是一筆費用。那麼,您必須另外取得產品授權。這些服務不在每筆交易的結帳範圍內。

出貨交易相關規範:

  • 不屬於貨品交付的導覽工作階段 (例如前往商店取貨,提供送貨服務) 不會計入可計費交易。
  • 單一地點的訂單取貨和下車會計為一筆可收費交易。一張訂單可能包含多個實體物件,例如兩件雜貨。在駕駛人取貨時呼叫 pickup(),在駕駛人傳遞訂單時呼叫 dropoff()
  • 當司機從多個地點 (例如商店或餐廳) 在同一筆訂單中取貨時,每個地點都會計為一筆獨立的收費交易。針對各個地點使用不同的交易 ID。
  • 當司機從同一地點取貨多個客戶的訂單時,每筆訂單都會計為一筆獨立的收費交易。請針對每筆訂單使用不同的交易 ID。
  • 當兩名司機在同一筆客戶訂單中分別取貨和下車時,不論這些貨品來自同一個門市地點,每位司機的配送服務都會計為獨立的可計費交易。請為每個驅動程式使用不同的交易 ID。