বিলযোগ্য লেনদেন

যদি 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
  • এই পিকআপের জন্য প্রযোজ্য এক বা একাধিক লেনদেন আইডি। একটি লেনদেন আইডি একটি নির্বিচারে স্ট্রিং যা একটি বিলযোগ্য লেনদেনকে স্বতন্ত্রভাবে সনাক্ত করে। নিচে লেনদেন আইডি সম্পর্কে আরও দেখুন।

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
  • এই ড্রপঅফের জন্য প্রযোজ্য এক বা একাধিক লেনদেন আইডি। একটি লেনদেন আইডি একটি নির্বিচারে স্ট্রিং যা একটি বিলযোগ্য লেনদেনকে স্বতন্ত্রভাবে সনাক্ত করে। নিচে লেনদেন আইডি সম্পর্কে আরও দেখুন।

আপনার নিজস্ব লেনদেন আইডি ব্যবহার করুন বা একটি তৈরি করুন

লেনদেন আইডি Google থেকে বিলিং লেনদেনের সাথে রাইড লিঙ্ক করার একটি উপায় প্রদান করে। একটি লেনদেন আইডি হল একটি নির্বিচারে স্ট্রিং যার সর্বোচ্চ দৈর্ঘ্য 64টি অক্ষর। লেনদেন জুড়ে ID অবশ্যই অনন্য হতে হবে।

সবচেয়ে ভালো হয় যদি আপনি নিজের লেনদেন আইডি প্রদান করতে পারেন: যেটি আপনার সিস্টেম ইতিমধ্যেই ব্যবহার করে এবং সংরক্ষণ করে।

বিকল্পভাবে, আপনি NavigationTransactionRecorder.generateTransactionId() কল করে একটি এলোমেলো, অনন্য লেনদেন আইডি তৈরি করতে পারেন। রাইড লেনদেন মিটমাট করার জন্য আপনার প্রতিষ্ঠানের প্রয়োজন হলে জেনারেট করা আইডি সংরক্ষণ করুন।

নেভিগেশন লেনদেন রেকর্ডার জন্য বাস্তবায়ন নির্দেশিকা

রাইড এবং ডেলিভারিতে বিলযোগ্য লেনদেনগুলি কীভাবে বরাদ্দ করা যায় তা নির্ধারণ করতে নিম্নলিখিত নির্দেশিকাগুলি ব্যবহার করুন৷

সাধারণ নির্দেশিকা:

  • যখনই Android-এর জন্য ন্যাভিগেশন SDK ব্যবহার করা হয়, রোড-স্ন্যাপ করা লোকেশন প্রদানকারীর ব্যবহার সহ, এবং অ্যাপটি একটি নির্দিষ্ট যাত্রার জন্য অগ্রভাগে না থাকলেও আপনাকে বিলযোগ্য লেনদেনের রিপোর্ট করতে হবে। আপনি যখন বিলযোগ্য লেনদেনের প্রতিবেদন করা বন্ধ করতে চান, তখন stopGuidance() এ কল করে নেভিগেশন অক্ষম করুন এবং stopRequestingLocationUpdates() এর সাথে রাস্তা-ছাড়া অবস্থান বন্ধ করুন।
  • আপনাকে অবশ্যই আলাদা এবং স্বাধীন লেনদেন হিসাবে রাইড এবং ডেলিভারি নিবন্ধন করতে হবে, এমনকি যদি একজন চালক একই সময়ে রাইড এবং ডেলিভারি উভয়ই করেন।
  • ঘটনাটি ঘটলেই আপনাকে অবশ্যই পিকআপ এবং ড্রপঅফ ইভেন্ট রেকর্ড করতে হবে।

