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