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-router

  • Trạ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

  1. 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 đó.

  2. 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

  3. Đừng spam tạo project để "test lỗi".
    Google có cơ chế chống abuse và có thể khóa tài khoản.

  4. 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.