Method: capture

حرکت پول را بین حساب مشتری در Google و پردازشگر پرداخت آغاز می کند. ترکیبی از requestId در هدر و paymentIntegratorAccountId کلید idempotency است و این تراکنش را به طور منحصربه‌فرد شناسایی می‌کند. تمام جهش‌ها در این تراکنش (بازپرداخت) مقدار requestId را در قسمت captureRequestId پر می‌کنند.

اگر نقطه پایانی هنگام پردازش درخواست با خطا مواجه شود، بدنه پاسخ از این نقطه پایانی باید از نوع ErrorResponse باشد.

یک نمونه درخواست به نظر می رسد:


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 0,
      "revision": 0
    },
    "requestId": "bWVyY2hhbnQgdHJhbnNhY3Rpb24gaWQ",
    "requestTimestamp": "1502220196077"
  },
  "paymentIntegratorAccountId": "InvisiCashUSA_USD",
  "googlePaymentToken": "ZXhhbXBsZSB1bmlxdWUgcGF5bWVudCB0b2tlbiB2YWx1ZQ",
  "transactionDescription": "Google - Music",
  "currencyCode": "INR",
  "amount": "728000000",
  "captureContext": {}
}

یک نمونه پاسخ به نظر می رسد:


{
  "responseHeader": {
    "responseTimestamp": "1481900013178"
  },
  "result": "SUCCESS",
  "paymentIntegratorTransactionId": "aW50ZWdyYXRvciB0cmFuc2FjdGlvbiBpZA"
}

درخواست HTTP

POST https://www.integratorhost.example.com/v1/capture

درخواست بدن

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

نمایندگی JSON
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "transactionDescription": string,
  "currencyCode": string,
  "amount": string,
  "captureContext": {
    object (CaptureContext)
  },

  // Union field fopDetails can be only one of the following:
  "googlePaymentToken": string,
  "mandateDetails": {
    object (MandateDetails)
  },
  "mandateWithNotificationDetails": {
    object (MandateWithNotificationDetails)
  }
  // End of list of possible types for union field fopDetails.

  // Union field account_verification can be only one of the following:
  "authenticationRequestId": string,
  "otpVerification": {
    object (OtpVerification)
  }
  // End of list of possible types for union field account_verification.
}
زمینه های
requestHeader

object ( RequestHeader )

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

paymentIntegratorAccountId

string

الزامی : این شناسه حساب یکپارچه‌کننده پرداخت است که محدودیت‌های قراردادی پیرامون این تراکنش را شناسایی می‌کند.

transactionDescription

string

الزامی : این شرح معامله است که می تواند در اظهارنامه مشتری قرار گیرد. به userLocale موجود در requestHeader محلی شده است. این قالب را می توان بدون اطلاع قبلی تغییر داد و هرگز نباید تجزیه شود.

currencyCode

string

مورد نیاز : کد ارز 3 حرفی ISO 4217

amount

string ( Int64Value format)

الزامی : مبلغ خرید، بر حسب واحد ارز.

captureContext

object ( CaptureContext )

مورد نیاز : زمینه در مورد این ضبط.

فیلد اتحادیه fopDetails . مورد نیاز : جزئیات FOP برای این تراکنش ضبط. fopDetails فقط می تواند یکی از موارد زیر باشد:
googlePaymentToken

string

نشانه ای که هر دو شرکت برای شناسایی حساب برای خرید بین یکدیگر استفاده می کنند.

mandateDetails

object ( MandateDetails )

جزئیات پرداخت خاص به دستورات.

mandateWithNotificationDetails

object ( MandateWithNotificationDetails )

جزئیات پرداخت مختص به دستورات، در مواردی که یک upcomingTransactionNotification مورد نیاز است.

فیلد اتحادیه account_verification .

account_verification تنها می تواند یکی از موارد زیر باشد:

authenticationRequestId

string

اختیاری : requestId درخواست احراز هویت مرتبط. اگر این وجود نداشته باشد، هیچ احراز هویتی را نمی توان به این ضبط گره زد.

اگر این وجود داشته باشد، کاربر بلافاصله قبل از این تماس احراز هویت شده است، یا زمانی که یک برنامه پرداخت خودکار تنظیم شده است، احراز هویت شده است.

otpVerification

object ( OtpVerification )

اختیاری : داده های لازم برای تأیید یک OTP تولید شده از sendOtp . این تنها در صورتی وجود دارد که کاربر از مسیر sendOtp رفته باشد.

بدن پاسخگو

