API đổi thẻ
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
- 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.
- Gọi command=charging kèm request_id do bạn tự sinh và chữ ký sign.
- Phản hồi thường là status=99: lưu trans_id, giữ đơn ở trạng thái chờ.
- 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.
- 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.
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ên | Tên thay thế |
|---|---|
| telco | loaithe |
| code | mathe |
| serial | serithe |
| amount | menhgia |
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ẻ:
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ẻ.
- 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
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
| command | chuỗi | Có | Cố định charging.Ví dụ: charging |
| partner_id | chuỗi | Có | Partner ID của kết nối.Ví dụ: YOUR_PARTNER_ID |
| request_id | chuỗi | Có | Mã đơ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 |
| telco | chuỗi | Có | Mã 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 |
| code | chuỗi | Có | Mã 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 |
| serial | chuỗi | Có | Serial của thẻ, chỉ gồm chữ và số, đúng độ dài của nhà mạng.Tên thay thế: seritheVí dụ: 10006139342354 |
| amount | số nguyên | Có | Mệ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 |
| sign | chuỗi | Có | Chữ ký MD5, xem mục Chữ ký.Ví dụ: e7e34ac66c215069b8cb29a8dede105c |
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.
- 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.
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
| command | chuỗi | Có | Cố định check.Ví dụ: check |
| partner_id | chuỗi | Có | Partner ID của kết nối.Ví dụ: YOUR_PARTNER_ID |
| request_id | chuỗi | Có | request_id đã dùng khi gửi thẻ.Ví dụ: DH20261024001 |
| sign | chuỗi | Có | Khuyến nghị md5(partner_key + command + partner_id + request_id), xem mục Chữ ký.Ví dụ: 54d3b64b7660a1430160cd019b472252 |
| code, serial, amount | chuỗi | Không | Chỉ 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ẻ.
| Tên | Kiểu | Mô tả |
|---|---|---|
| status | số nguyên | Trạ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. |
| message | chuỗi | Mô tả trạng thái hoặc lý do lỗi, tiếng Việt. |
| trans_id | số nguyên hoặc null | Mã 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_id | chuỗi | request_id bạn đã gửi. |
| amount | số nguyên hoặc null | Số 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. |
| value | số nguyên hoặc null | Mệnh giá thực của thẻ sau xử lý, null khi chưa có. |
| declared_value | số nguyên | Mệnh giá bạn khai báo. |
| telco | chuỗi | Mã nhà mạng, viết HOA. |
| serial | chuỗi | Serial của thẻ. |
| code | chuỗi | Mã 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).
| Tên | Kiểu | Mô tả |
|---|---|---|
| status | số nguyên | Trạng thái cuối: 1, 2, 3 hoặc 4. |
| message | chuỗi | Mô tả không dấu, xem Bảng mã trạng thái. |
| request_id | chuỗi | request_id bạn gửi khi nạp thẻ. |
| declared_value | số nguyên | Mệnh giá khai báo. |
| value | số nguyên | Mệnh giá thực, 0 nếu không có. |
| card_value | số nguyên | Giống value, giữ để tương thích. |
| amount | số nguyên | Tiền thực cộng vào ví, 0 khi thẻ lỗi. |
| code | chuỗi | Mã thẻ. |
| serial | chuỗi | Serial thẻ. |
| telco | chuỗi | Mã nhà mạng, viết HOA. |
| trans_id | số nguyên | Mã giao dịch trong hệ thống. |
| callback_sign | chuỗi | md5(partner_key + code + serial). |
{ "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
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í.
- partner_idchuỗiBắt buộcPartner ID của kết nối, gửi trên query string.Ví dụ: YOUR_PARTNER_ID
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
| partner_id | chuỗi | Có | Partner 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.
| Tên | Kiểu | Mô tả |
|---|---|---|
| telco | chuỗi | Mã nhà mạng, viết HOA. |
| value | số nguyên | Mệnh giá (VND). |
| fees | số | 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ệuNguyên nhân và cách xử lýThiếu partner_id.
- API KEY KHÔNG ĐÚNGNguyê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ênNguyê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.10Nguyê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ấuNguyê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).
- VIETTELLoại thẻViettelMệ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 serial11, 14
- VINAPHONELoại thẻVinaphoneMệ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 serial14
- MOBIFONELoại thẻMobifoneMệ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 serial15
- ZINGLoại thẻZingMệ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 serial12
- GARENALoại thẻGarenaMệnh giá (VND)5.000, 10.000, 20.000, 50.000, 100.000, 200.000, 500.000Độ dài mã thẻ16Độ dài serial9
- VCOINLoại thẻVcoinMệ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 serial12
- SCOINLoại thẻScoinMệ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 serial9
- VIETNAMOBILELoại thẻVietnamobileMệ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 serial11
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ẻ
- 1message khi gọi APIVALID_CARDmessage trong callbackNap The Thanh CongÝ nghĩaThẻ đúng, đúng mệnh giá.Cách xử lýHoàn tất đơn với amount.
- 2message khi gọi APICARD_WRONG_VALUEmessage trong callbackNap The Thanh Cong Nhung Sai Menh GiaÝ nghĩaThẻ đú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.
- 3message khi gọi APIThẻ Sai Hoặc Đã Sử Dụng, Hệ Thống Từ Chối Nạpmessage trong callbackThe Sai Hoac Da Su Dung Vui Long Kiem Tra LaiÝ nghĩaThẻ 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.
- 4message khi gọi APIHệ Thống Bảo Trìmessage trong callbackBao TriÝ nghĩaNhà 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.
- 99message khi gọi APIGửi Thẻ Thành Công, Vui Lòng Chờ Duyệtmessage trong callbackThe 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ĩaYê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ĩaKhô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.
Mã lỗi#
Các thông báo API trả về, giữ nguyên văn để bạn so khớp.
- 4messageWebsite đ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.
- 102messageSai du lieu gui lenNguyê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.
- 100messageDữ liệu không đủ, vui lòng đọc kỹ tài liệu APINguyên nhân và cách xử lýThiếu một trong request_id, partner_id, sign, command.
- 100messageApi 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.
- 100messageApi key chưa được bậtNguyê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.
- 100messageĐịa chỉ IP không được phép, vui lòng gửi IP này cho admin: 203.0.113.10Nguyê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.
- 100messageDữ 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.
- 100messageChữ 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.
- 100messageTài khoản bị khóaNguyên nhân và cách xử lýTài khoản sở hữu kết nối đang bị khoá.
- 100messageĐịa chỉ ví bị khóaNguyê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á.
- 100messageBạ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.
- 100messageBạ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.
- 100messageNhà mạng không tồn tạiNguyên nhân và cách xử lýMã telco không có hoặc loại thẻ đang tắt.
- 100messageCARD_NOT_EXISTEDNguyê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.
- 100messageCommand không chính xácNguyên nhân và cách xử lýcommand không phải charging hoặc check.
- 100messageCó 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.
- 4messageKhông có nhà cung cấp đổi thẻ đang hoạt độngNguyê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ẻ.
- 3messageMã 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ố.
- 3messageĐộ dài seri không phù hợpNguyê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.
- 3messageĐộ dài mã thẻ không phù hợpNguyê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.
- 3messageLoạ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ì.
- 3messageMã thẻ đã tồn tại trong hệ thốngNguyên nhân và cách xử lýMã thẻ đã từng được gửi cho cùng nhà mạng.
- 3messageHệ 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ợ.