রাইড লেনদেনের জন্য নির্দেশিকা:

  • ন্যাভিগেশন সেশন যা একজন যাত্রীর সাথে জড়িত নয় (উদাহরণস্বরূপ, একটি পিকআপ পয়েন্টে গাড়ি চালানো বা ভবিষ্যতে পিকআপের জন্য একটি জনপ্রিয় স্থানে ড্রাইভারকে নির্দেশ করা) বিলযোগ্য লেনদেন হিসাবে গণনা করা হয় না।
  • একজন যাত্রীর পিকআপ এবং ড্রপঅফ একটি বিলযোগ্য লেনদেন হিসাবে গণনা করা হয়।
  • যাত্রীদের একটি গ্রুপের জন্য একটি রাইড একটি গ্রুপ হিসাবে বিল করা হয়, একটি বিলযোগ্য লেনদেন হিসাবে গণনা করা হয়। আরো বিস্তারিতভাবে: ড্রাইভার যদি দুই বা ততোধিক যাত্রীকে এক স্থানে তুলে নেয় এবং তাদের অন্য স্থানে নামিয়ে দেয় এবং আপনি তাদের একটি দল হিসেবে বিল করেন, তাহলে এটি একটি একক লেনদেন হিসেবে গণ্য হবে। প্রাসঙ্গিক লেনদেন আইডি সহ pickup() কে একবার এবং dropoff() একবার কল করুন।
  • দুটি পৃথকভাবে বিল করা যাত্রীদের জন্য একটি শেয়ার্ড রাইড দুটি বিলযোগ্য লেনদেন হিসাবে গণনা করা হয়, এমনকি যদি যাত্রীদের একই স্থানে তোলা এবং নামানো হয়। যখন ড্রাইভার যাত্রীদের তুলে নেয় তখন উভয় লেনদেন আইডি (প্রতিটি লেনদেনের জন্য একটি) সহ কল pickup() এবং ড্রাইভার যখন যাত্রীদের নামিয়ে দেয় তখন উভয় লেনদেন আইডি সহ কল dropoff()
  • বিবেচনামূলক স্টপওভারগুলিকে আলাদা বিলযোগ্য লেনদেন হিসাবে গণনা করা হয় না। উদাহরণগুলির মধ্যে রয়েছে কফি তোলার জন্য যাত্রা বিরতি করা, বা আলাদাভাবে বিল দেওয়া হয়নি এমন একজন সহযাত্রীকে নামিয়ে দেওয়া। এই ধরনের স্টপওভারের জন্য dropoff() স্বাভাবিক বলে ডাকবেন না।
  • আপনার সংস্থা যদি রাইডের সময় বিলিংয়ের পরিবর্তে কিছু রাইডের বিল পরোক্ষভাবে দেয়, তাহলে আপনাকে অবশ্যই এই রাইডগুলিকে এমনভাবে বিবেচনা করতে হবে যেন প্রতি রাইডের বিলিং। উদাহরণস্বরূপ, আপনার সংস্থা সীমাহীন রাইডের জন্য একটি মাসিক সাবস্ক্রিপশন মডেল প্রদান করতে পারে। এই রাইডগুলির জন্য pickup() এবং dropoff() কল করুন।
  • যদি আপনার সংস্থা এমন বাস পরিষেবা সরবরাহ করে যেগুলি নির্দিষ্ট স্টপে যাত্রী উঠানো এবং নামিয়ে দেয় কিন্তু প্রতিটি স্টপে আসা এবং বের হওয়া ব্যক্তিদের ট্র্যাক না রাখে তবে আপনাকে অবশ্যই একটি পৃথক পণ্য লাইসেন্স পেতে হবে। এই ধরনের বাস পরিষেবা প্রতি-লেনদেন বিলিংয়ের সুযোগের বাইরে।
  • যদি আপনার সংস্থা ভাড়া পরিষেবার জন্য যানবাহন সরবরাহ করে যা একজন যাত্রীকে একটি বর্ধিত সময়ের মধ্যে সীমাহীন স্টপ করার অনুমতি দেয় যা সমস্ত একটি ফি হিসাবে বিল করা হয়, আপনাকে অবশ্যই একটি পৃথক পণ্য লাইসেন্স পেতে হবে। এই পরিষেবাগুলি প্রতি-লেনদেন বিলিংয়ের সুযোগের বাইরে৷

ডেলিভারি লেনদেনের জন্য নির্দেশিকা:

  • ন্যাভিগেশন সেশন যা ডেলিভারির জন্য একটি আইটেম জড়িত নয় (উদাহরণস্বরূপ, ডেলিভারি করার জন্য পণ্য সংগ্রহের জন্য একটি দোকানে গাড়ি চালানো) বিলযোগ্য লেনদেন হিসাবে গণনা করা হয় না।
  • একটি একক অবস্থান থেকে একটি অর্ডারের পিকআপ এবং ড্রপঅফ একটি বিলযোগ্য লেনদেন হিসাবে গণনা করা হয়। একটি অর্ডারে একাধিক শারীরিক বস্তু অন্তর্ভুক্ত থাকতে পারে - উদাহরণস্বরূপ, দুটি ব্যাগ মুদি। ড্রাইভার যখন অর্ডার নেয় তখন pickup() কল করুন এবং ড্রাইভার যখন অর্ডার ডেলিভার করে তখন dropoff()
  • যখন একজন ড্রাইভার একই অর্ডারের অংশ হিসাবে একাধিক অবস্থান থেকে আইটেমগুলি (উদাহরণস্বরূপ, দোকান বা রেস্তোরাঁ) তুলে নেয়, তখন প্রতিটি অবস্থান একটি পৃথক বিলযোগ্য লেনদেন হিসাবে গণনা করে। প্রতিটি অবস্থানের জন্য একটি আলাদা লেনদেন আইডি ব্যবহার করুন।
  • যখন একজন ড্রাইভার একই অবস্থান থেকে একাধিক গ্রাহকের অর্ডারের জন্য আইটেম বাছাই করে, তখন প্রতিটি অর্ডার আলাদা বিলযোগ্য লেনদেন হিসাবে গণনা করে। প্রতিটি অর্ডারের জন্য একটি ভিন্ন লেনদেন আইডি ব্যবহার করুন।
  • একই গ্রাহকের অর্ডারের অংশ হিসাবে যখন দুজন ড্রাইভার আলাদাভাবে আইটেম তুলে নেয় এবং ফেলে দেয়, তখন প্রতিটি ড্রাইভারের ডেলিভারি একটি পৃথক বিলযোগ্য লেনদেন হিসাবে গণনা করে, এমনকি আইটেমগুলি একই দোকানের অবস্থান থেকে হলেও। প্রতিটি ড্রাইভারের জন্য একটি আলাদা লেনদেন আইডি ব্যবহার করুন।