Method: captureResultNotification

يمكنك إشعار Google بنتيجة الالتقاط بعد إجراء استدعاء لطريقة capture أو asynchronousCapture.

قيمة captureResult ثابتة لهذه الطريقة captureRequestId، لذا لا يمكن تغيير قيمتها من خلال استدعاء لاحق لهذه الطريقة.

إذا واجهت نقطة النهاية خطأً أثناء معالجة الطلب، سيكون الرد من نقطة النهاية هذه من النوع ErrorResponse.

قد تكون الردود على هذا الطلب فارغة إذا لم تعرض هذه الطريقة رمز HTTP 200. يكون نص الاستجابة فارغًا في الحالات التي قد يتم فيها استخدام ErrorResponse مع وصف واضح لمساعدة المهاجم على فهم معرّف حساب شركة تكامل الدفع الخاص بالجهات المدمَجة الأخرى. في هذه الحالات، عندما يكون مفتاح التوقيع غير متطابق أو لم يتم العثور على معرّف وحدة تكامل الدفع أو كان مفتاح التشفير غير معروف، ستعرض هذه الطريقة خطأ HTTP 404 بدون نص. وإذا توفّرت إمكانية التحقّق من صحة توقيع الطلب، سيتم عرض معلومات إضافية بشأن الخطأ في نص الاستجابة.

إليك مثال على الطلب:


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 1,
      "revision": 0
    },
    "requestId": "KcgwSKrV76eVNDUbsZ4UA3",
    "requestTimestamp": "1481852928293"
  },
  "paymentIntegratorAccountId": "InvisiCashUSA_USD",
  "captureRequestId": "awNaC510cefae3IJdNEvW2",
  "captureResult": {
    "captureResultCode": "SUCCESS"
  }
}

يبدو الرد كمثال:


{
  "responseHeader": {
    "responseTimestamp": "1481852928324"
  },
  "result": "SUCCESS"
}

طلب HTTP

POST https://vgw.googleapis.com/secure-serving/gsp/v1/captureResultNotification/:PIAID

نص الطلب

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

تمثيل JSON
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "captureRequestId": string,
  "captureResult": {
    object (CaptureResult)
  },
  "paymentIntegratorTransactionId": string
}
الحقول
requestHeader

object (RequestHeader)

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

paymentIntegratorAccountId

string

مطلوب: معرّف حساب شركة تكامل الدفع الذي تم فيه الالتقاط

captureRequestId

string

مطلوبة: معرّف فريد لهذه المعاملة هذا هو requestId الذي أنشأته Google أثناء مكالمة capture أو asynchronousCapture المرتبطة بهذا الطلب.

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

captureResult

object (CaptureResult)

مطلوب: نتيجة عملية الالتقاط هذه.

paymentIntegratorTransactionId

string

اختياري: هذا المعرّف خاص بشركة الدمج ويتمّ إنشاؤه بواسطة الشركة المدمَجة. هو المعرّف الذي تعرف شركة الدمج هذه المعاملة من خلاله.

ولتسهيل الأمر، يتم تضمين هذا المعرّف في تفاصيل الحوالة المالية.

نص الاستجابة

عنصر الاستجابة لطريقة captureResultNotification

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

تمثيل JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "result": enum (CaptureResultNotificationResultCode)
}
الحقول
responseHeader

object (ResponseHeader)

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

result

enum (CaptureResultNotificationResultCode)

REQUIRED: نتيجة هذه المكالمة.

CaptureResult

تشير هذه السمة إلى معلومات حول النتيجة النهائية لالتقاط صورة.

تمثيل JSON
{
  "captureResultCode": enum (CaptureResultCode),
  "rawResult": {
    object (RawResult)
  },

  // Union field FailureDetail can be only one of the following:
  "transactionMaxLimit": string,
  "transactionMinLimit": string,
  "currentBalance": string
  // End of list of possible types for union field FailureDetail.
}
الحقول
captureResultCode

enum (CaptureResultCode)

مطلوب: رمز نتيجة هذا التسجيل.

rawResult

object (RawResult)

