若您與 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()
方法:
結束與 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。