API đổi thẻ

SandboxĐang bật: chỉ mô phỏng trong trình duyệt, không gửi yêu cầu nào lên máy chủ, không trừ hay cộng tiền.

Thẻ mẫu để kiểm thử

Mỗi dòng là một trường hợp. Bấm Thử để mở trình kiểm thử với thẻ đó, hoặc sao chép mã và serial. Thẻ mẫu chạy được qua API thật khi dùng key sandbox (lấy ở trang Sandbox); key thật gửi thẻ mẫu sẽ bị nhà cung cấp báo thẻ lỗi.

chargingws

Đổi thẻ cào#

API Charging v2: gửi thẻ cào, kiểm tra trạng thái, nhận kết quả qua callback và lấy biểu phí.

Tổng quan#

API cho phép hệ thống của bạn gửi thẻ cào lên thepay1s.com và nhận kết quả tự động. Mọi yêu cầu đi tới một endpoint duy nhất, phân biệt bằng tham số command: charging để gửi thẻ, check để hỏi trạng thái. Tiền thẻ đúng được cộng vào ví của tài khoản sở hữu kết nối, theo bảng phí của nhóm thành viên của tài khoản đó.

Endpoint
https://thepay1s.com/chargingws/v2
API bảng phí
https://thepay1s.com/chargingws/v2/getfee
Phương thức
GET hoặc POST
Dữ liệu gửi
Query, form hoặc JSON
Phản hồi
JSON, luôn HTTP 200
Lệnh
charging, check

Luồng tích hợp

  1. Tạo kết nối API loại Đổi thẻ cào tại Kết nối API, nhập Callback URL, lấy Partner ID và Partner Key.
  2. Gọi command=charging kèm request_id do bạn tự sinh và chữ ký sign.
  3. Phản hồi thường là status=99: lưu trans_id, giữ đơn ở trạng thái chờ.
  4. Khi thẻ có kết quả cuối (1, 2, 3 hoặc 4), hệ thống gọi Callback URL kèm callback_sign.
  5. Chưa nhận được callback thì gọi command=check với cùng request_id.

Cách gửi yêu cầu#

API nhận GET và POST tại cùng một URL và luôn trả JSON.

  • Dùng GET với tham số trên query string, hoặc POST với tham số trong thân yêu cầu.
  • Nếu URL có query string, hệ thống chỉ đọc query và bỏ qua thân yêu cầu. Khi POST, đừng gắn tham số lên URL.
  • Thân POST nhận application/x-www-form-urlencoded, multipart/form-data hoặc JSON. Không có form hợp lệ thì thân được đọc như JSON, kể cả khi thiếu Content-Type.
  • Luôn trả HTTP 200, Content-Type: application/json; charset=UTF-8. Đọc kết quả từ status và message, không dựa vào mã HTTP.
  • Tên tham số viết thường. Giá trị command và telco không phân biệt hoa thường.
Nên dùng POST (form hoặc JSON) để mã thẻ không nằm trong log truy cập của máy chủ trung gian.

Tên tham số thay thế

Hệ thống nhận thêm các tên tham số kiểu cũ. Gửi cả hai thì tên chuẩn được dùng.

TênTên thay thế
telcoloaithe
codemathe
serialserithe
amountmenhgia

Chữ ký#

Mỗi yêu cầu kèm tham số sign là MD5 của chuỗi ghép từ Partner Key và các tham số. Hệ thống chấp nhận bất kỳ công thức nào trong danh sách của lệnh tương ứng, bạn chỉ cần dùng một.

Lệnh charging

  • Khuyến nghịmd5(partner_key + code + command + partner_id + request_id + serial + telco)
  • Tương thích cũmd5(partner_key + code + serial)
  • Tương thích cũ, có mệnh giámd5(partner_key + code + serial + amount)

