Transaksi yang Dapat Ditagih

Jika kontrak Anda dengan Google menentukan penagihan per transaksi, aplikasi Anda harus memanggil NavigationTransactionRecorder.pickup() dan NavigationTransactionRecorder.dropoff() untuk menandai awal dan akhir setiap transaksi, sehingga Google dapat melacak dan mencatat transaksi yang dapat ditagih. Lihat panduan penerapan di halaman ini untuk menentukan cara mengalokasikan transaksi yang dapat ditagih untuk perjalanan dan pengiriman.

Mendapatkan objek NavigationTransactionRecorder

Untuk menggunakan metode pickup() dan dropoff(), Anda harus terlebih dahulu membuat instance NavigationTransactionRecorder dengan memanggil NavigationApi.getTransactionRecorder, seperti yang ditunjukkan pada contoh berikut:

NavigationTransactionRecorder transactionRecorder = NavigationApi.getTransactionRecorder(application);

Mulai transaksi dengan pickup()

Saat pengemudi menjemput penumpang atau mengambil item untuk dikirim, aplikasi Anda harus memanggil NavigationTransactionRecorder.pickup(). Anda harus memulai panggilan ini saat pengemudi berinteraksi dengan aplikasi Anda untuk mendaftarkan pengambilan. Jangan lakukan panggilan ini sebagai bagian dari callback onArrival().

Kode contoh berikut mengasumsikan bahwa pengemudi mengetuk tombol di UI aplikasi Anda saat mengambil item pengiriman atau penumpang:

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

Teruskan parameter berikut ke metode pickup():

  • Waypoint saat pengambilan terjadi, atau null jika penjemputan bukan bagian dari sesi navigasi yang ada.
  • Satu atau beberapa ID transaksi yang berlaku untuk pengambilan ini. ID transaksi adalah string arbitrer yang secara unik mengidentifikasi transaksi yang dapat ditagih. Lihat ID transaksi lebih lanjut di bawah.

Mengakhiri transaksi dengan dropoff()

Saat pengemudi menurunkan penumpang atau mengantarkan item, aplikasi Anda harus memanggil NavigationTransactionRecorder.dropoff(). Anda harus memulai panggilan ini saat driver berinteraksi dengan aplikasi Anda untuk mendaftarkan penurunan. Jangan lakukan panggilan ini sebagai bagian dari callback onArrival().

Kode contoh berikut mengasumsikan bahwa pengemudi mengetuk tombol di UI aplikasi Anda saat menurunkan penumpang atau item pengiriman:

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

Teruskan parameter berikut ke metode dropoff():

  • Waypoint tempat terjadinya penurunan, atau null jika penurunan bukan bagian dari sesi navigasi yang ada.
  • Satu atau beberapa ID transaksi yang berlaku untuk penurunan ini. ID transaksi adalah string arbitrer yang secara unik mengidentifikasi transaksi yang dapat ditagih. Lihat ID transaksi lebih lanjut di bawah.

Gunakan ID transaksi Anda sendiri atau buat ID

ID transaksi memberikan cara untuk menautkan perjalanan dengan transaksi penagihan dari Google. ID transaksi adalah string arbitrer dengan panjang maksimum 64 karakter. ID harus unik di seluruh transaksi.

Sebaiknya berikan ID transaksi Anda sendiri: ID yang sudah digunakan dan disimpan oleh sistem Anda.

Atau, Anda dapat membuat ID transaksi unik yang acak dengan memanggil NavigationTransactionRecorder.generateTransactionId(). Simpan ID yang dihasilkan kalau-kalau organisasi Anda membutuhkannya untuk rekonsiliasi transaksi perjalanan.

Panduan penerapan untuk perekam transaksi navigasi

Gunakan panduan berikut untuk menentukan cara mengalokasikan transaksi yang dapat ditagih ke perjalanan dan pengiriman.

Pedoman umum:

  • Anda harus melaporkan transaksi yang dapat ditagih setiap kali Navigation SDK untuk Android sedang digunakan, termasuk penggunaan penyedia lokasi jalan, dan meskipun aplikasi tidak berada di latar depan untuk perjalanan tertentu. Jika Anda ingin berhenti melaporkan transaksi yang dapat ditagih, nonaktifkan navigasi dengan memanggil stopGuidance() dan nonaktifkan lokasi yang di lokasi jalan dengan stopRequestingLocationUpdates().
  • Anda harus mendaftarkan perjalanan dan pengiriman sebagai transaksi terpisah dan independen, meskipun pengemudi melakukan perjalanan dan pengiriman secara bersamaan.
  • Anda harus mencatat peristiwa pengambilan dan penurunan segera saat peristiwa tersebut terjadi.

