Method: card.verifycard

يتم التحقّق من بطاقة المستخدم لمعرفة ما إذا كانت صالحة أم لا.

تطلب Google هذه الطريقة للتحقّق من تفاصيل بطاقة المستخدم ومعرفة ما إذا كان يمكن استخدامها لتسديد الدفعات أم لا. لا تؤدي هذه المكالمة إلى نقل أي مبالغ مالية ويجب ألا تكون هناك تغييرات دائمة في حساب المستخدم.

يظهر مثال على الطلب على النحو التالي:


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 0,
      "revision": 0
    },
    "requestId": "ZWNobyB0cmFuc2FjdGlvbg",
    "requestTimestamp": "1481855969503"
  },
  "standardCard": {
    "accountNumber": "4123456789101112",
    "expiryDate": "01/2020",
    "cvn": "123"
  },
  "avsData": {
    "streetAddress": "123 Main St APT #200",
    "localityName": "Springfield",
    "administrativeAreaName": "CO",
    "countryCode": "US"
  }
}

يظهر مثال على الرد على النحو التالي:


{
  "responseHeader": {
    "responseTimestamp": "1481855970403",
  },
  "cardNetworkResult": {
    "network": "VISA",
    "iso8583Result": "00",
    "rawNetworkResult": "00"
  },
  "avsResult": {
    "rawAvsResult": "B",
    "streetAddress": "MATCH",
    "localityName": "MATCH",
    "administrativeAreaName": "MATCH",
    "postalCodeNumber": "NOT_SENT",
    "countryCode": "SKIPPED"
  },
  "cvnResult": "MATCH"
}

طلب HTTP

POST https://card-verification-service.google.com/v1/card/verifycard

يستخدِم عنوان URL بنية تحويل ترميز gRPC.

نص الطلب

يحتوي نص الطلب على بيانات بالبنية التالية:

تمثيل JSON
{
  "requestHeader": {
    object(RequestHeader)
  },
  "standardCard": {
    object(StandardCard)
  },
  "avsData": {
    object(AvsData)
  }
}
الحقول
requestHeader

object(RequestHeader)

مطلوب: العنوان المشترك لجميع الطلبات.

standardCard

object(StandardCard)

مطلوب: بيانات حول بطاقة الدفع الخاصة بالمستخدم.

avsData

object(AvsData)

اختياري: يتم إثبات ملكية عنوان المستخدم من خلال AVS.

نص الاستجابة

إذا كانت الاستجابة ناجحة، سيحتوي نص الاستجابة على بيانات بالبنية التالية:

عنصر ردّ لطريقة التحقّق من البطاقة التي تستضيفها خدمة تكامل الدفع.

تمثيل JSON
{
  "responseHeader": {
    object(ResponseHeader)
  },
  "cardNetworkResult": {
    object(CardNetworkResult)
  },
  "avsResult": {
    object(AvsResult)
  },
  "cvnResult": enum(CvnResult)
}
الحقول
responseHeader

object(ResponseHeader)

مطلوب: عنوان مشترك لجميع الردود.

cardNetworkResult

object(CardNetworkResult)

مطلوب: نتيجة إصدار التفويض على شبكة البطاقة.

avsResult

object(AvsResult)

اختياري: نتيجة التحقق من حقول العنوان التي تم إرسالها في الطلب.

يجب ملء هذا الحقل إذا تم ضبط addressVerificationSystemData في الطلب.

cvnResult

enum(CvnResult)

مطلوب: نتيجة التحقُّق من رقم CVN الذي تم إرساله في الطلب. في حال عدم ضبط رقم CVN في الطلب، يجب أن تكون هذه القيمة NOT_SENT.

RequestHeader

كائن العنوان المحدَّد في جميع الطلبات المُرسَلة إلى الخادم.

تمثيل JSON
{
  "requestId": string,
  "requestTimestamp": string,
  "userLocale": string,
  "protocolVersion": {
    object(Version)
  }
}
الحقول
requestId

string

