- בקשת HTTP
- גוף הבקשה
- גוף התשובה
- RequestHeader
- גרסה
- StandardCard
- AvsData
- ResponseHeader
- CardNetworkResult
- רשת
- AvsResult
- VerificationResult
- CvnResult
מאמת את כרטיס המשתמש כדי לוודא שהוא תקף.
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 |
חובה: נתונים לגבי כרטיס התשלום של המשתמש. |
avsData |
אופציונלי: הכתובת של המשתמש שצריך לאמת על ידי AVS. |
גוף התשובה
אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל נתונים במבנה הבא:
אובייקט תשובה לשיטת האימות של Card.verifycard באירוח של אמצעי התשלום.
ייצוג JSON | |
---|---|
{ "responseHeader": { object( |
שדות | |
---|---|
responseHeader |
חובה: כותרת משותפת לכל התשובות. |
cardNetworkResult |
חובה: התוצאה של הנפקת ההרשאה ברשת הכרטיס. |
avsResult |
אופציונלי: התוצאה של אימות שדות הכתובת שנשלחו בבקשה. השדה הזה הוא חובה אם השדה |
cvnResult |
חובה: התוצאה של אימות מספר אימות הכרטיס (CVN) שנשלח בבקשה. אם ה-CVN לא הוגדר בבקשה, הערך צריך להיות |
RequestHeader
אובייקט כותרת שמוגדר בכל הבקשות שנשלחות לשרת.
ייצוג JSON | |
---|---|
{
"requestId": string,
"requestTimestamp": string,
"userLocale": string,
"protocolVersion": {
object( |
שדות | |
---|---|
requestId |
חובה: המזהה הייחודי של הבקשה. האורך המקסימלי של מחרוזת זו הוא 100 תווים, והיא מכילה רק את התווים "a-z" , "A-Z" , "0-9" , ":" "-" ו-"_". |
requestTimestamp |
REQUIRED: חותמת הזמן של הבקשה הזו, מיוצגת באלפיות השנייה מאז epoch. על המקבל לאמת שחותמת הזמן הזו היא בטווח של ± 60 שניות עכשיו. חותמת הזמן של הבקשה הזו לא אידמפוטנטית לאחר ניסיונות חוזרים. |
userLocale |
אופציונלי: קוד שפה בן שתיים או שלוש אותיות לפי תקן ISO 639-2 Alpha 3 (אופציונלי) ואחריו מקף וקוד מדינה לפי תקן ISO 3166-1 Alpha-2, למשל 'pt', 'pt-BR', 'fil' או 'fil-PH'. אפשר להשתמש במדד הזה כדי להציג את השדות |
protocolVersion |
חובה: גרסת הבקשה. |
גרסה
אובייקט גרסה שהוא צורה מובנית של המבנה הקלאסי של הגרסה a.b.c
. מובטחת תאימות לגרסאות ראשיות של אותו מספר. הערה: עריכות קלות ותיקונים עשויים להשתנות לעיתים קרובות וללא הודעה מוקדמת. מבצע השילוב חייב לתמוך בכל הבקשות לאותה גרסה ראשית.
ייצוג JSON | |
---|---|
{ "major": number, "minor": number, "revision": number } |
שדות | |
---|---|
major |
חובה: הגרסה הראשית. הוא מסומן עבור בקשות תאימות עם גרסאות שונות לא מובטח שהן יעמדו בדרישות. |
minor |
חובה: הגרסה המשנית. ישנם תיקוני באגים משמעותיים. |
revision |
חובה: הגרסה המשנית. בוצעו תיקוני באגים קלים. |
StandardCard
הייצוג הרגיל של כרטיס
ייצוג JSON | |
---|---|
{ "accountNumber": string, "expiryDate": string, "cvn": string } |
שדות | |
---|---|
accountNumber |
חובה: מספר החשבון הראשי של הכרטיס (PAN) בטקסט פשוט. |
expiryDate |
אופציונלי: תאריך התפוגה של הכרטיס בפורמט MM/YYYY. אופציונלי כי לכרטיסים מסוימים באזורים מסוימים אין תאריך תפוגה. |
cvn |
אופציונלי: אם Google אספה את קוד האבטחה (CVN) מהמשתמש, הוא מצוין כאן וצריך לאמת אותו. |
AvsData
מכילה שדות כתובת לאימות על ידי AVS.
ייצוג JSON | |
---|---|
{ "streetAddress": string, "localityName": string, "administrativeAreaName": string, "postalCodeNumber": string, "countryCode": string } |
שדות | |
---|---|
streetAddress |
אופציונלי: הרחוב בכתובת לחיוב של המשתמש. אם המשתמש ציין מספר שורות כדי להזין את כתובת הרחוב (למשל, שורה למספר דירה), השורות מחוברות זו לזו. |
localityName |
אופציונלי: זהו מונח מעורפל, אך הוא מתייחס באופן כללי לחלק של העיר/העיירה בכתובת. באזורים בעולם שבהם הרשויות המוניציפאליות לא מוגדרות היטב או שלא מתאימות למבנה הזה (לדוגמה, יפן וסין), יש להשאיר את השדה LocalityName ריק ולהשתמש ב-address_line. דוגמאות: עיר בארה"ב, קהילת IT, עיר דואר בבריטניה. |
administrativeAreaName |
אופציונלי: חלוקת משנה מנהלית ברמה העליונה של המדינה הזו עבור הכתובת לחיוב של המשתמש. דוגמאות: מדינה בארה"ב, אזור IT, מדינה המרכיבה בבריטניה, מחוז יפן כאשר Country == US, זה צפוי להיות קיצור בן 2 תווים של המדינה בארה"ב. |
postalCodeNumber |
אופציונלי: המיקוד לחיוב של המשתמש. |
countryCode |
אופציונלי: קוד המדינה של הכתובת לחיוב של המשתמש בפורמט ISO-3166-1 Alpha-2. |
ResponseHeader
אובייקט כותרת שמוגדר בכל התגובות שנשלחות מהשרת.
ייצוג JSON | |
---|---|
{ "responseTimestamp": string } |
שדות | |
---|---|
responseTimestamp |
חובה: חותמת הזמן של התשובה הזו מיוצגת באלפיות השנייה מתחילת התקופה. על המקבל לאמת שחותמת הזמן הזו היא בטווח של ± 60 שניות עכשיו. |
CardNetworkResult
מכיל רשת וקוד תוצאה גולמית מהרשת הזו.
ייצוג JSON | |
---|---|
{
"network": enum( |
שדות | |
---|---|
network |
חובה: הרשת שממנה הגיע קוד התוצאה. |
iso8583Result |
חובה: קוד ההחזרה לפי תקן ISO-8583 שהוחזר על ידי הרשת. אם הרשת משתמשת בפורמט של קוד תגובה משלה, מבצע השילוב צריך למפות את קודי התגובה האלה לקודי ההחזרה לפי ISO-8583. |
rawNetworkResult |
חובה: הערך הגולמי שמוחזר מהרשת. לרשתות שמשתמשות בקודי החזרה בפורמט ISO-8583 כבר יהיה ערך זהה בשדה הזה וב- |
רשת
מגדיר את רשתות הכרטיסים האפשריות שייתכן שהחזירו את הערך rawResult
.
טיפוסים בני מנייה (enum) | |
---|---|
UNKNOWN_NETWORK |
הרשת לא זוהתה |
NETWORK_NOT_INVOLVED |
צריך להשתמש בערך הזה אם הדחייה לא הגיעה מהרשת, לדוגמה אם השילוב דחה את הרכישה לפני שהיא נשלחה ברשת הכרטיסים. |
AMEX |
רשת AMEX |
COMPROCARD |
רשת COMPROCARD |
DANKORT |
רשת DANKORT |
DINACARD |
רשת DINACARD |
DINERS_CLUB |
רשת DINERS_CLUB |
DISCOVER |
רשת Discover |
EFTPOS |
רשת EFTPOS |
ELO |
רשת ELO |
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 |
רשת SYNCHRONY |
UNIONPAY |
רשת UNIONPAY |
VISA |
רשת VISA |
AvsResult
התוצאה של אימות שדות הכתובת שצוינו בבקשה.
חובה למלא את כל השדות כי אנחנו רוצים לקבל תוצאה מפורשת לכל שדה במקום להסתמך על היעדר שדה כתוצאה משתמעת.
ייצוג JSON | |
---|---|
{ "rawAvsResult": string, "streetAddress": enum( |
שדות | |
---|---|
rawAvsResult |
חובה: ערך ה-AVS הגולמי שהוחזר מרשת הכרטיס. |
streetAddress |
חובה: התוצאה של אימות הערך אם השדה לא הוגדר בבקשה, הערך צריך להיות NOT_SENT. |
localityName |
חובה: התוצאה של אימות הערך אם השדה לא הוגדר בבקשה, הערך צריך להיות NOT_SENT. |
administrativeAreaName |
חובה: התוצאה של אימות הערך אם השדה לא הוגדר בבקשה, הערך צריך להיות NOT_SENT. |
postalCodeNumber |
חובה: התוצאה של אימות הערך אם השדה לא הוגדר בבקשה, הערך צריך להיות NOT_SENT. |
countryCode |
חובה: התוצאה של אימות הערך אם השדה לא הוגדר בבקשה, הערך צריך להיות NOT_SENT. |
VerificationResult
טיפוסים בני מנייה (enum) | |
---|---|
UNKNOWN_AVS_MATCH |
אל תגדירו את ערך ברירת המחדל הזה אף פעם! |
NOT_SENT |
Google לא שלחה את השדה הזה, לכן לא ניתן היה לעשות איתו שום דבר. |
MATCH |
Google שלחה את השדה למטמיע והוא נבדק באמצעות AVS והוא התאים לערך הצפוי. |
MISMATCH |
Google שלחה את השדה למטמיע והוא נבדק באמצעות AVS, אבל הוא לא התאים לערך הצפוי. |
SKIPPED |
Google שלחה את השדה למטמיע, אבל מבצע השילוב לא בדק את השדה. |
NOT_SPECIFIED |
Google שלחה את השדה למבצע השילוב, והכלי בדק את השדה באמצעות פעולת AVS, אבל קוד התוצאה של ה-AVS לא סיפק מספיק מידע כדי לאפשר למטמיע לדעת אם השדה תואם לערך הצפוי. |
CvnResult
התוצאה של אימות מספר אימות הכרטיס שסופק בבקשה.
טיפוסים בני מנייה (enum) | |
---|---|
UNKNOWN_CVN_RESULT |
אל תגדירו את ערך ברירת המחדל הזה אף פעם! |
NOT_SENT |
Google לא סיפקה את מספר אימות הכרטיס (CVN) ולכן לא ניתן היה לאמת אותו. |
NOT_VERIFIED |
Google שלחה את מספר אימות הכרטיס, אבל הוא לא אומת. הוא תואם לקוד של תוצאת הרשת "F" |
MATCH |
Google שלחה את מספר אימות הכרטיס (CVN), הוא אומת ונמצא תואם. הוא תואם לקוד תוצאת הרשת "M". |
MISMATCH |
Google שלחה את מספר אימות הכרטיס. הוא אומת אבל הוא לא תואם. הוא תואם לקוד תוצאת הרשת "N". |