Lệnh check

  • Khuyến nghịmd5(partner_key + command + partner_id + request_id)
  • Tương thích cũmd5(partner_key + code + serial)
  • Tương thích cũ, có mệnh giámd5(partner_key + code + serial + amount)
  • Tương thích cũ, theo request_idmd5(partner_key + request_id)

Callback (hệ thống ký, bạn kiểm tra)

  • callback_signmd5(partner_key + code + serial)
  • Ghép liền, không dấu phân cách, đúng thứ tự trong công thức. Dấu + chỉ minh hoạ phép nối chuỗi.
  • telco trong chuỗi ký là mã nhà mạng viết HOA (VIETTEL), kể cả khi bạn gửi chữ thường.
  • amount trong chuỗi ký là số nguyên, không dấu chấm hay dấu phẩy (100000).
  • code, serial, request_id dùng đúng giá trị bạn gửi, không thêm khoảng trắng.
  • Kết quả là chuỗi hex 32 ký tự, không phân biệt hoa thường.
  • Công thức khuyến nghị là chuẩn chung của các cổng chargingws v2. Các công thức tương thích cũ vẫn được nhận để hệ thống đã tích hợp trước đây chạy tiếp mà không phải sửa.
  • Chữ ký luôn được kiểm, trừ khi quản trị viên tắt kiểm tra chữ ký cho kết nối của bạn.

Ví dụ tính chữ ký

Với Partner Key giả định YOUR_PARTNER_KEY và dữ liệu thẻ mẫu ở mục Gửi thẻ:

md5(partner_key + code + command + partner_id + request_id + serial + telco)Chuỗi trước khi bămYOUR_PARTNER_KEY114384960423544chargingYOUR_PARTNER_IDDH2026102400110006139342354VIETTELKết quảe7e34ac66c215069b8cb29a8dede105c
md5(partner_key + command + partner_id + request_id)Chuỗi trước khi bămYOUR_PARTNER_KEYcheckYOUR_PARTNER_IDDH20261024001Kết quả54d3b64b7660a1430160cd019b472252
md5(partner_key + code + serial)Chuỗi trước khi bămYOUR_PARTNER_KEY11438496042354410006139342354Kết quả675542349f9f0e778ab5baadea55bf9e

Gửi thẻ#

Gửi một thẻ cào lên hệ thống. Mỗi lần gọi gửi đúng một thẻ.

POSThttps://thepay1s.com/chargingws/v2
  • commandchuỗiBắt buộcCố định charging.Ví dụ: charging
  • partner_idchuỗiBắt buộcPartner ID của kết nối.Ví dụ: YOUR_PARTNER_ID
  • request_idchuỗiBắt buộcMã đơn phía bạn, duy nhất trong tài khoản của bạn (trên mọi kết nối). Dùng để chống gửi trùng, kiểm tra trạng thái và đối soát callback.Ví dụ: DH20261024001
  • telcochuỗiBắt buộcMã nhà mạng, xem bảng Mã nhà mạng. Không phân biệt hoa thường.Tên thay thế: loaitheVí dụ: VIETTEL
  • codechuỗiBắt buộcMã thẻ (mã nạp), chỉ gồm chữ và số, đúng độ dài của nhà mạng.Tên thay thế: matheVí dụ: 114384960423544
  • serialchuỗiBắt buộcSerial của thẻ, chỉ gồm chữ và số, đúng độ dài của nhà mạng.Tên thay thế: seritheVí dụ: 10006139342354
  • amountsố nguyênBắt buộcMệnh giá khai báo (VND), là một mệnh giá đang nhận của nhà mạng. Số thập phân bị cắt phần lẻ, số âm lấy trị tuyệt đối.Tên thay thế: menhgiaVí dụ: 100000
  • signchuỗiBắt buộcChữ ký MD5, xem mục Chữ ký.Ví dụ: e7e34ac66c215069b8cb29a8dede105c
