ธุรกรรมที่เรียกเก็บเงินได้

หากสัญญาของคุณกับ Google ระบุการเรียกเก็บเงินแบบต่อธุรกรรม แอปของคุณต้องเรียกใช้ NavigationTransactionRecorder.pickup() และ NavigationTransactionRecorder.dropoff() เพื่อทำการเริ่มต้นและสิ้นสุดของธุรกรรมแต่ละรายการ เพื่อให้ Google สามารถติดตามและบันทึกธุรกรรมที่เรียกเก็บเงินได้ ดูหลักเกณฑ์การใช้งานในหน้านี้เพื่อดูวิธีจัดสรรธุรกรรมที่เรียกเก็บเงินได้ให้กับรถโดยสารและการนำส่ง

รับออบเจ็กต์ NavigationTransactionRecorder

หากต้องการใช้เมธอด pickup() และ dropoff() ก่อนอื่นคุณต้องสร้างอินสแตนซ์ของ NavigationTransactionRecorder โดยการเรียกใช้ NavigationApi.getTransactionRecorder ดังที่แสดงในตัวอย่างต่อไปนี้

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 หากการรับสินค้าไม่ได้อยู่ในเซสชันการนำทางที่มีอยู่
  • รหัสธุรกรรมอย่างน้อย 1 รหัสที่ใช้กับการรับสินค้านี้ รหัสธุรกรรมคือสตริงที่กำหนดเองซึ่งระบุธุรกรรมที่เรียกเก็บเงินได้แบบไม่ซ้ำ ดูเพิ่มเติมเกี่ยวกับรหัสธุรกรรมได้ที่ด้านล่าง

สิ้นสุดการทำธุรกรรมกับ 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 หากการออกไม่ได้เป็นส่วนหนึ่งของเซสชันการนำทางที่มีอยู่
  • รหัสธุรกรรมอย่างน้อย 1 รายการที่ใช้กับการเปิดตัวนี้ รหัสธุรกรรมคือสตริงที่กำหนดเองซึ่งระบุธุรกรรมที่เรียกเก็บเงินได้แบบไม่ซ้ำ ดูเพิ่มเติมเกี่ยวกับรหัสธุรกรรมได้ที่ด้านล่าง

ใช้รหัสธุรกรรมของคุณเองหรือสร้างรหัสธุรกรรม

รหัสธุรกรรมเป็นวิธีลิงก์รถโดยสารกับธุรกรรมการเรียกเก็บเงินจาก Google รหัสธุรกรรมคือสตริงที่กำหนดเองที่มีอักขระได้สูงสุด 64 ตัว รหัสต้องไม่ซ้ำกันในธุรกรรมต่างๆ

วิธีที่ดีที่สุดคือระบุรหัสธุรกรรมของคุณเอง ซึ่งเป็นรหัสที่ระบบใช้และจัดเก็บอยู่แล้ว

นอกจากนี้ คุณยังสร้างรหัสธุรกรรมแบบสุ่มและไม่ซ้ำกันได้โดยเรียกใช้ NavigationTransactionRecorder.generateTransactionId() จัดเก็บรหัสที่สร้างขึ้นในกรณีที่องค์กรจำเป็นต้องใช้รหัสดังกล่าวในการปรับยอดธุรกรรมการใช้บริการรถ

หลักเกณฑ์การใช้งานสำหรับตัวบันทึกธุรกรรมการนำทาง

ใช้หลักเกณฑ์ต่อไปนี้เพื่อกำหนดวิธีจัดสรรธุรกรรมที่เรียกเก็บเงินได้ไปยังรถโดยสารและการนำส่ง

หลักเกณฑ์ทั่วไป

  • คุณต้องรายงานธุรกรรมที่เรียกเก็บเงินได้เมื่อใดก็ตามที่มีการใช้งาน SDK การนำทางสำหรับ Android อยู่ ตลอดจนการใช้ผู้ให้บริการตำแหน่งบนถนน และแม้ว่าแอปจะไม่ได้อยู่เบื้องหน้าในเส้นทางที่เฉพาะเจาะจงก็ตาม เมื่อต้องการหยุดการรายงานธุรกรรมที่เรียกเก็บเงินได้ ให้ปิดใช้การนำทางโดยการเรียกใช้ stopGuidance() และปิดตำแหน่งบนถนนด้วย stopRequestingLocationUpdates()
  • คุณต้องลงทะเบียนการโดยสารและการนำส่งเป็นธุรกรรมแยกต่างหากและเป็นธุรกรรมอิสระ แม้ว่าคนขับรถจะทั้งโดยสารและการจัดส่งพร้อมกันก็ตาม
  • คุณต้องบันทึกเหตุการณ์การรับและส่งสินค้าทันทีเมื่อเกิดเหตุการณ์ขึ้น