OPTIONAL: النتيجة الأولية لهذا الالتقاط. تُستخدَم هذه السمة للمساعدة في إعلام محرّك بحث Google بشأن المخاطر والتحليلات. في حالات ربط الرموز البرمجية والرفض، يتم فقدان البيانات أحيانًا. يمكن أن تختار شركة الدمج منح Google رمزًا أوليًا. على سبيل المثال، يمكن لبوابة بطاقة الائتمان (شركة الدمج) استخدام هذا الحقل لإبلاغ Google برمز الرفض الذي تم استلامه من شبكة VISA. في هذه الحالة، ستكون القيمة scope هي "فيزا" وكانت بطاقة rawCode تعرض كل ما تعرضه شبكة VISA.

هذه القيمة مطلوبة إذا لم تكن قيمة السمة result هي SUCCESS.

حقل الاتحاد FailureDetail.

يمكن أن يكون FailureDetail واحدًا فقط مما يلي:

transactionMaxLimit

string (Int64Value format)

اختياري: إذا كانت قيمة captureResultCode هي CHARGE_EXCEEDS_TRANSACTION_LIMIT، تكون هذه هي قيمة الحد الأقصى للمعاملة المسموح بها. يُستخدم هذا الخيار للمراسلة المنظَّمة الموجَّهة للمستخدمين وتحليل معدّل الرفض.

هذا المقدار هو وحدات ميكرو من نفس currencyCode كطلب الطريقة الأصلي capture أو asynchronousCapture.

transactionMinLimit

string (Int64Value format)

اختياري: إذا كانت قيمة captureResultCode هي CHARGE_UNDER_TRANSACTION_LIMIT، تكون هذه هي قيمة الحد الأدنى للمعاملة المسموح بها. يُستخدم هذا الخيار للمراسلة المنظَّمة الموجَّهة للمستخدمين وتحليل معدّل الرفض.

هذا المقدار هو وحدات ميكرو من نفس currencyCode كطلب الطريقة الأصلي capture أو asynchronousCapture.

currentBalance

string (Int64Value format)

اختياري: إذا كانت "النتيجة" هي INSUFFICIENT_FUNDS، يكون هذا هو الرصيد المتاح حاليًا في حساب المستخدم (بالميكروبات). يُستخدم هذا الخيار للمراسلة المنظَّمة والموجَّهة للمستخدمين.

يجب أن تكون هذه القيمة بالعملة نفسها المستخدَمة في currencyCode في الطلب.

CaptureResultCode

رموز النتائج لالتقاط صورة

