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 Transcoding استفاده می کند.

درخواست بدن

بدنه درخواست حاوی داده هایی با ساختار زیر است:

نمایندگی JSON
{
  "requestHeader": {
    object(RequestHeader)
  },
  "standardCard": {
    object(StandardCard)
  },
  "avsData": {
    object(AvsData)
  }
}
فیلدها
requestHeader

object( RequestHeader )

مورد نیاز : هدر مشترک برای همه درخواست ها.

standardCard

object( StandardCard )

مورد نیاز : اطلاعات مربوط به کارت پرداخت کاربر.

avsData

object( AvsData )

اختیاری : آدرس کاربر باید توسط AVS تأیید شود.

بدن پاسخگو

در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی داده هایی با ساختار زیر است:

شی پاسخ برای روش کارت.verifycard میزبان Payment Integrator.

نمایندگی 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 کاراکتر است و فقط شامل کاراکترهای "az"، "AZ"، "0-9"، ":"، "-"، و "_" است.

requestTimestamp

string ( int64 format)

الزامی است : مهر زمانی این درخواست به عنوان میلی ثانیه از آن دوره نشان داده شده است. گیرنده باید تأیید کند که این مُهر زمانی ± 60 ثانیه «اکنون» است. این مهر زمانی درخواست پس از تلاش مجدد بی تاثیر نیست.

userLocale
(deprecated)

string

اختیاری : کد زبان ISO 639-2 آلفا 3 دو یا سه حرفی که به صورت اختیاری با خط فاصله و کد کشور ISO 3166-1 آلفا-2، به عنوان مثال، «pt»، «pt-BR»، «fil» یا 'fil-PH'. از این برای کمک به هدایت فیلدهای user_message در پاسخ استفاده کنید.

protocolVersion

object( Version )

مورد نیاز : نسخه این درخواست.

نسخه

شئ نسخه که شکلی ساختار یافته از ساختار نسخه کلاسیک abc است. نسخه‌های اصلی همین تعداد تضمین می‌شوند که سازگار باشند. توجه داشته باشید که اصلاحات جزئی و جزئی می توانند اغلب و بدون اطلاع قبلی تغییر کنند. یکپارچه کننده باید از همه درخواست ها برای یک نسخه اصلی پشتیبانی کند.

نمایندگی JSON
{
  "major": number,
  "minor": number,
  "revision": number
}
فیلدها
major

number

مورد نیاز : نسخه اصلی. این برای درخواست‌های سازگاری با نسخه‌های مختلف علامت‌گذاری شده است و تضمین نمی‌شود که سازگار باشند.

minor

number

مورد نیاز : نسخه کوچک. این نشان دهنده رفع اشکال قابل توجه است.

revision

number

مورد نیاز : نسخه کوچک. این نشان دهنده رفع اشکال جزئی است.

کارت استاندارد

نمایش استاندارد یک کارت

نمایندگی 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

اختیاری : این یک اصطلاح مبهم است، اما به طور کلی به بخش شهر/شهر یک آدرس اشاره دارد. در مناطقی از جهان که محلات به خوبی تعریف نشده اند یا به خوبی با این ساختار مطابقت ندارند (مثلاً ژاپن و چین)، localityName را خالی بگذارید و از address_line استفاده کنید.

مثال: شهر ایالات متحده، کمون فناوری اطلاعات، شهر پست بریتانیا.

administrativeAreaName

string

اختیاری : بخش اداری سطح بالای این کشور برای آدرس صورت‌حساب کاربر.

مثال: ایالت ایالات متحده، منطقه فناوری اطلاعات، کشور تشکیل دهنده بریتانیا، استان JP

هنگامی که کشور == ایالات متحده، انتظار می رود که این علامت اختصاری 2 نویسه ای برای ایالت ایالات متحده باشد.

postalCodeNumber

string

اختیاری : کد پستی صورت‌حساب کاربر.

countryCode

string

اختیاری : کد کشور آدرس صورت‌حساب کاربر در قالب ISO-3166-1 Alpha-2.

ResponseHeader

شی هدر که روی تمام پاسخ های ارسال شده از سرور تعریف می شود.