หลักเกณฑ์สำหรับธุรกรรมค่าโดยสาร:

  • เซสชันการนำทางที่ไม่เกี่ยวข้องกับผู้โดยสาร (เช่น การขับรถไปยังจุดรับสินค้าหรือการนำคนขับไปยังตำแหน่งยอดนิยมสำหรับการรับสินค้าในอนาคต) จะไม่นับเป็นธุรกรรมที่เรียกเก็บเงินได้
  • การรับและส่งผู้โดยสาร 1 คนจะนับเป็นธุรกรรมที่เรียกเก็บเงินได้ 1 รายการ
  • การเดินทางสำหรับกลุ่มผู้โดยสารที่มีการเรียกเก็บเงินเป็นกลุ่มจะนับเป็นธุรกรรมที่เรียกเก็บเงินได้ 1 รายการ รายละเอียดเพิ่มเติมคือ หากคนขับไปรับผู้โดยสาร 2 คนขึ้นไปที่ตำแหน่งหนึ่งแล้วไปส่งที่อีกตำแหน่งหนึ่ง และคุณเรียกเก็บเงินเป็นกลุ่ม จะนับเป็นธุรกรรมเดียว โทร pickup() เพียงครั้งเดียว และ dropoff() เพียงครั้งเดียวพร้อมรหัสธุรกรรมที่เกี่ยวข้อง
  • การเดินทางร่วมกันสำหรับผู้โดยสาร 2 คนที่มีการเรียกเก็บเงินแยกกันจะนับเป็นธุรกรรมที่เรียกเก็บเงินได้ 2 รายการ แม้ว่าผู้โดยสารจะเข้าไปรับและไปส่งที่สถานที่เดียวกันก็ตาม โทร pickup() โดยระบุรหัสธุรกรรมทั้ง 2 รหัส (1 รหัสต่อธุรกรรมแต่ละรายการ) เมื่อคนขับไปรับผู้โดยสาร และโทรหา dropoff() ด้วยรหัสธุรกรรมทั้ง 2 รหัสเมื่อคนขับนำผู้โดยสารไปส่ง
  • การหยุดพักชั่วคราวจะไม่นับเป็นธุรกรรมที่เรียกเก็บเงินได้แยกต่างหาก เช่น แยกเส้นทางไปซื้อกาแฟ หรือการไปส่งผู้โดยสารร่วมที่ไม่ได้เรียกเก็บเงินแยกกัน อย่าเรียก dropoff() สำหรับการแวะพักแบบนี้ตามปกติ
  • หากองค์กรของคุณเรียกเก็บเงินการใช้บริการทางอ้อมบางรายการไม่ใช่การเรียกเก็บเงินขณะโดยสาร คุณต้องปฏิบัติต่อการโดยสารเหล่านี้เสมือนกับว่าเป็นการเรียกเก็บเงินต่อเที่ยวโดยสาร 1 ครั้ง ตัวอย่างเช่น องค์กรของคุณอาจมีรูปแบบการสมัครใช้บริการรายเดือนสำหรับการใช้บริการโดยไม่จำกัดการใช้บริการ โทร pickup() และ dropoff() สำหรับรถเหล่านี้
  • หากองค์กรของคุณให้บริการรถบัสรับ-ส่งผู้โดยสาร ณ จุดแวะพักที่กำหนด แต่ไม่ได้ติดตามบุคคลที่เข้าออกที่แต่ละป้าย คุณต้องมีใบอนุญาตผลิตภัณฑ์แยกต่างหาก บริการรถประจำทางประเภทเหล่านี้อยู่นอกเหนือขอบเขตการเรียกเก็บเงินต่อธุรกรรม
  • หากองค์กรของคุณให้บริการยานพาหนะให้เช่าซึ่งให้ผู้โดยสารแวะพักแบบไม่จำกัดในช่วงเวลาที่นานขึ้น โดยระบบจะเรียกเก็บค่าธรรมเนียมทั้งหมดเป็นค่าธรรมเนียมเดียว คุณต้องมีใบอนุญาตผลิตภัณฑ์แยกต่างหาก บริการเหล่านี้อยู่นอกขอบเขตการเรียกเก็บเงินต่อธุรกรรม

หลักเกณฑ์สำหรับธุรกรรมการนำส่ง

  • เซสชันการนำทางที่ไม่เกี่ยวข้องกับสินค้าสำหรับการจัดส่ง (เช่น การขับรถไปยังร้านค้าเพื่อรับสินค้าเพื่อนำส่ง) จะไม่นับเป็นธุรกรรมที่เรียกเก็บเงินได้
  • การไปรับสินค้าและออกจากคำสั่งซื้อจากสถานที่เดียวจะนับเป็นธุรกรรมที่เรียกเก็บเงินได้ 1 รายการ คำสั่งซื้ออาจมีวัตถุที่จับต้องได้หลายรายการ เช่น ของชำ 2 ถุง โทรติดต่อ pickup() เมื่อคนขับรถมารับสินค้าที่สั่งซื้อ และ dropoff() เมื่อคนขับรถนำส่งสินค้า
  • เมื่อคนขับไปรับสินค้าจากหลายสถานที่ (เช่น ร้านค้าหรือร้านอาหาร) ในคำสั่งซื้อเดียวกัน ระบบจะนับสถานที่แต่ละแห่งเป็นธุรกรรมที่เรียกเก็บเงินได้แยกกัน ใช้รหัสธุรกรรมที่แตกต่างกันสำหรับแต่ละสถานที่
  • เมื่อคนขับรถไปรับสินค้าสำหรับคำสั่งซื้อของลูกค้าหลายรายจากสถานที่เดียวกัน คำสั่งซื้อแต่ละรายการจะนับเป็นธุรกรรมที่เรียกเก็บเงินได้แยกกัน ใช้รหัสธุรกรรมต่างกันสำหรับคำสั่งซื้อแต่ละรายการ
  • เมื่อคนขับรถ 2 คนไปรับและส่งสินค้าแยกกันโดยเป็นส่วนหนึ่งของคำสั่งซื้อของลูกค้าเดียวกัน การจัดส่งของคนขับรถแต่ละคนจะนับเป็นธุรกรรมที่เรียกเก็บเงินได้แยกกัน แม้ว่าสินค้าจะมาจากร้านค้าเดียวกันก็ตาม ใช้รหัสธุรกรรมที่ต่างกันสำหรับผู้ขับขี่แต่ละคน