مطلوب: المعرّف الفريد لهذا الطلب.

هذه سلسلة يبلغ الحد الأقصى للطول 100 حرف، وتحتوي فقط على الأحرف "a-z" و"A-Z" و"0-9" و"":" و"-" و"_".

requestTimestamp

string (int64 format)

مطلوب: الطابع الزمني لهذا الطلب الذي تم تمثيله بالمللي ثانية منذ البداية. يجب أن يتحقّق المستلِم من أنّ الطابع الزمني هذا هو ± 60 ثانية من "الآن". إنّ الطابع الزمني لهذا الطلب غير ثابت عند إعادة المحاولة.

userLocale
(deprecated)

string

اختياري: رمز لغة مكوّن من حرفَين أو ثلاثة أحرف بتنسيق ISO 639-2 Alpha 3 متبوعًا بواصلة ورمز بلد بتنسيق ISO 3166-1 Alpha-2، مثل "pt" أو "pt-BR" أو "fil" أو "fil-PH". يمكنك استخدام هذه المعلومات للمساعدة في توجيه حقول user_message في الاستجابة.

protocolVersion

object(Version)

مطلوب: نسخة هذا الطلب.

الإصدار

كائن الإصدار الذي هو شكل منظَّم لبنية إصدار a.b.c الكلاسيكي. وتضمن توافق الإصدارات الرئيسية من الرقم نفسه. لاحظ أنه قد يتم تغيير القاصرين والمراجعات بشكل متكرر وبدون إشعار. يجب أن تقدّم شركة الدمج طلبات للإصدار الرئيسي نفسه.

تمثيل JSON
{
  "major": number,
  "minor": number,
  "revision": number
}
الحقول
major

number

مطلوب: رقم الإصدار الرئيسي. يتم وضع علامة على هذا الطلب توافقًا مع طلبات التوافق مع الإصدارات المختلفة.

minor

number

مطلوب: إصدار ثانوي. يشير هذا إلى أنه تم إصلاح أخطاء كبيرة.

revision

number

مطلوب: إصدار ثانوي. ويدل ذلك على إصلاح أخطاء بسيطة.

StandardCard

التمثيل القياسي للبطاقة

تمثيل JSON
{
  "accountNumber": string,
  "expiryDate": string,
  "cvn": string
}
الحقول
accountNumber

string

مطلوب: رقم الحساب الأساسي (PAN) للبطاقة بتنسيق نص عادي.

expiryDate

string

اختياري: تاريخ انتهاء صلاحية البطاقة بالتنسيق MM/YYYY. هذه الخطوة اختيارية، لأنّ بعض البطاقات في مناطق معيّنة ليس لها تاريخ انتهاء صلاحية.

cvn

string

اختياري: إذا جمعت Google رقم CVN من المستخدم، سيتم تقديمها هنا ويجب التحقق منها.

AvsData

يحتوي على حقول عناوين يجب التحقّق منها من خلال نظام التشغيل AVS

تمثيل JSON
{
  "streetAddress": string,
  "localityName": string,
  "administrativeAreaName": string,
  "postalCodeNumber": string,
  "countryCode": string
}
الحقول
streetAddress

string

اختياري: عنوان الشارع لعنوان إرسال الفواتير الخاص بالمستخدم. عندما يقدم المستخدم عدة أسطر لإدخال عنوان الشارع (على سبيل المثال، سطر لرقم الشقة)، يتم ربط الخطوط بمسافات.

localityName

string

اختياري: يُعدّ هذا اسمًا غير واضح، ولكنه يشير بشكل عام إلى جزء المدينة/البلدة من العنوان. في مناطق العالم التي لم يتم تعريف المناطق فيها بشكل جيد أو لا تتناسب مع هذا الهيكل جيدًا (مثل اليابان والصين)، اترك localName فارغًا واستخدم address_line.

أمثلة: مدينة في الولايات المتحدة، بلدية تكنولوجيا المعلومات، مدينة البريد في المملكة المتحدة.

administrativeAreaName

string