Phần lớn thẻ trả status=99. Đây là trạng thái bình thường: chờ callback hoặc gọi check, đừng gửi lại thẻ.
PARTNER_ID='YOUR_PARTNER_ID'
PARTNER_KEY='YOUR_PARTNER_KEY'
REQUEST_ID='DH20261024001'
TELCO='VIETTEL'
CODE='114384960423544'
SERIAL='10006139342354'
SIGN=$(printf '%s' "${PARTNER_KEY}${CODE}charging${PARTNER_ID}${REQUEST_ID}${SERIAL}${TELCO}" | md5sum | cut -d ' ' -f 1)

curl -X POST 'https://thepay1s.com/chargingws/v2' \
  -d command=charging \
  -d partner_id="$PARTNER_ID" \
  -d request_id="$REQUEST_ID" \
  -d telco="$TELCO" \
  -d amount=100000 \
  -d serial="$SERIAL" \
  -d code="$CODE" \
  -d sign="$SIGN"
{
    "status": 99,
    "message": "Gửi Thẻ Thành Công, Vui Lòng Chờ Duyệt",
    "trans_id": 102345,
    "request_id": "DH20261024001",
    "amount": 79700,
    "value": null,
    "declared_value": 100000,
    "telco": "VIETTEL",
    "serial": "10006139342354",
    "code": "114384960423544"
}
  • Thẻ có thể có kết quả ngay (1, 2, 3 hoặc 4) nếu nhà cung cấp trả lời tức thì; khi đó callback vẫn được gửi.
  • Gửi lại cùng request_id không tạo thẻ mới: hệ thống trả lại thẻ đã ghi nhận với trạng thái hiện tại, kể cả khi dữ liệu thẻ gửi lần sau khác.
  • Mỗi mã thẻ chỉ được nhận một lần cho mỗi nhà mạng trên toàn hệ thống (không phân biệt hoa thường); mã đã có trả status=3.
  • Thẻ bị từ chối trước khi ghi nhận có trans_id là null và message nêu lý do.
  • Khai báo sai mệnh giá vẫn được xử lý: thẻ đúng nhưng khác mệnh giá trả status=2, tiền tính theo mệnh giá nhỏ hơn và có thể kèm phạt.

Kiểm tra trạng thái#

Lấy trạng thái hiện tại của một thẻ đã gửi qua API theo request_id. Lệnh không tạo giao dịch.

POSThttps://thepay1s.com/chargingws/v2
  • commandchuỗiBắt buộcCố định check.Ví dụ: check
  • partner_idchuỗiBắt buộcPartner ID của kết nối.Ví dụ: YOUR_PARTNER_ID
  • request_idchuỗiBắt buộcrequest_id đã dùng khi gửi thẻ.Ví dụ: DH20261024001
  • signchuỗiBắt buộcKhuyến nghị md5(partner_key + command + partner_id + request_id), xem mục Chữ ký.Ví dụ: 54d3b64b7660a1430160cd019b472252
  • code, serial, amountchuỗiChỉ cần khi bạn ký theo công thức tương thích cũ có code, serial, amount.
PARTNER_ID='YOUR_PARTNER_ID'
PARTNER_KEY='YOUR_PARTNER_KEY'
REQUEST_ID='DH20261024001'
SIGN=$(printf '%s' "${PARTNER_KEY}check${PARTNER_ID}${REQUEST_ID}" | md5sum | cut -d ' ' -f 1)

curl -X POST 'https://thepay1s.com/chargingws/v2' \
  -d command=check \
  -d partner_id="$PARTNER_ID" \
  -d request_id="$REQUEST_ID" \
  -d sign="$SIGN"
{
    "status": 1,
    "message": "VALID_CARD",
    "trans_id": 102345,
    "request_id": "DH20261024001",
    "amount": 79700,
    "value": 100000,
    "declared_value": 100000,
    "telco": "VIETTEL",
    "serial": "10006139342354",
    "code": "114384960423544"
}
  • Chỉ tìm thẻ gửi qua API của cùng tài khoản, ở bất kỳ kết nối nào. Thẻ gửi trên website không tra được bằng lệnh này.
  • Nếu hỏi định kỳ, cách nhau ít nhất 30 giây và dừng khi status khác 99.

