POST /apiv2/screening
สั่งการตรวจสอบ AML สำหรับที่อยู่บล็อกเชน: รูปแบบการตอบกลับเดียวสำหรับทุกผู้ให้บริการและทุกสถานะของคำสั่งซื้อ, ตัวเลขทศนิยมอยู่ในรูปแบบสตริง และรูปแบบข้อผิดพลาดที่เป็นหนึ่งเดียว
URL ของ Endpoint
POST https://netts.io/apiv2/screeningHeaders ของคำขอ
| ส่วนหัว | จำเป็น | คำอธิบาย |
|---|---|---|
| Content-Type | ใช่ | application/json |
| X-API-KEY | ใช่ | คีย์ API ของคุณจากแดชบอร์ด Netts |
| X-Idempotency-Key | ไม่ | คีย์ของคุณเองสำหรับการลองใหม่ได้อย่างปลอดภัย ดูที่ การทำงานแบบ Idempotency |
เนื้อหาของคำขอ
{
"address": "YOUR_ADDRESS_HERE",
"network": "trx",
"provider": "elliptic",
"wait_for_result": true
}พารามิเตอร์
| พารามิเตอร์ | ชนิดข้อมูล | จำเป็น | คำอธิบาย |
|---|---|---|---|
| address | string | ใช่ | ที่อยู่ที่ต้องการตรวจสอบ ความยาว 10–128 ตัวอักษร |
| network | string | ใช่ | ทิกเกอร์เครือข่าย ทิกเกอร์ที่แต่ละผู้ให้บริการครอบคลุมมีระบุไว้โดย GET /apiv2/screening/providers |
| provider | string | ใช่ | elliptic หรือ bitok ไม่มีค่าเริ่มต้น |
| wait_for_result | boolean | ไม่ | true จะรอผลลัพธ์นานสูงสุด 15 วินาที ค่าเริ่มต้นคือ false |
| language | string | ไม่ | ภาษาของรายงาน รองรับเฉพาะ en |
ฟิลด์ที่ไม่รู้จักจะถูกปฏิเสธ Body ที่มีฟิลด์ซึ่งไม่ได้อยู่ในตารางด้านบนจะส่งกลับ 400 พร้อมรหัส 4001
provider จำเป็นต้องระบุและไม่มีค่าเริ่มต้น คุณเป็นผู้เลือกผู้ให้บริการที่คุณต้องการชำระเงินเสมอ
provider เป็นสตริงรูปแบบอิสระในสกีมา ไม่ใช่ประเภทแจกแจง (enumeration) ในปัจจุบันยอมรับได้สองค่า; การเพิ่มผู้ให้บริการรายที่สามจะต้องไม่ทำให้เกิดความเสียหายสำหรับผู้ที่ตรวจสอบการตอบกลับตามสกีมา รายการปัจจุบัน เครือข่ายที่แต่ละผู้ให้บริการครอบคลุม และสเกลคะแนนที่แต่ละรายใช้มาจาก GET /apiv2/screening/providers
ตัวอย่างคำขอ
cURL — รอผลลัพธ์
curl -X POST https://netts.io/apiv2/screening \
-H "Content-Type: application/json" \
-H "X-API-KEY: your_api_key" \
-d '{
"address": "YOUR_ADDRESS_HERE",
"network": "trx",
"provider": "elliptic",
"wait_for_result": true
}'cURL — ยอมรับและทำโพลลิ่ง
curl -X POST https://netts.io/apiv2/screening \
-H "Content-Type: application/json" \
-H "X-API-KEY: your_api_key" \
-d '{
"address": "YOUR_ADDRESS_HERE",
"network": "trx",
"provider": "bitok"
}'การตอบกลับจะเป็น 202 Accepted พร้อมส่วนหัว Location ที่ชี้ไปยังคำสั่งซื้อ
Python
import requests
from decimal import Decimal
url = "https://netts.io/apiv2/screening"
headers = {
"Content-Type": "application/json",
"X-API-KEY": "your_api_key",
}
payload = {
"address": "YOUR_ADDRESS_HERE",
"network": "trx",
"provider": "elliptic",
"wait_for_result": True,
}
response = requests.post(url, headers=headers, json=payload)
if response.status_code in (200, 202):
body = response.json()
print("Order:", body["order"]["client_order_id"])
print("Status:", body["order"]["status"])
if body["risk"]["score"] is not None:
# แปลงตัวเลขของผู้ให้บริการเป็น Decimal เสมอ ห้ามแปลงเป็น float
print("Score:", Decimal(body["risk"]["score"]), "of", body["risk"]["scale"]["max"])
print("Level:", body["risk"]["level"], "-", body["risk"]["level_source"])
print("Charged:", body["billing"]["charged_amount"], body["billing"]["charged_currency"])
else:
problem = response.json()
print(problem["code"], problem["title"], "-", problem["detail"])รหัสการตอบกลับ
| สถานการณ์ | รหัส | ส่วนหัว |
|---|---|---|
| สร้างคำสั่งซื้อแล้ว การตรวจสอบกำลังดำเนินการอยู่เบื้องหลัง | 202 Accepted | Location: /apiv2/screening/{client_order_id} |
มีผลลัพธ์อยู่ในการตอบกลับ (wait_for_result) | 200 OK | — |
| นำผลลัพธ์จากการตรวจสอบล่าสุดมาใช้ซ้ำ ไม่มีการเรียกเก็บเงิน | 200 OK | — |
| ที่อยู่ไม่มีกิจกรรมบนบล็อกเชน ไม่มีการเรียกเก็บเงิน | 200 OK | — |
| ข้อผิดพลาด | ดูที่ ข้อผิดพลาด | Content-Type: application/problem+json |
การตอบกลับที่มีผลการตรวจสอบจะถูกส่งมาพร้อมกับ Cache-Control: private, no-store
การตอบกลับ
{
"schema_version": 2,
"order": {
"client_order_id": "A90D21F68C9AEA2",
"status": "completed",
"api_version": "v2",
"cache_hit": false,
"created_at": "2026-09-13T08:14:29.614988Z",
"started_at": "2026-09-13T08:14:30.288251Z",
"completed_at": "2026-09-13T08:14:34.993174Z"
},
"request": {
"address": "YOUR_ADDRESS_HERE",
"network": "trx",
"provider": "elliptic"
},
"billing": {
"charged": true,
"price_usdt": "0.98",
"base_amount": "2.882421",
"markup_amount": "0",
"charged_amount": "2.882421",
"charged_currency": "TRX",
"exchange_rate": "0.33999200",
"payment_status": "pending"
},
"precheck": {
"activity_checked": true,
"activity_status": "active",
"source": "tron-address-checker"
},
"check": {
"provider": "elliptic",
"provider_check_id": "b4903a5d-9f22-4075-b51b-beb40b419b97",
"checked_at": "2026-09-13T08:14:32.144000Z",
"status": "completed",
"provider_status": "complete"
},
"risk": {
"score": "0.9634087310611608",
"scale": { "min": 0, "max": 10 },
"level": "low",
"level_source": "computed",
"provider_level": null,
"policy": "netts-risk-v1",
"by_direction": {
"source": "0.12332156899576921",
"destination": "0.9634087310611608"
}
},
"sanctions": {
"self": false,
"self_entities": null,
"exposure": {
"entity": "HTX (formerly Huobi) - Post-Sanctions - UK Sanctions List - 26 May 2026",
"category": "Exchange",
"share_fraction": "0.004409451392423414",
"proximity": "indirect",
"hops": 3,
"direction": "source",
"rule_name": "Sanctioned, TF & CSAM"
},
"items": []
},
"exposure": [
{
"category": "Exchange",
"share_fraction": "0.1888065152442461",
"direction": "source",
"hops": 2,
"is_screened_address": false,
"entities": [
{ "name": "Binance", "category": "Exchange", "is_vasp": true,
"is_primary": true, "is_after_sanction_date": null }
]
}
],
"rules": [
{ "name": "Sanctioned, TF & CSAM", "type": "exposure", "level": null,
"score": "0.061426483114820525", "share_fraction": null, "category": null,
"proximity": null, "direction": "source", "detected_at": null }
],
"entities": [
{ "name": "Unknown", "category": "Unknown", "is_vasp": null,
"is_primary": true, "is_after_sanction_date": false }
],
"primary_entity": {
"name": "Unknown", "category": "Unknown", "is_vasp": null,
"is_primary": true, "is_after_sanction_date": false
},
"sanctioned_entities": [],
"wallet": {
"inflow_usd": "354663.6116669158",
"outflow_usd": "80248.63081808022"
},
"provider_data": { }
}ชุดฟิลด์จะไม่มีการเปลี่ยนแปลง
ทุกบล็อกที่ระบุไว้ข้างต้นจะปรากฏในทุกการตอบกลับ ไม่ว่าจะเป็นผู้ให้บริการรายใดและไม่ว่าคำสั่งซื้อจะอยู่ในสถานะใดก็ตาม ข้อมูลที่ผู้ให้บริการไม่ได้ระบุไว้จะเป็น null; รายการที่ไม่มีข้อมูลจะเป็น [] ไม่ใช่ null; บล็อกที่ยังไม่มีข้อมูลจะถูกเติมด้วยค่าว่าง (nulls) แทนที่จะถูกตัดทิ้ง ตัวแยกวิเคราะห์ (parser) เดียวจึงสามารถจัดการการตรวจสอบที่เพิ่งยอมรับและการตรวจสอบเดียวกันนั้นเมื่อเสร็จสมบูรณ์ได้
สองสิ่งที่ส่งผลต่อโค้ดของคุณ:
- ละเว้นฟิลด์ที่คุณไม่รู้จัก ฟิลด์ใหม่จะถูกเพิ่มเข้าไปในบล็อกเหล่านี้โดยไม่ต้องมีเวอร์ชันใหม่ การปฏิเสธฟิลด์ที่ไม่รู้จักถือเป็นข้อผิดพลาดฝั่งคุณ ไม่ใช่ของเรา
provider_dataไม่ได้เป็นส่วนหนึ่งของสัญญา (contract) โครงสร้างของมันจะขึ้นอยู่กับผู้ให้บริการ และจะเปลี่ยนไปเมื่อผู้ให้บริการเปลี่ยนไป ทุกสิ่งที่สัญญารับประกันจะอยู่ในบล็อกด้านบน
order
| ฟิลด์ | ชนิดข้อมูล | คำอธิบาย |
|---|---|---|
| client_order_id | string | ตัวระบุคำสั่งซื้อ ใช้สำหรับอ่านผลลัพธ์ในภายหลัง |
| status | string | pending, processing, completed, skipped, failed |
| api_version | string | สัญญาที่สร้างคำสั่งซื้อ |
| cache_hit | boolean | เป็น true เมื่อผลลัพธ์ล่าสุดถูกนำมาใช้ซ้ำและไม่มีการเรียกเก็บเงิน |
| created_at | string | RFC 3339, UTC, ไมโครวินาที |
| started_at | string | null | เวลาที่การเรียกผู้ให้บริการเริ่มต้นขึ้น มีค่าเป็น null สำหรับ skipped |
| completed_at | string | null | เวลาที่ผลลัพธ์มาถึง |
| error | string | มีเฉพาะสำหรับ failed: เหตุผลที่ล้มเหลว |
| reason | string | มีเฉพาะสำหรับ skipped: address_inactive |
การประทับเวลาทั้งหมดเป็น UTC, RFC 3339 พร้อมคำต่อท้าย Z และมีความละเอียดระดับไมโครวินาที
billing
| ฟิลด์ | ชนิดข้อมูล | คำอธิบาย |
|---|---|---|
| charged | boolean | มีการหักเงินหรือไม่ |
| price_usdt | string | ราคาตามรายการของผู้ให้บริการในหน่วย USDT |
| base_amount | string | ราคาคำสั่งซื้อในสกุลเงินที่เรียกเก็บ โดยไม่มีมาร์กอัปของบัญชีย่อย |
| markup_amount | string | มาร์กอัปของบัญชีย่อย "0" สำหรับบัญชีตรง |
| charged_amount | string | จำนวนเงินที่หักจริงจากยอดคงเหลือ |
| charged_currency | string | TRX |
| exchange_rate | string | null | อัตราแลกเปลี่ยนที่ใช้ในการแปลง |
| payment_status | string | paid, pending, failed, not_charged, postpaid |
payment_status จะเป็น pending ในช่วงเวลาสั้นๆ หลังจากการตรวจสอบสำเร็จ: การเรียกเก็บเงินจะถูกกันไว้ก่อนและจะชำระบัญชีภายในหนึ่งชั่วโมง failed หมายถึงมีการคืนเงินแล้ว not_charged หมายถึงไม่มีการสร้างการเรียกเก็บเงินขึ้นเลย — ซึ่งเป็นผลลัพธ์ที่นำมาใช้ซ้ำหรือที่อยู่ที่ถูกข้าม postpaid — ดูที่ บัญชีแบบชำระเงินทีหลัง (Postpaid)
precheck
ก่อนการตรวจสอบแบบมีค่าใช้จ่าย ที่อยู่จะได้รับการตรวจหากิจกรรมบนบล็อกเชน ที่อยู่ที่ไม่มีกิจกรรมจะไม่ถูกส่งไปยังผู้ให้บริการและจะไม่ถูกเรียกเก็บเงิน
| ฟิลด์ | ชนิดข้อมูล | คำอธิบาย |
|---|---|---|
| activity_checked | boolean | มีการตรวจสอบหรือไม่ false บนเครือข่ายที่ไม่มีการตรวจสอบนี้ |
| activity_status | string | active, inactive, unknown |
| source | string | null | ชื่อของกลไก |
unknown จะไม่หยุดการตรวจสอบแบบมีค่าใช้จ่าย: หากบริการตรวจสอบกิจกรรมไม่พร้อมใช้งาน ที่อยู่จะถือว่ามีกิจกรรม (active)
check
| ฟิลด์ | ชนิดข้อมูล | คำอธิบาย |
|---|---|---|
| provider | string | ผู้ให้บริการที่ทำการตรวจสอบ |
| provider_check_id | string | null | ตัวระบุของผู้ให้บริการเอง — ให้อ้างอิงถึงตัวระบุนี้เมื่อมีการโต้แย้งผลลัพธ์กับพวกเขา |
| checked_at | string | null | เวลาที่ผู้ให้บริการสร้างผลลัพธ์ |
| status | string | ดูตารางด้านล่าง |
| provider_status | string | null | ข้อความของผู้ให้บริการเองโดยไม่มีการดัดแปลง |
order.status | check.status | ความหมาย |
|---|---|---|
pending | pending | ยอมรับคำสั่งซื้อแล้ว ยังไม่ได้เริ่มต้น |
processing | running | ผู้ให้บริการกำลังดำเนินการ |
completed | completed | ได้รับผลลัพธ์แล้ว |
failed | failed | ถูกปฏิเสธก่อนหรือระหว่างการเรียกผู้ให้บริการ |
skipped | not_performed | ที่อยู่ไม่มีกิจกรรม ผู้ให้บริการไม่เคยถูกเรียกใช้และไม่มีการเรียกเก็บเงิน |
risk
| ฟิลด์ | ชนิดข้อมูล | คำอธิบาย |
|---|---|---|
| score | string | null | คะแนนของผู้ให้บริการเอง ในรูปแบบสตริงทศนิยม |
| scale | object | min และ max ของสเกลของผู้ให้บริการรายนั้น |
| level | string | none, low, medium, high, severe |
| level_source | string | computed — เราคำนวณระดับจากคะแนน; provider — ผู้ให้บริการเป็นผู้ระบุ |
| provider_level | string | null | ข้อความระดับของผู้ให้บริการเอง เมื่อมีการส่งกลับมา |
| policy | string | ชื่อของนโยบายเกณฑ์คะแนน netts-risk-v1 |
| by_direction | object | คะแนนที่แยกเป็น source และ destination เมื่อผู้ให้บริการมีการแยก |
คะแนนจะไม่มีการปรับสเกลใหม่ Elliptic ใช้สเกล 0–10 และ BitOK ใช้สเกล 0–1 และ 7 ในสเกลหนึ่งไม่ได้มีความหมายเทียบเท่ากับ 0.7 ในอีกสเกลหนึ่ง สเกลจะถูกส่งมาในการตอบกลับเพื่อให้การผสานรวมที่เขียนขึ้นสำหรับผู้ให้บริการรายหนึ่งไม่แปลผลของผู้ให้บริการอีกรายผิดพลาดหลังจากการเปลี่ยนแปลงการกำหนดค่าเพียงจุดเดียว
ระดับความเสี่ยงจะใช้คำศัพท์ชุดเดียวกันทั่วทั้ง API ในกรณีที่ผู้ให้บริการระบุระดับของตนเองมา เราจะส่งต่อค่านั้นและแจ้งไว้ใน level_source; ในกรณีที่ไม่ได้ระบุ เราจะคำนวณระดับจากคะแนนโดยใช้เกณฑ์ของ netts-risk-v1 และระบุไว้แทน คำเดียวกันนี้จะปรากฏในการตอบกลับของ API, แดชบอร์ด และรายงาน PDF สำหรับการตรวจสอบเดียวกัน
exposure[], rules[], entities[]
exposure[] แจกแจงเงินทุนตามหมวดหมู่ของคู่สัญญา rules[] แสดงรายการกฎของผู้ให้บริการที่ถูกเรียกใช้ entities[] แสดงรายการเอนทิตีที่ที่อยู่นั้นสังกัดอยู่; primary_entity จะเลือกหนึ่งรายการจากกฎที่กำหนดไว้ตายตัว — เอนทิตีที่ผู้ให้บริการทำเครื่องหมายว่าเป็นหลัก หากไม่มีให้เลือกรายการแรก หากไม่มีอีกให้เป็น null sanctioned_entities[] จะเก็บเอนทิตีจาก entities[] ที่ถูกตั้งค่าสถานะว่ายังใช้งานอยู่หลังจากวันที่ถูกคว่ำบาตร
ส่วนแบ่งเป็นเศษส่วน ไม่ใช่เปอร์เซ็นต์
ทุกส่วนแบ่งในการตอบกลับจะเป็นฟิลด์เดียว คือ share_fraction ซึ่งเป็นสตริงทศนิยมระหว่าง "0" ถึง "1"
Elliptic รายงาน 31.574732212596924 % -> "share_fraction": "0.31574732212596924"
BitOK รายงาน 0.8488 -> "share_fraction": "0.8488"ผู้ให้บริการใช้หน่วยไม่ตรงกัน: ส่วนแบ่งความเกี่ยวข้องหนึ่งในสามเท่ากันจะส่งมาจากรายหนึ่งเป็น 31.57 และจากอีกรายหนึ่งเป็น 0.3157 ฟิลด์เดียวที่เก็บทั้งสองแบบจะไม่สามารถอ่านได้โดยไม่ทราบว่ามาจากผู้ให้บริการรายใด ตัวเลขของผู้ให้บริการเองในหน่วยของผู้ให้บริการเองจะคงอยู่ใน provider_data
ตัวเลขอยู่ในรูปแบบสตริง
ทุกตัวเลขที่มาจากผู้ให้บริการ — คะแนน, ส่วนแบ่ง, ปริมาณธุรกรรม USD และจำนวนเงินทุกรายการใน billing — จะเป็นสตริงทศนิยม
"score": "0.9634087310611608"การแยกวิเคราะห์ค่าดังกล่าวเป็นตัวเลข JSON ใน JavaScript, Go หรือภาษาอื่นที่มีเลขทศนิยมแบบไบนารีจะได้ค่าประมาณกลับมา และค่าที่คุณพิมพ์จะไม่ตรงกับค่าที่ผู้ให้บริการออกให้อีกต่อไป แยกวิเคราะห์ฟิลด์เหล่านี้ด้วยชนิดข้อมูลทศนิยม: Decimal ใน Python, BigDecimal ใน Java, decimal.Decimal หรือสตริงใน JavaScript
ฟิลด์ที่เป็นของเราเองแทนที่จะเป็นของผู้ให้บริการ — scale.min, scale.max, hops — จะเป็นตัวเลข JSON ทั่วไป
การนำผลลัพธ์ล่าสุดมาใช้ซ้ำ
เมื่อคุณตรวจสอบที่อยู่ เครือข่าย และผู้ให้บริการเดียวกันซ้ำอีกครั้งภายใน 60 วินาที ผลลัพธ์ก่อนหน้าจะถูกส่งกลับและไม่มีการเรียกเก็บเงิน
แต่ละคำขอยังคงสร้างคำสั่งซื้อของตนเองพร้อมกับ client_order_id ของตนเอง; รายการที่นำมาใช้ซ้ำจะถูกทำเครื่องหมายเป็น "cache_hit": true และบล็อก billing จะรายงาน "charged": false พร้อม "payment_status": "not_charged" ตัวระบุของคำสั่งซื้อที่เป็นแหล่งที่มาของผลลัพธ์จะไม่ถูกเปิดเผย — เนื่องจากอาจเป็นของบัญชีอื่น
การนำกลับมาใช้ซ้ำจะเกิดขึ้นภายในบัญชีเดียวกันเท่านั้น ผลลัพธ์ที่ได้รับการตรวจสอบโดยผู้อื่นจะไม่ถูกส่งกลับมาให้คุณ
การทำงานแบบ Idempotency
ส่ง X-Idempotency-Key พร้อมค่าของคุณเองเพื่อให้การลองใหม่ปลอดภัย: คีย์เดียวกันพร้อมกับ body เดียวกันจะส่งผลลัพธ์ที่บันทึกไว้กลับมาแทนที่จะสั่งการตรวจสอบครั้งที่สอง
| สถานการณ์ | รหัส | การตอบกลับ |
|---|---|---|
| คำขอแรกที่ใช้คีย์นี้ยังคงทำงานอยู่ | 409 | 4090 |
| คีย์เดียวกัน แต่ Request Body ต่างกัน | 409 | 4093 |
| คีย์เดียวกัน Body เดียวกัน และเสร็จสิ้นไปแล้ว | รหัสที่บันทึกไว้ | การตอบกลับที่บันทึกไว้ |
หากคุณไม่ส่งส่วนหัวนี้ ระบบจะสร้างคีย์ให้คุณจากคีย์ API, ที่อยู่, ผู้ให้บริการ และที่อยู่ IP ของคุณ ภายในกรอบเวลาสองวินาที ซึ่งจะช่วยป้องกันการดับเบิลคลิกและการลองส่งใหม่จากเกตเวย์ แต่ไม่ป้องกันการทำซ้ำในอีกหนึ่งนาทีต่อมา: คำขอนั้นจะเป็นคำสั่งซื้อใหม่จริงๆ และจะถูกเรียกเก็บเงิน
ข้อผิดพลาด
ทุกข้อผิดพลาดที่เกิดขึ้นจากแอปพลิเคชันจะใช้ RFC 9457 พร้อม Content-Type: application/problem+json:
{
"type": "https://doc.netts.io/api/v2/errors/insufficient-funds",
"title": "Insufficient funds",
"status": 403,
"detail": "Insufficient funds. Required: 2.888742 TRX, Available: 1.203000 TRX",
"instance": "/apiv2/screening",
"code": 1004,
"required_trx": "2.888742",
"available_trx": "1.203000"
}type, title, status, detail และ instance เป็นฟิลด์มาตรฐาน ตัวเลข code เป็นส่วนขยาย: ให้จับคู่การจัดการข้อผิดพลาดของคุณกับรหัสนี้ ฟิลด์เพิ่มเติมจะขึ้นอยู่กับข้อผิดพลาดและต้องละเว้นหากคุณไม่รู้จักฟิลด์เหล่านั้น
| รหัส | HTTP | ความหมาย |
|---|---|---|
4000 | 400 | Body ไม่ใช่ JSON ที่ถูกต้อง |
4001 | 400 | ฟิลด์ไม่ผ่านการตรวจสอบความถูกต้อง หรือมีการส่งฟิลด์ที่ไม่รู้จักมา |
4002 | 403 | ผู้ให้บริการนี้ไม่เปิดให้ใช้กับบัญชีของคุณ |
4003 | 400 | ตัวระบุคำสั่งซื้อมีรูปแบบไม่ถูกต้อง |
4004 | 400 | ผู้ให้บริการไม่รองรับเครือข่ายที่ร้องขอ |
4010 | 401 | ไม่มีคีย์ API |
4011 | 401 | คีย์ API หรือที่อยู่ IP ไม่ได้รับการยอมรับ |
4040 | 404 | ไม่พบคำสั่งซื้อ |
4041 | 404 | ไม่พบบัญชี |
4090 | 409 | คำขอที่ใช้คีย์ความไม่แปรเปลี่ยน (idempotency key) นี้ยังคงทำงานอยู่ |
4091 | 409 | คำขอซ้ำซ้อน |
4093 | 409 | มีการใช้คีย์ความไม่แปรเปลี่ยนนี้กับ Body อื่น |
1004 | 403 | ยอดเงินคงเหลือไม่เพียงพอ |
5000 | 500 | ข้อผิดพลาดภายใน |
5001 | 500 | การเรียกเก็บเงินไม่สำเร็จ |
5002 | 500 | ไม่ได้สร้างคำสั่งซื้อ |
5030 | 503 | ผู้ให้บริการไม่พร้อมใช้งาน |
ข้อผิดพลาดที่ไม่ได้ใช้รูปแบบนี้
ความล้มเหลวบางอย่างเกิดขึ้นที่เกตเวย์ก่อนที่จะถึงแอปพลิเคชัน และจะยังคงรูปแบบของเกตเวย์เองไว้ ให้จัดการการตอบกลับใดๆ ที่มี Content-Type ไม่ใช่ application/problem+json เสมือนว่าเป็นกรณีเหล่านี้:
| สถานการณ์ | HTTP | Body |
|---|---|---|
| ไม่มีคีย์ API หรือใช้คีย์ที่ไม่ได้รับการยอมรับ | 401 | {"detail":{"code":-1,"msg":"Invalid or missing API key"}} |
| เกินขีดจำกัดอัตราคำขอ | 429 | {"message":"API rate limit exceeded"} |
| เส้นทางไม่ถูกต้อง หรือเมธอดที่เส้นทางนั้นไม่ให้บริการ | 404 / 405 | {"detail":"Method Not Allowed"} |
ขีดจำกัดอัตราคำขอ
5 คำขอต่อวินาที และ 150 คำขอต่อนาที โดยใช้ร่วมกันระหว่างเส้นทางการตรวจสอบทั้งหมด
บัญชีแบบชำระเงินทีหลัง (Postpaid)
บัญชีที่ใช้การเรียกเก็บเงินแบบชำระเงินทีหลังจะใช้เอนด์พอยต์, URL, ส่วนหัว และ Request Body เดียวกันกับผู้ใช้อื่นๆ ความแตกต่างอยู่ที่วิธีการชำระค่าตรวจสอบ:
- ไม่มีการหักเงินจากเงินฝากของคุณ ราคาของการตรวจสอบที่เสร็จสมบูรณ์แต่ละครั้งในสกุลเงินดอลลาร์สหรัฐ (ตัวอย่างเช่น $0.98 สำหรับ Elliptic) จะถูกเพิ่มเข้าไปในยอดค้างชำระของบัญชีของคุณในสกุลเงินชำระบัญชีที่ตกลงกันไว้ในสัญญา คุณชำระตามใบแจ้งหนี้ตามข้อตกลงของคุณ
- บัญชีของคุณจะมีวงเงินสินเชื่อ ตราบใดที่ยอดค้างชำระยังอยู่ภายในวงเงิน คำขอตรวจสอบจะได้รับการยอมรับแม้ว่าเงินฝากจะเป็นศูนย์ก็ตาม
- เรียกเก็บเงินเฉพาะการตรวจสอบที่เสร็จสมบูรณ์เท่านั้น การตรวจสอบที่ล้มเหลว, ที่อยู่ไม่มีกิจกรรม (
skipped) และผลลัพธ์ล่าสุดที่นำมาใช้ซ้ำจะไม่มีค่าใช้จ่าย
Netts จะเปิดใช้งานการเรียกเก็บเงินแบบชำระเงินทีหลังสำหรับบัญชีตามคำขอ
billing ของการตรวจสอบแบบชำระเงินทีหลัง
"billing": {
"charged": false,
"price_usdt": "0.98",
"base_amount": "2.960725",
"markup_amount": "0",
"charged_amount": "2.960725",
"charged_currency": "TRX",
"exchange_rate": "0.33100000",
"payment_status": "postpaid"
}| ฟิลด์ | คำอธิบาย |
|---|---|
| charged | false: ไม่มีการหักเงินจากเงินฝาก |
| price_usdt | ราคาของการตรวจสอบในสกุลเงินดอลลาร์สหรัฐ นี่คือจำนวนเงินที่เพิ่มเข้าไปในยอดค้างชำระของคุณ |
| charged_amount | ราคาเดียวกันในสกุลเงิน TRX สำหรับการอ้างอิง |
| payment_status | postpaid สำหรับการตรวจสอบที่ล้มเหลวหรือถูกข้ามจะเป็น — not_charged |
ถึงวงเงินสินเชื่อแล้ว (402)
{
"type": "https://doc.netts.io/api/v2/errors/credit-limit-reached",
"title": "Postpaid credit limit reached",
"status": 402,
"detail": "Postpaid credit limit reached.",
"instance": "/apiv2/screening",
"code": 1004,
"payment_mode": "postpaid",
"reason": "limit_reached"
}คำสั่งตรวจสอบจะไม่ถูกสั่งการและไม่มีการเรียกเก็บเงิน คำขอตรวจสอบใหม่จะได้รับการยอมรับอีกครั้งเมื่อการชำระเงินของคุณได้รับการบันทึกหรือวงเงินของคุณได้รับการเพิ่มขึ้น
รหัสข้อผิดพลาดของระบบชำระเงินทีหลัง
| รหัส | HTTP | คำอธิบาย |
|---|---|---|
1004 | 402 | ถึงวงเงินสินเชื่อแบบชำระเงินทีหลังแล้ว |
5032 | 503 | ราคาไม่พร้อมใช้งานชั่วคราว |
5034 | 503 | ระบบการเรียกเก็บเงินไม่พร้อมใช้งานชั่วคราว — ไม่ยอมรับการตรวจสอบ |
5036 | 503 | การตรวจสอบวงเงินสินเชื่อไม่พร้อมใช้งานชั่วคราว — ให้ลองใหม่ภายหลัง |
สำหรับการตอบกลับทั้งหมดข้างต้น จะไม่มีการสั่งการและไม่มีการเรียกเก็บเงิน
หมายเหตุ
- การกำหนดราคา: ราคาคงที่ต่อการตรวจสอบหนึ่งครั้งสำหรับผู้ให้บริการแต่ละราย ดู GET /apiv2/screening/providers โดยหักจากยอด TRX ตามอัตราแลกเปลี่ยน ณ เวลาที่หักเงิน
- เวลาในการประมวลผล: การตรวจสอบส่วนใหญ่จะเสร็จสิ้นภายในไม่กี่วินาที; ที่อยู่ที่มีประวัติยาวนานอาจใช้เวลานานถึงสามนาที ให้ใช้โหมดอะซิงโครนัสและอ่านผลลัพธ์ด้วย GET /apiv2/screening/{client_order_id}
- ที่อยู่ที่ไม่มีกิจกรรม จะส่งคืน
skippedและไม่มีการเรียกเก็บเงิน - การตอบกลับดิบของผู้ให้บริการจะไม่ถูกส่งกลับมา
provider_dataคือข้อมูลที่ได้รับการคัดกรองแล้ว; ฟิลด์ที่เป็นของบัญชีเรากับผู้ให้บริการแทนที่จะเป็นของที่อยู่ที่ถูกตรวจสอบจะไม่ถูกเผยแพร่ให้ใคร
รายงาน
เอนด์พอยต์นี้ส่งคืน JSON เท่านั้น ไม่มี PDF และไม่มี Markdown
ทุกองค์ประกอบของรายงานมีอยู่ในการตอบกลับแล้ว: บล็อกรวมและ provider_data การนำไปประมวลผลการแสดงผลฝั่งคุณจะทำให้คุณได้เอกสารตามที่ต้องการอย่างแท้จริง — ทั้งแบรนด์ของคุณ ภาษาของคุณ รูปแบบเลย์เอาต์ของคุณ — ซึ่งเป็นประเด็นสำคัญอย่างยิ่งหากคุณนำการตรวจสอบไปจำหน่ายต่อ เพราะรายงานที่มีชื่อของเราย่อมเป็นเอกสารที่ไม่เหมาะสมที่จะส่งต่อให้ลูกค้าของคุณเอง
หากคุณต้องการรายงานเพื่อใช้เป็นหลักฐานสำหรับบุคคลภายนอก — ธนาคาร หน่วยงานกำกับดูแล คู่สัญญา — พึงทราบว่า PDF ที่ไม่ได้ลงนามดิจิทัลไม่ใช่หลักฐานไม่ว่าใครจะเป็นผู้สร้างขึ้นก็ตาม เพราะสามารถแก้ไขได้ด้วยโปรแกรมแก้ไขข้อความภายในหนึ่งนาที สิ่งที่ตรวจสอบยืนยันได้จำเป็นต้องมีลายเซ็นดิจิทัลหรือหน้ายืนยันความถูกต้องแบบสาธารณะ ซึ่งนั่นเป็นอีกฟีเจอร์หนึ่ง หากเป็นกรณีนี้ โปรดแจ้งให้เราทราบถึงสิ่งที่คู่สัญญาของคุณต้องการ
อย่างไรก็ดี แดชบอร์ดของ Netts มีรายงาน PDF ที่มนุษย์อ่านได้สำหรับการตรวจสอบเดียวกันนี้ในสิบเจ็ดภาษา
ดูเพิ่มเติม
- GET /apiv2/screening/{client_order_id} — อ่านผลการตรวจสอบ
- GET /apiv2/screening/history — รายการการตรวจสอบของคุณ แบบแบ่งหน้าด้วยเคอร์เซอร์
- GET /apiv2/screening/providers — ผู้ให้บริการ ราคา เครือข่าย สเกลคะแนน
- GET /apiv2/screening/price — ราคาของผู้ให้บริการรายเดียว
- การคว่ำบาตรในผลลัพธ์ AML — สิ่งที่
sanctionsระบุและสิ่งที่แฟล็กของผู้ให้บริการระบุ