Khi Google tưởng tôi đang ở Ấn Độ: một bug "lạc vùng" của Google Maps Platform
Có những lúc bạn làm mọi thứ đều đúng, kiểm tra đi kiểm tra lại vẫn không sai, nhưng hệ thống thì nhất quyết cho rằng: "Không, vấn đề nằm ở bạn."
Tôi gặp đúng tình huống đó khi bật Maps SDK for Android trên Google Cloud.
Bối cảnh ban đầu
Đã tạo Billing Account
Phương thức thanh toán: trả trước (prepaid / manual)
Quốc gia: Việt Nam
Đơn vị tiền tệ: VND
IP thực tế: Biên Hoà, Đồng Nai, không VPN
Tài khoản đã nạp tiền
Nhưng mỗi lần enable Maps SDK for Android, Google lại hiện popup yêu cầu thêm thẻ và giải thích một luồng thanh toán… dành cho Ấn Độ (India).
Tôi đã làm đúng những gì?
Để tránh kết luận cảm tính, tôi rà soát lại toàn bộ cấu hình.
1. Billing account đúng quốc gia
Country: Vietnam
Currency: VND
Billing type: Prepaid
Số dư đủ dùng cho Maps SDK
Không có bất kỳ dấu hiệu nào cho thấy billing thuộc khu vực khác.
2. Project đã link đúng billing
Project:
sale-routerTrạng thái billing: Active
Không phải "No billing account"
Nói ngắn gọn:
Project có billing – billing có tiền – billing đúng quốc gia.
3. IP và vị trí mạng hoàn toàn ở Việt Nam
Kiểm tra IP bằng dịch vụ định vị công khai
Kết quả: Vietnam
Không proxy, không VPN, không route qua server nước ngoài
Google không có lý do hợp lý để áp logic của Ấn Độ lên tài khoản này.
4. Thử project mới và cái kết không mong muốn
Tôi tạo thêm vài project mới để kiểm tra khả năng project cũ bị lỗi trạng thái.
Kết quả:
Popup lỗi vẫn y nguyên
Tạo quá nhiều project trong thời gian ngắn
Một tài khoản Google Cloud của tôi bị flag hành vi giống bot và tạm khóa
=> Có thể khẳng định: không phải lỗi cấu hình từ phía người dùng.
Vấn đề thực sự nằm ở đâu?
Mấu chốt nằm trong nội dung popup lỗi:
"Because Google Maps Platform services are billed separately from Google Cloud services in India…"
Tức là:
UI của Google Maps Platform đang áp logic thanh toán đặc biệt của Ấn Độ
Trong khi backend billing của tôi là Việt Nam
Phân tích kỹ:
Backend: nhận diện đúng billing, đúng quốc gia
Frontend / UI: kiểm tra sai vùng, nghĩ rằng đây là tài khoản India → chặn enable Maps SDK
Đây là một lỗi logic ở tầng giao diện:
Tài khoản prepaid tại Việt Nam bị đối xử như tài khoản ở Ấn Độ.
Giải pháp: bỏ qua UI, nói chuyện trực tiếp với backend
Khi đã xác định lỗi nằm ở UI, cách giải quyết hợp lý nhất là không dùng UI nữa.
Bước 1: Mở Cloud Shell
Chọn đúng project bị lỗi (ví dụ:
sale-router)Mở Cloud Shell từ Google Cloud Console
Chờ terminal sẵn sàng
Bước 2: Ép bật Maps SDK bằng gcloud
Chạy lệnh sau:
gcloud services enable maps-android-backend.googleapis.com
Nếu có popup yêu cầu authorize, chỉ cần chấp nhận.
Lệnh này:
Gửi request trực tiếp tới API Services backend
Bỏ qua hoàn toàn logic kiểm tra vùng ở UI web
Nếu billing hợp lệ, API sẽ được enable bình thường
Bước 3: Xác nhận kết quả
Vào APIs & Services → Enabled APIs
Kiểm tra Maps SDK for Android
Trong trường hợp của tôi, API được bật ngay lập tức.
UI vẫn hiển thị thông báo liên quan đến India, nhưng backend đã cho phép sử dụng SDK đầy đủ.
Bài học rút ra
Popup lỗi không phải lúc nào cũng đúng.
Nếu billing, project, IP đều hợp lệ, hãy nghi ngờ chính popup đó.UI có thể sai, backend mới là nguồn sự thật.
Khi cần, hãy dùng:Cloud Shell
gcloud CLI
API trực tiếp
Đừng spam tạo project để "test lỗi".
Google có cơ chế chống abuse và có thể khóa tài khoản.Billing prepaid đôi khi bị áp nhầm logic của thị trường khác.
Trường hợp này là India, nhưng hoàn toàn có thể xảy ra với khu vực khác.
Kết luận
Trong sự cố này:
Tôi không cấu hình sai
Billing chuẩn Việt Nam, có tiền, project linked đầy đủ
IP thực tế ở Việt Nam
Vấn đề nằm ở chỗ:
UI của Google Maps Platform nhầm vùng, áp logic thanh toán của Ấn Độ lên tài khoản Việt Nam
Backend vẫn nhận diện đúng → chỉ cần dùng Cloud Shell + gcloud là giải quyết được
Khi UI nói bạn sai nhưng log và backend nói bạn đúng, hãy tin backend.
Và nếu giao diện quá "khó ở", Cloud Shell luôn là lối đi phía sau.