Cấu trúc phản hồi#

Lệnh charging và check trả cùng một cấu trúc khi có thông tin thẻ. Lỗi ở mức yêu cầu chỉ có status và message. JSON được trả theo đúng thứ tự trường dưới đây.

  • statussố nguyênTrạng thái thẻ (1, 2, 3, 4, 99) hoặc mã lỗi yêu cầu (100, 102). Xem Bảng mã trạng thái.
  • messagechuỗiMô tả trạng thái hoặc lý do lỗi, tiếng Việt.
  • trans_idsố nguyên hoặc nullMã giao dịch trong hệ thống (số đơn, hiển thị dạng CC123 trên website). null nếu thẻ bị từ chối trước khi ghi nhận.
  • request_idchuỗirequest_id bạn đã gửi.
  • amountsố nguyên hoặc nullSố tiền (VND). Chờ xử lý hoặc bảo trì: tiền dự kiến nhận. Thẻ đúng hoặc sai mệnh giá: tiền thực cộng vào ví. Thẻ lỗi: 0. Bị từ chối: null.
  • valuesố nguyên hoặc nullMệnh giá thực của thẻ sau xử lý, null khi chưa có.
  • declared_valuesố nguyênMệnh giá bạn khai báo.
  • telcochuỗiMã nhà mạng, viết HOA.
  • serialchuỗiSerial của thẻ.
  • codechuỗiMã thẻ.

Callback#

Khi thẻ có kết quả cuối, hệ thống chủ động gọi Callback URL của kết nối để báo kết quả. Đây là cách nhận kết quả được khuyến nghị.

Khi nào gửi

  • Mỗi khi thẻ gửi qua API được chốt kết quả 1, 2, 3 hoặc 4: nhà cung cấp trả kết quả, hệ thống tự hỏi trạng thái, hoặc quản trị viên duyệt tay. Thẻ đang chờ (99) không có callback.
  • Một thẻ có thể được báo nhiều lần: quản trị viên gửi lại callback, hoặc thẻ được xử lý lại và chốt kết quả mới. Luôn lấy kết quả của lần báo sau cùng.
  • Gửi tới Callback URL hiện tại của kết nối tại thời điểm báo. Kết nối không có Callback URL thì không có callback.

Cách gửi

  • Kiểu GET: các trường được nối vào query string của Callback URL, giữ nguyên query sẵn có.
  • Kiểu POST: thân JSON application/json (mặc định), hoặc form application/x-www-form-urlencoded nếu kết nối được cấu hình như vậy.
  • Hệ thống chờ tối đa 30 giây. HTTP 2xx được coi là đã nhận, nội dung phản hồi không được đọc.
  • Callback chạy sau khi tiền đã cộng vào ví, nên lỗi phía bạn không ảnh hưởng tới số dư.

Các trường

  • statussố nguyênTrạng thái cuối: 1, 2, 3 hoặc 4.
  • messagechuỗiMô tả không dấu, xem Bảng mã trạng thái.
  • request_idchuỗirequest_id bạn gửi khi nạp thẻ.
  • declared_valuesố nguyênMệnh giá khai báo.
  • valuesố nguyênMệnh giá thực, 0 nếu không có.
  • card_valuesố nguyênGiống value, giữ để tương thích.
  • amountsố nguyênTiền thực cộng vào ví, 0 khi thẻ lỗi.
  • codechuỗiMã thẻ.
  • serialchuỗiSerial thẻ.
  • telcochuỗiMã nhà mạng, viết HOA.
  • trans_idsố nguyênMã giao dịch trong hệ thống.
  • callback_signchuỗimd5(partner_key + code + serial).