عمليات التعداد
UNKNOWN_RESULT لا تضبط هذه القيمة التلقائية على الإطلاق.
SUCCESS تم الالتقاط بنجاح.
CHARGE_UNDER_TRANSACTION_LIMIT لا يتوافق مبلغ الالتقاط المطلوب مع الحد الأدنى لمبلغ الاستلام الذي حدّدته جهة الدمج لكل معاملة. في حال استخدام هذا الرمز، يُرجى ملء الحقل transactionMinLimit بالحدّ الأدنى لمبلغ المعاملة لأغراض مراسلة المستخدمين.
CHARGE_EXCEEDS_TRANSACTION_LIMIT يتجاوز مبلغ الالتقاط المطلوب الحد الأقصى المسموح به لكل معاملة لدى شركة الدمج. في حال استخدام هذا الرمز، عليك ملء الحقل transactionMaxLimit بحدّ المعاملات لأغراض مراسلة المستخدمين.
CHARGE_EXCEEDS_DAILY_LIMIT لا يمكن استخدام حساب المستخدم لإجراء عمليات الشراء في الوقت الحالي، نظرًا لتجاوزه الحد الأقصى اليومي.
CHARGE_EXCEEDS_MONTHLY_LIMIT لا يمكن استخدام حساب المستخدم لإجراء عمليات الشراء الآن نظرًا لتجاوزه الحد الأقصى الشهري المسموح به.
INSUFFICIENT_FUNDS لا يحتوي هذا الحساب على أموال كافية لضمان الحصول على هذا المبلغ.
SUSPECTED_FRAUD لدى جهة الدمج سبب للشك في أنّ هذه المعاملة احتيالية.
ACCOUNT_CLOSED تم إغلاق حساب المستخدم لدى شركة الدمج. ستؤدي هذه القيمة المعروضة إلى إغلاق وسيلة المستخدم مع Google. سيضطر المستخدم إلى إضافة أداة جديدة.
ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER تم إغلاق حساب المستخدم لدى جهة الدمج، ويُشتبه في الاستيلاء على الحساب. ستؤدي هذه القيمة المعروضة إلى إغلاق وسيلة المستخدم مع Google. سيضطر المستخدم إلى إضافة أداة جديدة.
ACCOUNT_CLOSED_FRAUD تم إغلاق حساب المستخدم التابع لجهة الدمج بسبب عملية احتيال. ستؤدي هذه القيمة المعروضة إلى إغلاق وسيلة المستخدم مع Google. سيضطر المستخدم إلى إضافة أداة جديدة.
ACCOUNT_ON_HOLD حساب المستخدم معلق.
OTP_NOT_MATCHED لم تتطابق كلمة المرور لمرة واحدة مع ما أرسله مسؤول الدمج.
OTP_ALREADY_USED سبق أن تم استخدام كلمة المرور لمرة واحدة (OTP).
CAPTURE_REQUEST_EXPIRED واستغرقت شركة الدمج وقتًا طويلاً جدًا لجذب أموال المستخدم. ستتعامل Google مع هذا الرفض باعتباره حالة نهائية، لذلك على شركة الدمج التأكّد من عدم تحصيل أموال المستخدم في وقت لاحق أو أنّه سيستردّ المستخدم تلقائيًا في حال نجاح عملية الاقتطاع.
INVALID_PIN قدم المستخدم رقم تعريف شخصي غير صالح.
OS_LOCK_FAILED تتطلب عملية الدفع هذه إجراء تحدي لقفل نظام التشغيل وتعذَّر على المستخدم فتح قفل الجهاز.
PIN_ENTRY_ATTEMPTS_EXHAUSTED تتطلّب عملية الدفع هذه إدخال رقم التعريف الشخصي للمستخدم. لم يتمكّن المستخدم من إدخال رقم التعريف الشخصي مرّات كافية، ما أدّى إلى نفاد محاولاته.
USER_EXITED_PAYMENT_FLOW ألغى المستخدم محاولة الدفع بالكامل (إما عند قفل نظام التشغيل أو شاشة إدخال رقم التعريف الشخصي).
MONTHLY_FREQUENCY_LIMIT_EXCEEDED لا يمكن استخدام حساب المستخدم لإجراء عمليات الشراء الآن لأنّه تجاوز الحدّ الأقصى لعدد محاولات إجراء المعاملات الشهرية.
DECLINED_BY_ISSUER

يجب عدم استخدام رمز الرفض هذا أبدًا في حالة ثابتة. والمقصود بذلك هو رمز جامعي مؤقت لاستخدامه عندما تواجه شركة الدمج رمز رفض غير معروف من جهة الإصدار الأساسية لأداة المستخدم. ويمكن استخدام رمز النتيجة هذا بينما تحدد شركة الدمج رمز نتيجة أكثر ملاءمة لاستخدام أو تتفاوض بشأن إضافة رمز نتيجة جديد إلى هذه المواصفات.

الأهم من ذلك هو أنّ رمز الرفض هذا يمثّل رفضًا حقيقيًا إلى حدّ كبير. وهو رفض دائم بقدر ما تشعر به Google. وإذا أرجعت شركة الدمج هذه الرسوم، فتقع على عاتقها مسؤولية تتبُّع ما يعنيه الرمز البرمجي الخاص بجهة الإصدار وردّ الأموال إلى المستخدم إذا تبيّن أنّ الرمز يعني SUCCESS.

إذا تم استخدام رمز الرفض هذا لرمز الرفض الأساسي نفسه لأكثر من عدد معيّن من الأيام، ستتعامل Google معه على أنّه خطأ وستتتبّعه وفقًا لذلك في ما يتعلق بأي عقوبات تعاقدية متعلقة بإصلاح الأخطاء.

RawResult

كائن النتيجة الأولي.

تمثيل JSON
{
  "scope": string,
  "rawCode": string
}
الحقول
scope

string

OPTIONAL: يمكن أن يكون نطاق RAWCode فارغًا.

rawCode

string

مطلوب: الرمز الأولي من شركة الدمج أو الأنظمة الفرعية المضمّنة فيه.

CaptureResultNotificationResultCode

رموز النتائج لطريقة captureResultNotification.

عمليات التعداد
UNKNOWN_RESULT لا تضبط هذه القيمة التلقائية على الإطلاق.
SUCCESS تمت معالجة إشعار نتيجة الالتقاط بنجاح.