اختياري: القسم الفرعي الإداري ذي المستوى الأعلى لهذا البلد لعنوان إرسال الفواتير الخاص بالمستخدم.

أمثلة: إحدى الولايات الأمريكية، منطقة تكنولوجيا المعلومات، الدولة الناخبة في المملكة المتحدة، محافظة اليابان

عندما يكون البلد == US، من المتوقع أن يكون هذا هو اختصار مكون من حرفين لولاية الولايات المتحدة الأمريكية.

postalCodeNumber

string

اختياري: الرمز البريدي لفواتير المستخدم

countryCode

string

اختياري: رمز البلد لعنوان إرسال الفواتير الخاص بالمستخدم بتنسيق ISO-3166-1 Alpha-2.

ResponseHeader

كائن العنوان الذي يتم تحديده على جميع الاستجابات المُرسَلة من الخادم

تمثيل JSON
{
  "responseTimestamp": string
}
الحقول
responseTimestamp

string (int64 format)

مطلوب: الطابع الزمني لهذا الرد ممثلاً بالمللي ثانية منذ البداية. يجب أن يتحقّق المستلِم من أنّ الطابع الزمني هذا هو ± 60 ثانية من "الآن".

CardNetworkResult

تحتوي على شبكة ورمز نتيجة أولي من تلك الشبكة.

تمثيل JSON
{
  "network": enum(Network),
  "iso8583Result": string,
  "rawNetworkResult": string
}
الحقول
network

enum(Network)

مطلوب: الشبكة التي جاء منها رمز النتيجة.

iso8583Result

string

مطلوب: رمز الإرجاع ISO-8583 الذي تعرضه الشبكة.

إذا كانت الشبكة تستخدم تنسيق رمز الاستجابة الخاص بها، على الشركة المصنّعة أن تربط رموز الاستجابة هذه برموز الإرجاع ISO-8583.

rawNetworkResult

string

مطلوب: القيمة الأولية التي يتم عرضها من الشبكة. سيكون للشبكات التي تستخدم رموز إرجاع ISO-8583 القيمة نفسها في هذا الحقل وفي iso8583Result. يُستخدم هذا الحقل لإبلاغ محرك مخاطر Google، وهو أكثر فائدة للشبكات التي تستخدم رموز الاستجابة الخاصة بها.

الشبكة

تحدّد هذه السياسة شبكات البطاقات المحتملة التي قد تكون عرضت rawResult.

عمليات التعداد
UNKNOWN_NETWORK لم يتم التعرف على الشبكة
NETWORK_NOT_INVOLVED استخدِم هذه القيمة إذا لم يكن الرفض من الشبكة، مثلاً إذا رفضت الشركة عملية الشراء قبل إرسالها على شبكة البطاقة.
AMEX شبكة AMEX
COMPROCARD شبكة COMPROcard
DANKORT شبكة DANKORT
DINACARD شبكة DINAcard
DINERS_CLUB شبكة DINERS_CLUB
DISCOVER اكتشاف الشبكة
EFTPOS شبكة EFTPOS
ELO شبكة ELO
ENROUTE شبكة ENROUTE
FELICA شبكة FELICA
GE_CAPITAL شبكة GE_CAPITAL
HIPERCARD شبكة HIPERcard
ID الشبكة التعريفية
INTERAC شبكة INTERAC
JCB شبكة JCB
LASER شبكة الليزر
MAESTRO شبكة MAESTRO
MASTERCARD شبكة MASTERcard
PPT شبكة PPT
QUICPAY شبكة QUICPAY
RUPAY شبكة RUPAY
SBERCARD شبكة SBERcard
SOLO شبكة SOLO
SYNCHRONY الشبكة المتزامنة
UNIONPAY شبكة UNIONPAY
VISA شبكة VISA

AvsResult

نتيجة التحقق من حقول العنوان المقدَّمة في الطلب.

جميع الحقول مطلوبة لأننا نريد نتيجة صريحة لكل حقل بدلاً من الاعتماد على غياب حقل كنتيجة ضمنية.