Ví dụ dữ liệu callback (POST JSON)
{
    "status": 1,
    "message": "Nap The Thanh Cong",
    "request_id": "DH20261024001",
    "declared_value": 100000,
    "value": 100000,
    "card_value": 100000,
    "amount": 79700,
    "code": "114384960423544",
    "serial": "10006139342354",
    "telco": "VIETTEL",
    "trans_id": 102345,
    "callback_sign": "675542349f9f0e778ab5baadea55bf9e"
}

Kiểm tra callback_sign

Tính lại md5(partner_key + code + serial) với code, serial nhận được rồi so với callback_sign. Không khớp thì bỏ qua yêu cầu.

Phản hồi và xử lý

  • Trả HTTP 200 càng nhanh càng tốt, việc nặng nên đưa vào hàng đợi.
  • Xử lý theo request_id và không cộng tiền cho khách hai lần khi nhận lại cùng kết quả.
  • amount là số tiền hệ thống thực trả cho bạn, value là mệnh giá thực của thẻ.

Gửi lại và đối soát

  • Hệ thống không tự gửi lại khi callback lỗi (hết thời gian, không kết nối được, HTTP khác 2xx); mỗi lần gọi đều được ghi log.
  • Bạn tự gửi lại được callback của từng thẻ ở lịch sử đổi thẻ (nút Gọi lại callback, mỗi thẻ cách nhau ít nhất 30 giây). Quản trị viên cũng gửi lại được từng thẻ hoặc hàng loạt.
  • Để chắc chắn, định kỳ gọi command=check cho các đơn còn chờ quá vài phút.

Mã nhận callback mẫu

Tab cURL giả lập một callback để bạn thử máy chủ của mình.

curl -X POST 'https://your-domain.com/callback' \
  -H 'Content-Type: application/json' \
  -d '{
      "status": 1,
      "message": "Nap The Thanh Cong",
      "request_id": "DH20261024001",
      "declared_value": 100000,
      "value": 100000,
      "card_value": 100000,
      "amount": 79700,
      "code": "114384960423544",
      "serial": "10006139342354",
      "telco": "VIETTEL",
      "trans_id": 102345,
      "callback_sign": "675542349f9f0e778ab5baadea55bf9e"
  }'

Bảng phí (getfee)#

Lấy biểu phí đổi thẻ áp dụng cho tài khoản sở hữu kết nối: mọi nhà mạng, mệnh giá và phần trăm phí.

GEThttps://thepay1s.com/chargingws/v2/getfee?partner_id=YOUR_PARTNER_ID
  • partner_idchuỗiBắt buộcPartner ID của kết nối, gửi trên query string.Ví dụ: YOUR_PARTNER_ID

Phản hồi thành công

  • telcochuỗiMã nhà mạng, viết HOA.
  • valuesố nguyênMệnh giá (VND).
  • feessốPhí theo phần trăm. Tiền nhận dự kiến bằng value × (100 − fees) / 100.

Phản hồi lỗi

  • Thiếu dữ liệu
    Nguyên nhân và cách xử lý
    Thiếu partner_id.
  • API KEY KHÔNG ĐÚNG
    Nguyên nhân và cách xử lý
    Không có kết nối với partner_id này.
  • Api key đang bị tắt, vui lòng báo cho quản trị viên
    Nguyên nhân và cách xử lý
    Kết nối đang tắt.
  • Địa chỉ IP không được phép, vui lòng gửi IP này cho admin: 203.0.113.10
    Nguyên nhân và cách xử lý
    IP gọi API không nằm trong danh sách Địa chỉ IP của kết nối.
  • Tài khoản chưa được cấu hình nhóm chiết khấu
    Nguyên nhân và cách xử lý
    Tài khoản chưa thuộc nhóm phí nào.
  • Có lỗi không xác định trong quá trình xử lý
    Nguyên nhân và cách xử lý
    Lỗi bất ngờ phía hệ thống, thử lại sau.
  • Không cần chữ ký hay command, chỉ cần partner_id. Kết nối phải đang bật và đúng IP (nếu có danh sách IP).
  • Gọi bằng GET. POST cũng được nhưng partner_id vẫn phải nằm trên query string; thân yêu cầu không được đọc.
  • Thành công trả một mảng JSON; lỗi trả object có status là chuỗi 100 và message.
  • Phí theo nhóm thành viên của tài khoản sở hữu kết nối và có thể thay đổi, nên lấy lại định kỳ thay vì lưu cố định. Mảng được sắp theo mã nhà mạng rồi mệnh giá.
  • Phí 0 hoặc 100 nghĩa là mệnh giá đang bảo trì, đừng gửi thẻ mệnh giá đó.
