GOCheap Developers
Hướng dẫn

Luồng đặt chuyến

Từ địa chỉ đến báo giá, tạo chuyến, các trạng thái và cách chống tạo trùng.

BướcChiềuGọi gìKết quả
1Bạn → GOCheapGET /places/search (tuỳ chọn)place_id của điểm đón, điểm đến
2Bạn → GOCheapPOST /quotesquote_id, price, giữ 10 phút
3Bạn → GOCheapPOST /bookings + Idempotency-Keybooking_id, status: searching
4GOCheap → tài xếPhát chuyến cho tài xế gần nhấtTài xế nhận chuyến
5GOCheap → bạnWebhook booking.driver_assignedThông tin tài xế
6GOCheap → bạnWebhook booking.started, booking.completedĐón khách, hoàn thành, giá cuối

1. Địa chỉ

Điểm đón và điểm đến gửi theo một trong hai cách:

  • { "place_id": "..." } lấy từ GET /places/search?q=....
  • { "lat": 21.0285, "lng": 105.8542, "address": "Hồ Hoàn Kiếm, Hà Nội" } nếu hệ thống của bạn đã có toạ độ.

Địa chỉ nên ghi rõ phường/xã và tỉnh/thành. Không xác định được địa chỉ thì nhận 422 address_not_found.

2. Báo giá

POST /quotes tính giá theo bảng giá GOCheap của dịch vụ, khu vực, quãng đường và khung giờ đón. Bỏ trống pick_up_time nghĩa là đón sau 20 phút.

  • Báo giá giữ nguyên trong 10 phút (expires_at).
  • Tuyến hoặc khu vực chưa có trong bảng giá thì nhận 422 area_not_supported.

3. Tạo chuyến

POST /bookings với quote_id còn hiệu lực. Giá chốt theo báo giá, không tính lại.

Chống tạo trùng, nên dùng cả hai:

Cơ chếHành vi
Header Idempotency-KeyGửi lại cùng key trong 24 giờ nhận lại đúng chuyến đã tạo (header Idempotent-Replayed: true), không tạo chuyến mới. Dùng khi request bị timeout và bạn không chắc chuyến đã tạo chưa.
partner_reference_idMã đơn bên bạn, duy nhất trong tài khoản. Dùng lại mã đã có nhận 409 duplicate_reference.

Mỗi quote_id chỉ tạo được một chuyến; dùng lại nhận 410 quote_expired.

4. Trạng thái chuyến

statusÝ nghĩaWebhook
searchingĐang tìm tài xếbooking.created
driver_assignedTài xế đã nhận chuyến, có thông tin driverbooking.driver_assigned
driver_arrivingTài xế đang đến điểm đónbooking.driver_arriving
in_progressĐã đón khách, đang di chuyểnbooking.started
completedHoàn thành; final_price là giá cuối cùng (gồm phụ trội nếu có)booking.completed
cancelledĐã huỷ; xem cancellation.cancelled_bybooking.cancelled

Tài xế huỷ sau khi nhận: chuyến quay về searching, hệ thống tìm tài xế khác và bạn nhận booking.driver_unassigned.

cancellation.cancelled_by: client (bạn huỷ qua API), driver, gocheap (tổng đài GOCheap), system.

5. Huỷ chuyến

POST /bookings/{booking_id}/cancel khi chuyến đang searching, driver_assigned hoặc driver_arriving. Chuyến đã đón khách hoặc đã kết thúc nhận 422 cannot_cancel.

6. Tra cứu

  • GET /bookings/{booking_id}: một chuyến.
  • GET /bookings?partner_reference_id=HTL-20261112-0042: tra theo mã đơn của bạn.
  • GET /bookings?status=completed&created_from=...&created_to=...: đối soát theo kỳ.

Nếu buộc phải gọi định kỳ thay vì dùng webhook, tối đa 1 lần mỗi 15 giây cho mỗi chuyến.

Trong trang này