شی پاسخ برای روش ضبط.

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

نمایندگی JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorTransactionId": string,
  "userMessage": string,
  "result": enum (CaptureResultCode),
  "rawResult": {
    object (RawResult)
  },
  "transactionLimit": string,
  "currentBalance": string
}
زمینه های
responseHeader

object ( ResponseHeader )

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

paymentIntegratorTransactionId

string

اختیاری : این شناسه مخصوص یکپارچه ساز است و توسط یکپارچه ساز تولید می شود. این شناسه ای است که ادغام کننده این تراکنش را با آن می شناسد.

برای راحتی، این شناسه در جزئیات حواله گنجانده شده است

userMessage
(deprecated)

string

منسوخ شده : شرحی از نتیجه که در صورت عدم SUCCESS نتیجه به کاربر نمایش داده می شود.

result

enum ( CaptureResultCode )

مورد نیاز : نتیجه این ضبط.

rawResult

object ( RawResult )

اختیاری : نتیجه خام این عکسبرداری. برای کمک به اطلاع رسانی به موتور ریسک و تجزیه و تحلیل Google استفاده می شود. در موقعیت‌های نقشه‌برداری کد کاهشی، داده‌ها گاهی از دست می‌روند. یکپارچه‌ساز می‌تواند انتخاب کند که یک کد خام به Google بدهد. به عنوان مثال، یک دروازه کارت اعتباری (ادغام کننده) ممکن است از این فیلد برای برقراری ارتباط با Google کد رد دقیق دریافت شده از شبکه VISA استفاده کند. در آن صورت، scope «ویزا» و rawCode هر چیزی است که شبکه VISA برگرداند.

اگر result SUCCESS نباشد، این مقدار مورد نیاز است.

transactionLimit

string ( Int64Value format)

اختیاری : اگر نتیجه CHARGE_EXCEEDS_TRANSACTION_LIMIT باشد، این حداکثر مبلغی است که کاربر می‌تواند برای یک تراکنش خرج کند (بر حسب میکرو ). این برای پیام‌رسانی ساختاریافته و رو به رو کاربر و تحلیل نرخ کاهش استفاده می‌شود.

این باید یک محدودیت نسبت به currencyCode در درخواست باشد.

currentBalance

string ( Int64Value format)

اختیاری : اگر نتیجه INSUFFICIENT_FUNDS باشد، این موجودی موجود فعلی در حساب کاربر است (بر حسب میکرو ). این برای پیام رسانی ساختاریافته و رو به رو کاربر استفاده می شود.

این مقدار باید به همان واحد پولی باشد که currencyCode در درخواست وجود دارد.

جزئیات ماموریت

جزئیات در مورد دستور گرفتن از.

نمایندگی JSON
{
  "mandateId": string
}
زمینه های
mandateId

string

الزامی است : شناسه فرمان ایجاد شده توسط Google که در طول تماس createMandate ارسال شده است.

MandateWithNotificationDetails

جزئیات مربوط به دستور ضبط، همراه با جزئیات اعلان‌های مورد نیاز.

نمایندگی JSON
{
  "mandateId": string,
  "upcomingTransactionNotificationId": string
}
زمینه های
mandateId

string

الزامی است : شناسه فرمان ایجاد شده توسط Google که در طول تماس createMandate ارسال شده است.

upcomingTransactionNotificationId

string

الزامی است : requestId تماس upcomingTransactionNotification که برای اطلاع از قبل درباره این تراکنش انجام شده است.

CaptureContext

این شی زمینه ای را در مورد نحوه درخواست عکس ارائه می دهد.

نمایندگی JSON
{
  "userIpAddress": string
}
زمینه های
userIpAddress

string

اختیاری : اگر خرید توسط کاربر در جلسه انجام شده باشد، این آدرس IP دستگاه کاربر است. اگر کاربر در جلسه نبود، این قسمت خالی می شود. اگر قرارداد خاصی نیاز به این زمینه را قید نکرده باشد، همیشه خالی خواهد بود.

CaptureResultCode

کدهای نتیجه برای ضبط