curl 'https://thepay1s.com/chargingws/v2/getfee?partner_id=YOUR_PARTNER_ID'
[
    {
        "telco": "GARENA",
        "value": 5000,
        "fees": 17.5
    },
    {
        "telco": "GARENA",
        "value": 10000,
        "fees": 17.5
    },
    {
        "telco": "GARENA",
        "value": 20000,
        "fees": 17.5
    },
    {
        "telco": "MOBIFONE",
        "value": 10000,
        "fees": 22
    },
    {
        "telco": "MOBIFONE",
        "value": 20000,
        "fees": 22
    },
    {
        "telco": "MOBIFONE",
        "value": 30000,
        "fees": 22
    }
]

Nhà mạng và mệnh giá#

Gửi mã ở cột Mã gửi vào tham số telco. Mệnh giá là các mệnh giá đang nhận theo bảng phí mặc định (đăng nhập để xem theo nhóm của bạn).

  • VIETTEL
    Loại thẻ
    Viettel
    Mệnh giá (VND)
    10.000, 20.000, 30.000, 50.000, 100.000, 200.000, 300.000, 500.000, 1.000.000
    Độ dài mã thẻ
    13, 15
    Độ dài serial
    11, 14
  • VINAPHONE
    Loại thẻ
    Vinaphone
    Mệnh giá (VND)
    10.000, 20.000, 30.000, 50.000, 100.000, 200.000, 300.000, 500.000
    Độ dài mã thẻ
    14
    Độ dài serial
    14
  • MOBIFONE
    Loại thẻ
    Mobifone
    Mệnh giá (VND)
    10.000, 20.000, 30.000, 50.000, 100.000, 200.000, 300.000, 500.000
    Độ dài mã thẻ
    12
    Độ dài serial
    15
  • ZING
    Loại thẻ
    Zing
    Mệnh giá (VND)
    10.000, 20.000, 50.000, 100.000, 200.000, 500.000, 1.000.000
    Độ dài mã thẻ
    9
    Độ dài serial
    12
  • GARENA
    Loại thẻ
    Garena
    Mệnh giá (VND)
    5.000, 10.000, 20.000, 50.000, 100.000, 200.000, 500.000
    Độ dài mã thẻ
    16
    Độ dài serial
    9
  • VCOIN
    Loại thẻ
    Vcoin
    Mệnh giá (VND)
    10.000, 20.000, 50.000, 100.000, 200.000, 300.000, 500.000, 1.000.000, 2.000.000, 5.000.000, 10.000.000
    Độ dài mã thẻ
    12
    Độ dài serial
    12
  • SCOIN
    Loại thẻ
    Scoin
    Mệnh giá (VND)
    10.000, 20.000, 50.000, 100.000, 200.000, 300.000, 500.000, 1.000.000, 2.000.000, 5.000.000
    Độ dài mã thẻ
    10, 12
    Độ dài serial
    9
  • VIETNAMOBILE
    Loại thẻ
    Vietnamobile
    Mệnh giá (VND)
    10.000, 20.000, 30.000, 50.000, 100.000, 200.000, 300.000, 500.000
    Độ dài mã thẻ
    12
    Độ dài serial
    11
