curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=CHN" \
-F "services=chn_bank_card" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "full_name=王新伟" \
-F "date_of_birth=1990-01-01" \
-F "national_id=11010519900101003X" \
-F "bank_card_number=4111111111111111"
from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.database_validation.validate(
issuing_state="CHN",
services=["chn_bank_card"],
consent=True,
full_name="王新伟",
date_of_birth="1990-01-01",
national_id="11010519900101003X",
bank_card_number="4111111111111111",
vendor_data="user-1234",
)
print(result)
import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.databaseValidation.validate({
issuing_state: "CHN",
services: ["chn_bank_card"],
consent: true,
full_name: "王新伟",
date_of_birth: "1990-01-01",
national_id: "11010519900101003X",
bank_card_number: "4111111111111111",
vendor_data: "user-1234",
});
console.log(result);
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
IssuingState: "CHN",
Services: didit.Some([]string{"chn_bank_card"}),
Consent: didit.Bool(true),
FullName: didit.String("王新伟"),
DateOfBirth: didit.String("1990-01-01"),
NationalID: didit.String("11010519900101003X"),
BankCardNumber: didit.String("4111111111111111"),
VendorData: didit.String("user-1234"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
import java.time.LocalDate;
import java.util.List;
import me.didit.Didit;
import me.didit.types.DatabaseValidationValidateParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.databaseValidation().validate(DatabaseValidationValidateParams.builder()
.issuingState("CHN")
.services(List.of("chn_bank_card"))
.consent(true)
.fullName("王新伟")
.dateOfBirth(LocalDate.parse("1990-01-01"))
.nationalId("11010519900101003X")
.bankCardNumber("4111111111111111")
.vendorData("user-1234")
.build());
System.out.println(result);
<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->databaseValidation->validate([
'issuing_state' => 'CHN',
'services' => ['chn_bank_card'],
'consent' => true,
'full_name' => '王新伟',
'date_of_birth' => '1990-01-01',
'national_id' => '11010519900101003X',
'bank_card_number' => '4111111111111111',
'vendor_data' => 'user-1234',
]);
print_r($result->toArray());
require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.database_validation.validate(
issuing_state: "CHN",
services: ["chn_bank_card"],
consent: true,
full_name: "王新伟",
date_of_birth: "1990-01-01",
national_id: "11010519900101003X",
bank_card_number: "4111111111111111",
vendor_data: "user-1234"
)
puts result.to_h
using System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
IssuingState = "CHN",
Services = new string[] { "chn_bank_card" },
Consent = true,
FullName = "王新伟",
DateOfBirth = "1990-01-01",
NationalId = "11010519900101003X",
BankCardNumber = "4111111111111111",
VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "CHN",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "王新伟",
"identification_number": "11010519900101003X"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "CHN",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "王新伟",
"identification_number": "11010519900101003X"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "no_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "CHN",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "NO_MATCH",
"full_name": "NO_MATCH",
"identification_number": "NO_MATCH"
},
"validation": {
"date_of_birth": "no_match",
"full_name": "no_match",
"identification_number": "no_match"
}
}
]
}
🇨🇳 الصين
التحقق من بطاقة البنك الصينية API: بحث فوري
التحقق من بطاقة البنك الصينية عبر قاعدة بيانات موثوقة ضمن البنية التحتية للهوية لدى Didit. الدفع لكل استدعاء بدءاً من $0.67، دون عقود أو حد أدنى.
POST
/
v3
/
database-validation
/
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=CHN" \
-F "services=chn_bank_card" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "full_name=王新伟" \
-F "date_of_birth=1990-01-01" \
-F "national_id=11010519900101003X" \
-F "bank_card_number=4111111111111111"
from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.database_validation.validate(
issuing_state="CHN",
services=["chn_bank_card"],
consent=True,
full_name="王新伟",
date_of_birth="1990-01-01",
national_id="11010519900101003X",
bank_card_number="4111111111111111",
vendor_data="user-1234",
)
print(result)
import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.databaseValidation.validate({
issuing_state: "CHN",
services: ["chn_bank_card"],
consent: true,
full_name: "王新伟",
date_of_birth: "1990-01-01",
national_id: "11010519900101003X",
bank_card_number: "4111111111111111",
vendor_data: "user-1234",
});
console.log(result);
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
IssuingState: "CHN",
Services: didit.Some([]string{"chn_bank_card"}),
Consent: didit.Bool(true),
FullName: didit.String("王新伟"),
DateOfBirth: didit.String("1990-01-01"),
NationalID: didit.String("11010519900101003X"),
BankCardNumber: didit.String("4111111111111111"),
VendorData: didit.String("user-1234"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
import java.time.LocalDate;
import java.util.List;
import me.didit.Didit;
import me.didit.types.DatabaseValidationValidateParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.databaseValidation().validate(DatabaseValidationValidateParams.builder()
.issuingState("CHN")
.services(List.of("chn_bank_card"))
.consent(true)
.fullName("王新伟")
.dateOfBirth(LocalDate.parse("1990-01-01"))
.nationalId("11010519900101003X")
.bankCardNumber("4111111111111111")
.vendorData("user-1234")
.build());
System.out.println(result);
<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->databaseValidation->validate([
'issuing_state' => 'CHN',
'services' => ['chn_bank_card'],
'consent' => true,
'full_name' => '王新伟',
'date_of_birth' => '1990-01-01',
'national_id' => '11010519900101003X',
'bank_card_number' => '4111111111111111',
'vendor_data' => 'user-1234',
]);
print_r($result->toArray());
require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.database_validation.validate(
issuing_state: "CHN",
services: ["chn_bank_card"],
consent: true,
full_name: "王新伟",
date_of_birth: "1990-01-01",
national_id: "11010519900101003X",
bank_card_number: "4111111111111111",
vendor_data: "user-1234"
)
puts result.to_h
using System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
IssuingState = "CHN",
Services = new string[] { "chn_bank_card" },
Consent = true,
FullName = "王新伟",
DateOfBirth = "1990-01-01",
NationalId = "11010519900101003X",
BankCardNumber = "4111111111111111",
VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "CHN",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "王新伟",
"identification_number": "11010519900101003X"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "CHN",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "王新伟",
"identification_number": "11010519900101003X"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "no_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "CHN",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "NO_MATCH",
"full_name": "NO_MATCH",
"identification_number": "NO_MATCH"
},
"validation": {
"date_of_birth": "no_match",
"full_name": "no_match",
"identification_number": "no_match"
}
}
]
}
يتحقق من البيانات المُدخلة مقابل خدمة البيانات الرسمية في الصين. يتيح لك Didit الوصول إلى هذه الخدمة عبر
POST /v3/database-validation/ لمطابقة البيانات المُرسلة مع المصدر الموثوق والحصول على نتائج مطابقة موحّدة. صيغة المدخلات: يجب أن يطابق date_of_birth تاريخ الميلاد المرمّز في الهوية الوطنية الصينية (الأرقام من 7 إلى 14 في رقم مكوّن من 18 خانة، أو من 7 إلى 12 في الرقم القديم المكوّن من 15 رقمًا)، ويأخذ national_id رقم بطاقة الهوية الصينية للمقيم (15 رقمًا أو 18 خانة مع رقم التحقق).
التغطية
- التغطية: ~ 100%
- الدولة: الصين
- معرّف الخدمة:
chn_bank_card - نطاق البيانات: مالي
- الفئة: الخدمات المصرفية
المدخلات
| الحقل | مطلوب | مثال |
|---|---|---|
full_name | نعم | 王新伟 |
date_of_birth | نعم | 1990-01-01 |
national_id | نعم | 11010519900101003X |
bank_card_number | نعم | 4111111111111111 |
vendor_data | لا | user-1234 |
- المدخلات المطلوبة:
full_nameوdate_of_birthوnational_idوbank_card_number - المدخلات الاختيارية:
vendor_data - الموافقة: مطلوبة
- التوفر في سير العمل: متاح في سير العمل مع ربط الحقول
- التغطية: ~ 100%
- السعر: $0.67 لكل استعلام ناجح
bank_card_number على وثيقة الهوية، لذلك لا توجد خطوة تنتجه بمفردها. اجمعه من إجابة في الاستبيان، أو من حقل مستخرج عبر Document AI، أو من قيمة ترسلها عند إنشاء الجلسة، ثم اربطه في خطوة التحقق من قواعد البيانات. إلى أن يتم ربطه، يعرض محرر سير العمل هذه الخدمة معطّلة ويحدد المدخل الناقص. وعند التشغيل، يعني المدخل الناقص أن الفحص يُتخطى قبل أي استعلام، فلن يُحتسب عليك أي رسوم مقابل قاعدة بيانات لم يكن بالإمكان الاستعلام عنها.
معاملات جسم الطلب
string
افتراضي:"CHN"
مطلوب
رمز الدولة وفق ISO 3166-1 alpha-3 لخدمة قاعدة البيانات هذه.مثال:
CHNstring
افتراضي:"chn_bank_card"
مطلوب
مصفوفة تحتوي على معرّف هذه الخدمة. تثبيت الخدمة يُبقي الطلب مقتصرًا على قاعدة البيانات المحددة هذه.مثال:
chn_bank_cardboolean
افتراضي:"true"
مطلوب
موافقة صريحة من المستخدم النهائي على هذه الخدمة.مثال:
truestring
افتراضي:"王新伟"
مطلوب
الاسم القانوني الكامل المراد التحقق منه.مثال:
王新伟string
افتراضي:"1990-01-01"
مطلوب
تاريخ الميلاد بصيغة
YYYY-MM-DD.مثال: 1990-01-01string
افتراضي:"11010519900101003X"
مطلوب
رقم الهوية الوطنية لهذه الخدمة.مثال:
11010519900101003Xstring
افتراضي:"4111111111111111"
مطلوب
رقم البطاقة المصرفية.مثال:
4111111111111111string
افتراضي:"user-1234"
المرجع الثابت الخاص بك لهذا الشخص، مثل معرّف المستخدم الداخلي لديك. يستخدمه Didit لربط الفحوصات المستقلة بالمستخدم النهائي نفسه وتقليل ضجيج اكتشاف التكرار.مثال:
user-1234قواعد المدخلات وملاحظات التحقق
- يجب أن يطابق تاريخ الميلاد تاريخ الميلاد المرمّز في الهوية الوطنية الصينية (الأرقام من 7 إلى 14 في رقم مكوّن من 18 خانة، أو من 7 إلى 12 في الرقم القديم المكوّن من 15 رقمًا)
- يجب أن يطابق
date_of_birthتاريخ الميلاد المرمّز فيnational_id؛ يرفض المصدر الطلب فورًا عند عدم التطابق، لذا يُرفض الطلب قبل البحث ولا يُحتسب عليه أي رسوم. - رقم بطاقة الهوية الصينية للمقيم (15 رقمًا أو 18 خانة مع رقم التحقق)
- يجب أن يطابق
national_idالتعبير(?:\d{15}|\d{17}[\dXx]). - يُتحقق من رقم التحقق الأخير في بطاقة الهوية الصينية للمقيم.
- يجب أن يكون
full_nameالاسم الأصلي المكتوب بالخط الصيني كما يظهر في السجل أو على المستند. لا ترسل الاسم المكتوب بالحروف اللاتينية في فحوصات قواعد البيانات الصينية.
طريقة الاستدعاء
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=CHN" \
-F "services=chn_bank_card" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "full_name=王新伟" \
-F "date_of_birth=1990-01-01" \
-F "national_id=11010519900101003X" \
-F "bank_card_number=4111111111111111"
from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.database_validation.validate(
issuing_state="CHN",
services=["chn_bank_card"],
consent=True,
full_name="王新伟",
date_of_birth="1990-01-01",
national_id="11010519900101003X",
bank_card_number="4111111111111111",
vendor_data="user-1234",
)
print(result)
import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.databaseValidation.validate({
issuing_state: "CHN",
services: ["chn_bank_card"],
consent: true,
full_name: "王新伟",
date_of_birth: "1990-01-01",
national_id: "11010519900101003X",
bank_card_number: "4111111111111111",
vendor_data: "user-1234",
});
console.log(result);
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
IssuingState: "CHN",
Services: didit.Some([]string{"chn_bank_card"}),
Consent: didit.Bool(true),
FullName: didit.String("王新伟"),
DateOfBirth: didit.String("1990-01-01"),
NationalID: didit.String("11010519900101003X"),
BankCardNumber: didit.String("4111111111111111"),
VendorData: didit.String("user-1234"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)
import java.time.LocalDate;
import java.util.List;
import me.didit.Didit;
import me.didit.types.DatabaseValidationValidateParams;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.databaseValidation().validate(DatabaseValidationValidateParams.builder()
.issuingState("CHN")
.services(List.of("chn_bank_card"))
.consent(true)
.fullName("王新伟")
.dateOfBirth(LocalDate.parse("1990-01-01"))
.nationalId("11010519900101003X")
.bankCardNumber("4111111111111111")
.vendorData("user-1234")
.build());
System.out.println(result);
<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->databaseValidation->validate([
'issuing_state' => 'CHN',
'services' => ['chn_bank_card'],
'consent' => true,
'full_name' => '王新伟',
'date_of_birth' => '1990-01-01',
'national_id' => '11010519900101003X',
'bank_card_number' => '4111111111111111',
'vendor_data' => 'user-1234',
]);
print_r($result->toArray());
require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.database_validation.validate(
issuing_state: "CHN",
services: ["chn_bank_card"],
consent: true,
full_name: "王新伟",
date_of_birth: "1990-01-01",
national_id: "11010519900101003X",
bank_card_number: "4111111111111111",
vendor_data: "user-1234"
)
puts result.to_h
using System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
IssuingState = "CHN",
Services = new string[] { "chn_bank_card" },
Consent = true,
FullName = "王新伟",
DateOfBirth = "1990-01-01",
NationalId = "11010519900101003X",
BankCardNumber = "4111111111111111",
VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
يُرجع كل استدعاء ناجح رمز HTTP 200. يخبرك الحقل outcome_code بما حدث فعلًا، فيميّز مثلًا بين عدم تطابق بيومتري حقيقي (BIOMETRIC_NO_MATCH) وصورة سيلفي تعذّرت قراءتها (BIOMETRIC_IMAGE_UNUSABLE). الحالة status المعروضة هي حالة الميزة الافتراضية، ويمكن لإجراءات المطابقة الجزئية / عدم المطابقة التي تهيئها أن تتجاوزها.MATCH: أكدت السجلات الهوية، وتطابق كل حقل تم فحصه.{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "CHN",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "王新伟",
"identification_number": "11010519900101003X"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
PARTIAL_MATCH: وُجد رقم الهوية، لكن لم يتطابق حقل شخصي واحد أو أكثر (عادةً الاسم أو تاريخ الميلاد) تطابقًا كاملًا.{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "CHN",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "王新伟",
"identification_number": "11010519900101003X"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "no_match",
"identification_number": "full_match"
}
}
]
}
NO_MATCH: لم تُرجع السجلات أي تطابق للبيانات المُرسلة.{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "CHN",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "NO_MATCH",
"full_name": "NO_MATCH",
"identification_number": "NO_MATCH"
},
"validation": {
"date_of_birth": "no_match",
"full_name": "no_match",
"identification_number": "no_match"
}
}
]
}
البيانات المُعادة
تعتمد الحقول الدقيقة التي تظهر فيsource_data على ما تعيده السجلات. يوثّق المثال المُولّد لـ chn_bank_card حاليًا هذه البنية الموحّدة:
date_of_birthfull_nameidentification_number
الأسعار واتفاقيات مستوى الخدمة
تُفوتَر استعلامات بطاقة البنك الصينية فقط عندما تتلقى Didit نتيجة قاطعة من مصدر التحقق.- السعر لكل استدعاء: $0.67 USD.
- الفوترة: لكل استعلام ناجح. لا تُفرض عليك رسوم عندما يكون السجل غير متاح، أو عندما تكون الحقول المطلوبة ناقصة، أو عندما يُرفض الطلب قبل وصوله إلى المصدر.
- زمن الاستجابة: عادةً ما يكون p95 < 2 ثانية.
- التوفر: 99.9% لكل ربع سنة من جهة Didit؛ ويختلف توفر المصدر التابع بحسب البلد ومجموعة البيانات.
متابعة القراءة
آخر تعديل في ٧ نوفمبر ٢٠٢٦