Enums
UNKNOWN_RESULT هرگز این مقدار پیش فرض را تنظیم نکنید!
SUCCESS ضبط موفقیت آمیز، تحویل کالا.
CHARGE_EXCEEDS_TRANSACTION_LIMIT amount این درخواست جذب از حد هر تراکنش بیشتر است. اگر از این کد استفاده می‌شود، قسمتtransactionLimit را برای اهداف پیام‌رسانی کاربر پر کنید.
CHARGE_EXCEEDS_DAILY_LIMIT این حساب در حال حاضر نمی تواند برای خرید استفاده شود زیرا از محدودیت روزانه خود فراتر رفته است.
CHARGE_EXCEEDS_MONTHLY_LIMIT این حساب در حال حاضر نمی تواند برای خرید استفاده شود زیرا از محدودیت های ماهانه خود فراتر رفته است.
CHARGE_UNDER_LIMIT amount این درخواست جذب با حداقل مبلغ تراکنش مطابقت ندارد.
INSUFFICIENT_FUNDS این حساب سرمایه کافی برای تضمین این ضبط را ندارد.
ACCOUNT_DOES_NOT_SUPPORT_CURRENCY این حساب از ارز درخواستی پشتیبانی نمی کند.
ACCOUNT_CLOSED

حساب کاربری که با یکپارچه نگه داشته شده است بسته شده است.

بازگرداندن این مقدار باعث می شود که ابزار کاربر با Google بسته شود. کاربر مجبور خواهد شد با گذراندن مجدد جریان ارتباط، ابزار جدیدی اضافه کند.

ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER

حساب کاربر با ادغام کننده بسته شده است، حساب مشکوک به کنترل است.

بازگرداندن این مقدار باعث می شود که ابزار کاربر با Google بسته شود. کاربر مجبور خواهد شد با گذراندن مجدد جریان ارتباط، ابزار جدیدی اضافه کند.

ACCOUNT_ON_HOLD حساب در حالت انتظار است.
ACCOUNT_CLOSED_FRAUD

حساب کاربری که در ادغام کننده نگهداری می شود به دلیل کلاهبرداری بسته شده است.

بازگرداندن این مقدار باعث می شود که ابزار کاربر با Google بسته شود. کاربر مجبور خواهد شد با گذراندن مجدد جریان ارتباط، ابزار جدیدی اضافه کند.

GOOGLE_PAYMENT_TOKEN_INVALIDATED_BY_USER

حساب فعال است، اما GPT توسط کاربر در سمت ادغام کننده باطل شده است.

بازگرداندن این مقدار باعث می شود که ابزار کاربر با Google بسته شود. کاربر مجبور خواهد شد با گذراندن مجدد جریان ارتباط، ابزار جدیدی اضافه کند.

TOKEN_REFRESH_REQUIRED برای بازگرداندن این مورد نیاز است که کاربر یک جریان تازه سازی را طی کند.
OTP_NOT_MATCHED OTP با آنچه که ادغام کننده ارسال کرد مطابقت نداشت.
OTP_ALREADY_USED OTP قبلاً استفاده شده بود.
RISK_DECLINED

این تراکنش به دلیل بررسی ریسک در سمت ادغام کننده رد شد.

این یک شکست دائمی برای این پرداخت است، اما باعث نمی‌شود که ابزار کاربر در Google بسته شود.

NO_GOOD_FUNDING_SOURCE_AVAILABLE کاربر هیچ منبع مالی فعالی را در حساب خود پیکربندی نکرده است که بتواند برای تراکنش پرداخت کند.
FUNDING_SOURCE_UNAVAILABLE

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

وقتی یک کد پاسخ 4xx یا 5xx توسط یک شریک برگردانده شود، Google پرداخت‌هایی را دوباره امتحان می‌کند. به همین دلیل، شرکا معمولاً باید یکی از آن کدهای پاسخ را برگردانند، اگر زمانی که منبع اصلی وجوه دوباره در دسترس باشد، سعی مجدد برای همین پرداخت انجام شود. اما، اگر دلایل فنی وجود داشته باشد که Google تلاش مجدد برای پرداخت را با شکست مواجه می‌کند، شریک می‌تواند «FUNDING_SOURCE_UNAVAILABLE» را به‌عنوان راهی برای گفتن به Google که نباید دوباره همین پرداخت را امتحان کند، برگرداند.

توجه: Google همچنان ممکن است این پرداخت را دوباره امتحان کند، اما فقط با یک requestId دیگر، اما این درخواست پرداخت به عنوان رد شده علامت‌گذاری می‌شود.

MANDATE_NOT_ACTIVE دستور استفاده شده برای این ضبط دیگر فعال نیست. این مقدار بازگشتی باعث می‌شود که ابزار دستور کاربر با Google بسته شود.
UPCOMING_TRANSACTION_NOTIFICATION_EXPIRED اعلانی که برای پرداخت دستوری مکرر به کاربر ارسال شده بود منقضی شده است.