Mã thẻ hoặc serial có ký tự khác chữ và số, hoặc sai độ dài, bị từ chối ngay với status=3.

Mã trạng thái#

Trường status vừa là trạng thái thẻ vừa là mã lỗi ở mức yêu cầu. Luôn đọc kèm message.

Trạng thái thẻ

  • 1
    message khi gọi API
    VALID_CARD
    message trong callback
    Nap The Thanh Cong
    Ý nghĩa
    Thẻ đúng, đúng mệnh giá.
    Cách xử lý
    Hoàn tất đơn với amount.
  • 2
    message khi gọi API
    CARD_WRONG_VALUE
    message trong callback
    Nap The Thanh Cong Nhung Sai Menh Gia
    Ý nghĩa
    Thẻ đúng nhưng mệnh giá thực khác mệnh giá khai báo. Tiền tính theo mệnh giá nhỏ hơn, có thể kèm phạt.
    Cách xử lý
    Hoàn tất đơn theo value và amount.
  • 3
    message khi gọi API
    Thẻ Sai Hoặc Đã Sử Dụng, Hệ Thống Từ Chối Nạp
    message trong callback
    The Sai Hoac Da Su Dung Vui Long Kiem Tra Lai
    Ý nghĩa
    Thẻ sai, đã sử dụng, hoặc bị từ chối (xem message).
    Cách xử lý
    Báo thất bại, không cộng tiền.
  • 4
    message khi gọi API
    Hệ Thống Bảo Trì
    message trong callback
    Bao Tri
    Ý nghĩa
    Nhà mạng, mệnh giá hoặc nhà cung cấp đang bảo trì, thẻ không được tính tiền.
    Cách xử lý
    Báo khách thử lại sau.
  • 99
    message khi gọi API
    Gửi Thẻ Thành Công, Vui Lòng Chờ Duyệt
    message trong callback
    The Dang Xu Ly Vui Long Cho
    Ý nghĩa
    Đã nhận thẻ, đang chờ xử lý.
    Cách xử lý
    Chờ callback hoặc gọi check, không gửi lại.

Lỗi ở mức yêu cầu

  • 100
    Ý nghĩa
    Yêu cầu bị từ chối: thiếu dữ liệu, sai chữ ký, kết nối không hợp lệ hoặc đang tắt, nhà mạng không tồn tại, không tìm thấy thẻ khi check. Xem message ở bảng Mã lỗi.
  • 102
    Ý nghĩa
    Không nhận được tham số nào: thân yêu cầu rỗng, GET không có query hoặc JSON hỏng.
Status 3 và 4 cũng được trả ngay khi thẻ bị từ chối trước khi ghi nhận (sai định dạng, mệnh giá bảo trì, trùng mã, không có nhà cung cấp); khi đó trans_id là null.

Mã lỗi#