نمایندگی JSON
{
  "responseTimestamp": string
}
فیلدها
responseTimestamp

string ( int64 format)

الزامی : مهر زمانی این پاسخ به عنوان میلی ثانیه از دوره نشان داده شده است. گیرنده باید تأیید کند که این مُهر زمانی ± 60 ثانیه «اکنون» است.

CardNetwork Result

شامل یک شبکه و یک کد نتیجه خام از آن شبکه است.

نمایندگی JSON
{
  "network": enum(Network),
  "iso8583Result": string,
  "rawNetworkResult": string
}
فیلدها
network

enum( Network )

مورد نیاز : شبکه ای که کد نتیجه از آن آمده است.

iso8583Result

string

مورد نیاز : کد بازگشت ISO-8583 توسط شبکه بازگردانده شده است.

اگر شبکه از قالب کد پاسخ خود استفاده می کند، یکپارچه ساز باید آن کدهای پاسخ را به کدهای بازگشتی ISO-8583 نگاشت کند.

rawNetworkResult

string

مورد نیاز : مقدار خام بازگردانده شده از شبکه. شبکه‌هایی که قبلاً از کدهای بازگشتی ISO-8583 استفاده می‌کنند، در این قسمت و در iso8583Result مقدار یکسانی خواهند داشت. این فیلد برای اطلاع رسانی به موتور ریسک گوگل استفاده می شود و برای شبکه هایی که از کدهای پاسخ خود استفاده می کنند بسیار مفید است.

شبکه

شبکه های کارت احتمالی را که ممکن است rawResult برگردانده باشند، تعریف می کند.

Enums
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 شبکه فلیکا
GE_CAPITAL شبکه GE_CAPITAL
HIPERCARD شبکه HIPERCARD
ID شبکه ID
INTERAC شبکه INTERAC
JCB شبکه JCB
LASER شبکه لیزر
MAESTRO شبکه MAESTRO
MASTERCARD شبکه مسترکارت
PPT شبکه PPT
QUICPAY شبکه QUICPAY
RUPAY شبکه RUPAY
SBERCARD شبکه SBERCARD
SOLO شبکه SOLO
SYNCHRONY شبکه SYNCHRONY
UNIONPAY شبکه UNIONPAY
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 )

REQUIRED : نتیجه تأیید 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" باشد.

نتیجه تأیید

Enums
UNKNOWN_AVS_MATCH هرگز این مقدار پیش فرض را تنظیم نکنید!
NOT_SENT گوگل این فیلد را ارسال نکرده است بنابراین کاری با آن انجام نمی شود.
MATCH گوگل فیلد را به integrator ارسال کرد و از طریق AVS بررسی شد و با مقدار مورد انتظار مطابقت داشت.
MISMATCH گوگل فیلد را به integrator ارسال کرد و از طریق AVS بررسی شد اما با مقدار مورد انتظار مطابقت نداشت.
SKIPPED گوگل فیلد را به انتگرالگر فرستاد اما ادغام کننده فیلد را بررسی نکرد.
NOT_SPECIFIED Google فیلد را به یکپارچه‌کننده ارسال کرد و ادغام‌کننده فیلد را از طریق AVS بررسی کرد، اما کد نتیجه AVS اطلاعات کافی برای ادغام‌کننده ارائه نمی‌دهد تا بداند آیا فیلد با مقدار مورد انتظار مطابقت دارد یا خیر.

CvnResult

نتیجه تأیید CVN ارائه شده در درخواست.

Enums
UNKNOWN_CVN_RESULT هرگز این مقدار پیش فرض را تنظیم نکنید!
NOT_SENT Google CVN را ارائه نکرده است، بنابراین تأیید نمی شود.
NOT_VERIFIED Google CVN را ارسال کرد، اما تأیید نشد. این مربوط به کد نتیجه شبکه "F" است
MATCH Google CVN را ارسال کرد، تأیید شد و مطابقت داشت. این مربوط به کد نتیجه شبکه "M" است.
MISMATCH گوگل CVN را ارسال کرد، تایید شد، اما مطابقت نداشت. این مربوط به کد نتیجه شبکه "N" است.