청구 가능 거래

Google과의 계약에 거래별 결제가 지정되어 있는 경우 Google에서 청구 가능한 거래를 추적하고 로깅할 수 있도록 앱에서 NavigationTransactionRecorder.pickup()NavigationTransactionRecorder.dropoff()를 호출하여 각 거래의 시작과 끝을 표시해야 합니다. 청구 가능한 트랜잭션을 차량 탑승 및 배송에 할당하는 방법을 확인하려면 이 페이지의 구현 가이드라인을 참고하세요.

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() 콜백의 일부로 이 호출을 실행하지 마세요.

다음 샘플 코드에서는 운전자가 승객이나 배달 물품을 내릴 때 앱의 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입니다.
  • 이 하차에 적용되는 하나 이상의 거래 ID입니다. 트랜잭션 ID는 청구 가능한 트랜잭션을 고유하게 식별하는 임의의 문자열입니다. 아래에서 거래 ID에 대해 자세히 알아보세요.

자체 거래 ID를 사용하거나 거래 ID 생성

거래 ID를 사용하면 차량을 Google의 결제 거래와 연결할 수 있습니다. 트랜잭션 ID는 최대 길이가 64자인 임의의 문자열입니다. ID는 거래 전체에서 고유해야 합니다.

시스템에서 이미 사용하고 저장하는 트랜잭션 ID를 직접 제공할 수 있는 것이 가장 좋습니다.

또는 NavigationTransactionRecorder.generateTransactionId()를 호출하여 임의의 고유한 트랜잭션 ID를 생성할 수 있습니다. 조직에서 탑승 트랜잭션을 조정하는 데 필요할 수 있도록 생성된 ID를 저장합니다.

탐색 트랜잭션 레코더 구현 가이드라인

다음 가이드라인에 따라 청구 가능한 트랜잭션을 차량 및 배달에 할당하는 방법을 결정하세요.

일반 가이드라인:

  • 도로 스냅 위치 정보 제공자를 사용하는 등 Android용 Navigation SDK를 사용할 때마다 앱이 특정 여정에서 포그라운드에 있지 않은 경우에도 청구 가능한 거래를 보고해야 합니다. 청구 가능 거래 보고를 중지하려면 stopGuidance()를 호출하여 탐색을 중지하고 stopRequestingLocationUpdates()로 도로 스냅 위치를 끕니다.
  • 운전자가 동시에 탑승과 배달을 모두 하더라도 탑승과 배달을 별개의 독립적인 트랜잭션으로 등록해야 합니다.
  • 승차 및 하차 이벤트는 이벤트가 발생하는 즉시 기록해야 합니다.

탑승 거래를 위한 가이드라인:

  • 승객과 관련이 없는 내비게이션 세션 (예: 승차 지점까지 운전하거나 향후 승차를 위해 운전자를 인기 있는 장소로 안내)은 청구 가능 거래로 집계되지 않습니다.
  • 승객 한 명의 승차 및 하차는 청구 가능한 거래 1회로 계산됩니다.
  • 그룹으로 청구되는 승객 그룹의 탑승은 청구 가능한 거래 1건으로 집계됩니다. 자세히 설명하자면, 운전자가 한 위치에서 두 명 이상의 승객을 태우고 다른 위치에 승차하는 경우 그룹으로 청구하면 단일 거래로 집계됩니다. pickup()를 관련 거래 ID로 한 번만 호출하고 dropoff()를 한 번만 호출합니다.
  • 별도로 청구되는 승객 두 명이 공유하는 탑승은 승객이 같은 장소에서 승차하거나 하차하는 경우에도 청구 가능한 거래 2건으로 집계됩니다. 운전자가 승객을 태울 때 두 트랜잭션 ID (거래당 하나)로 pickup()를 호출하고 운전자가 승객을 하차하면 두 트랜잭션 ID를 모두 사용하여 dropoff()를 호출합니다.
  • 임의 기착은 별도의 청구 가능 거래로 집계되지 않습니다. 커피를 사러 가기 위한 여정을 중단하거나 별도로 요금이 청구되지 않는 공동 승객을 하차하는 경우를 예로 들 수 있습니다. 이러한 기착 시간에는 평소와 같이 dropoff()를 호출하지 마세요.
  • 조직에서 탑승 요금을 탑승 시간에 청구하는 것이 아니라 간접적으로 청구하는 경우, 탑승 요금을 탑승당 요금인 것처럼 취급해야 합니다. 예를 들어 조직에서 무제한 탑승을 위한 월간 정기 결제 모델을 제공할 수 있습니다. 다음 탑승을 이용하려면 pickup()dropoff()에 전화하세요.
  • 조직에서 승객을 고정된 정류장에서 승차 및 하차하는 버스 서비스를 제공하지만, 각 정류장에서 승하차하는 사람을 추적하지 않는 경우 별도의 제품 라이선스를 받아야 합니다. 이러한 유형의 버스 서비스는 거래당 청구의 범위를 벗어납니다.
  • 조직에서 승객이 장시간 동안 무제한 경유할 수 있는 대여용 차량 서비스를 제공하는 경우 모두 단일 요금으로 청구되는 경우 별도의 제품 라이선스가 있어야 합니다. 이러한 서비스는 트랜잭션당 청구 범위를 벗어납니다.

배송 거래 가이드라인:

  • 배송 상품이 포함되지 않은 탐색 세션 (예: 배달할 상품을 수령하기 위해 매장으로 운전)은 청구 가능 거래로 집계되지 않습니다.
  • 단일 위치에서 주문 접수 및 반납은 청구 가능 거래 1건으로 집계됩니다. 주문에는 여러 실물(예: 식료품 2봉지)이 포함될 수 있습니다. 운전자가 주문 상품을 수령하면 pickup()를 호출하고 배달원이 주문 상품을 배달하면 dropoff()를 호출합니다.
  • 운전자가 여러 위치 (예: 매장 또는 음식점)에서 동일한 주문의 일부로 물건을 수령하면 각 위치가 별도의 청구 가능한 거래로 집계됩니다. 위치마다 다른 거래 ID를 사용합니다.
  • 운전자가 같은 위치에서 여러 고객의 주문에 해당하는 물건을 수령하면 각 주문이 별도의 청구 가능 거래로 집계됩니다. 주문마다 다른 거래 ID를 사용합니다.
  • 동일한 고객 주문의 일부로 2명의 배송 기사가 개별적으로 물건을 픽업 및 반납하면 상품이 동일한 매장 위치에 있더라도 각 배송 기사의 배송은 별도의 청구 가능 거래로 집계됩니다. 드라이버마다 다른 트랜잭션 ID를 사용합니다.