Các thông báo API trả về, giữ nguyên văn để bạn so khớp.

  • 4
    message
    Website đang bảo trì
    Nguyên nhân và cách xử lý
    Hệ thống tạm dừng nhận thẻ hoặc website đang bảo trì. Thử lại sau.
  • 102
    message
    Sai du lieu gui len
    Nguyên nhân và cách xử lý
    Không có tham số nào: thân rỗng, GET không có query, hoặc JSON hỏng.
  • 100
    message
    Dữ liệu không đủ, vui lòng đọc kỹ tài liệu API
    Nguyên nhân và cách xử lý
    Thiếu một trong request_id, partner_id, sign, command.
  • 100
    message
    Api key không hợp lệ
    Nguyên nhân và cách xử lý
    partner_id không tồn tại hoặc kết nối không có loại API Đổi thẻ cào.
  • 100
    message
    Api key chưa được bật
    Nguyên nhân và cách xử lý
    Kết nối đang tắt: chưa kích hoạt, bị quản trị viên tắt, hoặc tự tắt do gửi quá nhiều thẻ lỗi.
  • 100
    message
    Địa chỉ IP không được phép, vui lòng gửi IP này cho admin: 203.0.113.10
    Nguyên nhân và cách xử lý
    IP gọi API không nằm trong danh sách Địa chỉ IP của kết nối. Thông báo kèm IP mà hệ thống nhận được.
  • 100
    message
    Dữ liệu thẻ không đầy đủ
    Nguyên nhân và cách xử lý
    Lệnh charging thiếu telco, code, serial, hoặc amount không phải số dương.
  • 100
    message
    Chữ ký không hợp lệ
    Nguyên nhân và cách xử lý
    Chữ ký không khớp công thức nào. Kiểm tra Partner Key, thứ tự ghép và mã nhà mạng viết HOA.
  • 100
    message
    Tài khoản bị khóa
    Nguyên nhân và cách xử lý
    Tài khoản sở hữu kết nối đang bị khoá.
  • 100
    message
    Địa chỉ ví bị khóa
    Nguyên nhân và cách xử lý
    Ví của tài khoản sở hữu kết nối đang bị khoá.
  • 100
    message
    Bạn có quá nhiều thẻ thất bại, vui lòng chờ
    Nguyên nhân và cách xử lý
    Quá nhiều thẻ lỗi trong khoảng thời gian giới hạn; kết nối bị tắt tự động.
  • 100
    message
    Bạn có quá nhiều thẻ xử lý, vui lòng chờ
    Nguyên nhân và cách xử lý
    Quá nhiều thẻ đang chờ; đợi các thẻ có kết quả rồi gửi tiếp.
  • 100
    message
    Nhà mạng không tồn tại
    Nguyên nhân và cách xử lý
    Mã telco không có hoặc loại thẻ đang tắt.
  • 100
    message
    CARD_NOT_EXISTED
    Nguyên nhân và cách xử lý
    Lệnh check không tìm thấy thẻ API nào của tài khoản với request_id này.
  • 100
    message
    Command không chính xác
    Nguyên nhân và cách xử lý
    command không phải charging hoặc check.
  • 100
    message
    Có lỗi không xác định trong quá trình xử lý
    Nguyên nhân và cách xử lý
    Lỗi bất ngờ phía hệ thống. Thử lại sau ít phút; với thẻ đã gửi, dùng check trước khi gửi lại.
  • 4
    message
    Không có nhà cung cấp đổi thẻ đang hoạt động
    Nguyên nhân và cách xử lý
    Mệnh giá này tạm không có nhà cung cấp nhận thẻ.
  • 3
    message
    Mã thẻ và serial chỉ gồm chữ và số
    Nguyên nhân và cách xử lý
    code hoặc serial có ký tự khác chữ và số.
  • 3
    message
    Độ dài seri không phù hợp
    Nguyên nhân và cách xử lý
    Độ dài serial không nằm trong danh sách cho phép của nhà mạng.
  • 3
    message
    Độ dài mã thẻ không phù hợp
    Nguyên nhân và cách xử lý
    Độ dài mã thẻ không nằm trong danh sách cho phép của nhà mạng.
  • 3
    message
    Loại thẻ hoặc mệnh giá này đang bảo trì
    Nguyên nhân và cách xử lý
    Mệnh giá không có trong bảng phí của bạn hoặc đang bảo trì.
  • 3
    message
    Mã thẻ đã tồn tại trong hệ thống
    Nguyên nhân và cách xử lý
    Mã thẻ đã từng được gửi cho cùng nhà mạng.
  • 3
    message
    Hệ thống chưa có nhóm thành viên mặc định, vui lòng liên hệ quản trị
    Nguyên nhân và cách xử lý
    Lỗi cấu hình nhóm phí phía hệ thống, liên hệ hỗ trợ.