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, ataunull
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, ataunull
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, dandropoff()
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 panggildropoff()
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()
dandropoff()
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, dandropoff()
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.