تمثيل JSON
{
  "rawAvsResult": string,
  "streetAddress": enum(VerificationResult),
  "localityName": enum(VerificationResult),
  "administrativeAreaName": enum(VerificationResult),
  "postalCodeNumber": enum(VerificationResult),
  "countryCode": enum(VerificationResult)
}
الحقول
rawAvsResult

string

مطلوب: قيمة AVS الأولية التي يتم عرضها من شبكة البطاقة.

streetAddress

enum(VerificationResult)

مطلوب: نتيجة إثبات ملكية streetAddress التي تم إرسالها في الحقل addressVerificationSystemData من الطلب.

إذا لم يتم ضبط الحقل في الطلب، يجب أن تكون هذه القيمة "NOT_SENT".

localityName

enum(VerificationResult)

مطلوب: نتيجة إثبات ملكية localityName التي تم إرسالها في الحقل addressVerificationSystemData من الطلب.

إذا لم يتم ضبط الحقل في الطلب، يجب أن تكون هذه القيمة "NOT_SENT".

administrativeAreaName

enum(VerificationResult)

مطلوب: نتيجة إثبات ملكية administrativeAreaName التي تم إرسالها في الحقل addressVerificationSystemData من الطلب.

إذا لم يتم ضبط الحقل في الطلب، يجب أن تكون هذه القيمة "NOT_SENT".

postalCodeNumber

enum(VerificationResult)

مطلوب: نتيجة إثبات ملكية postalCodeNumber التي تم إرسالها في الحقل addressVerificationSystemData من الطلب.

إذا لم يتم ضبط الحقل في الطلب، يجب أن تكون هذه القيمة "NOT_SENT".

countryCode

enum(VerificationResult)

مطلوب: نتيجة إثبات ملكية countryCode التي تم إرسالها في الحقل addressVerificationSystemData من الطلب.

إذا لم يتم ضبط الحقل في الطلب، يجب أن تكون هذه القيمة "NOT_SENT".

VerificationResult

عمليات التعداد
UNKNOWN_AVS_MATCH لا تضبط هذه القيمة التلقائية مطلقًا.
NOT_SENT لم ترسل Google هذا الحقل، لذا لا يمكن فعل أي شيء به.
MATCH أرسلت Google الحقل إلى الشركة المتعهّدة للتأكّد من أنّه تم التحقّق من صحته وتتطابق مع القيمة المتوقّعة.
MISMATCH أرسلت Google هذا الحقل إلى الشركة المتعهّدة، وتم التحقّق منه عبر AVS، ولكنّه لم يتطابق مع القيمة المتوقّعة.
SKIPPED أرسلت Google الحقل إلى الشركة المتعهّدة، ولكن الشركة المصنّعة لم تتحقّق من الحقل.
NOT_SPECIFIED أرسلت Google الحقل إلى الشركة المتعهّدة، وتحقّقت شركة الدمج من الحقل عبر AVS، ولكن رمز نتيجة AVS لا يوفّر معلومات كافية للجهة المسؤولة عن عملية الدمج لمعرفة ما إذا كان الحقل مطابقًا للقيمة المتوقّعة.

CvnResult

نتيجة التحقّق من رقم CVN المقدَّم في الطلب.

عمليات التعداد
UNKNOWN_CVN_RESULT لا تضبط هذه القيمة التلقائية مطلقًا.
NOT_SENT لم تقدِّم Google رقم CVN، لذا تعذَّر التحقُّق منه.
NOT_VERIFIED أرسلت Google رقم CVN، ولكن لم يتمّ التحقّق منه. يتجاوب هذا مع رمز نتيجة الشبكة "F"
MATCH أرسلت Google رقم CVN، وتم التأكّد من صحته ومطابقته. يتجاوب هذا مع رمز نتيجة الشبكة "M".
MISMATCH أرسلت Google رقم CVN، ولكن تمّ التحقّق منه، ولكنّه لم يتطابق. يتجاوب هذا مع رمز نتيجة الشبكة "N".