Panduan untuk transaksi transportasi online:

  • Sesi navigasi yang tidak melibatkan penumpang (misalnya, mengemudi ke lokasi pengambilan atau mengarahkan pengemudi ke lokasi populer untuk pengambilan di masa mendatang) tidak dihitung sebagai transaksi yang dapat ditagih.
  • Penjemputan dan penurunan satu penumpang dihitung sebagai satu transaksi yang dapat ditagih.
  • Perjalanan untuk sekelompok penumpang yang ditagih sebagai satu rombongan, dihitung sebagai satu transaksi yang dapat ditagih. Secara lebih detail: jika pengemudi menjemput dua penumpang atau lebih di satu lokasi dan menurunkannya di lokasi lain, dan Anda menagih mereka sebagai satu grup, hal ini akan dihitung sebagai satu transaksi. Panggil pickup() sekali saja, dan dropoff() sekali saja, dengan ID transaksi yang relevan.
  • Perjalanan bersama untuk dua penumpang yang ditagih secara terpisah dihitung sebagai dua transaksi yang dapat ditagih, meskipun jika penumpang dijemput dan diturunkan di lokasi yang sama. Panggil pickup() dengan kedua ID transaksi (satu ID untuk setiap transaksi) saat pengemudi mengambil penumpang, dan panggil dropoff() dengan kedua ID transaksi saat pengemudi menurunkan penumpang.
  • Persinggahan diskresioner tidak dihitung sebagai transaksi terpisah yang dapat ditagih. Contohnya termasuk menghentikan perjalanan untuk mengambil kopi, atau menurunkan penumpang yang tidak ditagih secara terpisah. Jangan memanggil dropoff() untuk persinggahan seperti ini seperti biasa.
  • Jika organisasi Anda menagih beberapa perjalanan secara tidak langsung, bukan menagih pada waktu perjalanan, Anda harus memperlakukan perjalanan ini seolah-olah penagihan adalah per perjalanan. Misalnya, organisasi Anda dapat menyediakan model langganan bulanan untuk perjalanan tanpa batas. Panggil pickup() dan dropoff() untuk perjalanan ini.
  • Jika organisasi Anda menyediakan layanan bus yang mengangkut dan menurunkan penumpang di perhentian tetap, tetapi tidak melacak penumpang yang masuk dan keluar di setiap perhentian, Anda harus mendapatkan lisensi produk terpisah. Jenis layanan bus ini berada di luar cakupan penagihan per transaksi.
  • Jika organisasi Anda menyediakan layanan penyewaan kendaraan yang memungkinkan penumpang melakukan perhentian tanpa batas selama jangka waktu yang lebih lama dan semuanya ditagih sebagai satu biaya, Anda harus mendapatkan lisensi produk terpisah. Layanan tersebut berada di luar cakupan penagihan per transaksi.

Panduan untuk transaksi pengiriman:

  • Sesi navigasi yang tidak melibatkan item untuk pengiriman (misalnya, berkendara ke toko untuk mengambil barang yang akan dikirim) tidak dihitung sebagai transaksi yang dapat ditagih.
  • Pengambilan dan pengantaran pesanan dari satu lokasi dihitung sebagai satu transaksi yang dapat ditagih. Pesanan dapat mencakup beberapa objek fisik - misalnya, dua kantong bahan makanan. Panggil pickup() saat pengemudi mengambil pesanan, dan dropoff() saat pengemudi mengirimkan pesanan.
  • Jika pengemudi mengambil item dari beberapa lokasi (misalnya, toko atau restoran) sebagai bagian dari pesanan yang sama, setiap lokasi akan dihitung sebagai transaksi terpisah yang dapat ditagih. Gunakan ID transaksi yang berbeda untuk setiap lokasi.
  • Saat pengemudi mengambil item untuk pesanan beberapa pelanggan dari lokasi yang sama, setiap pesanan akan dihitung sebagai transaksi terpisah yang dapat ditagih. Gunakan ID transaksi yang berbeda untuk setiap pesanan.
  • Jika dua pengemudi mengambil dan pengantaran item secara terpisah sebagai bagian dari pesanan pelanggan yang sama, pengiriman setiap pengemudi akan dihitung sebagai transaksi terpisah yang dapat ditagih, meskipun item tersebut berasal dari lokasi toko yang sama. Gunakan ID transaksi yang berbeda untuk setiap driver.