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 символов, содержащая только символы «az», «AZ», «0-9», «:», «-» и «_».

captureResult

object ( CaptureResult )

ОБЯЗАТЕЛЬНО : Результат этого захвата.

paymentIntegratorTransactionId

string

НЕОБЯЗАТЕЛЬНО : этот идентификатор специфичен для интегратора и генерируется интегратором. Это идентификатор, по которому интегратор знает эту транзакцию.

Для удобства этот идентификатор включен в детали денежного перевода.

Тело ответа

Объект ответа для метода captureResultNotification .

В случае успеха тело ответа содержит данные следующей структуры:

JSON-представление
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "result": enum (CaptureResultNotificationResultCode)
}
Поля
responseHeader

object ( ResponseHeader )

ОБЯЗАТЕЛЬНО : общий заголовок для всех ответов.

result

enum ( CaptureResultNotificationResultCode )

ОБЯЗАТЕЛЬНО : Результат этого вызова.

Захватрезультата

Информация об окончательном результате захвата.

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 )

НЕОБЯЗАТЕЛЬНО : необработанный результат этого захвата. Используется для информирования системы рисков и аналитики Google. В ситуациях отказа от сопоставления кода данные иногда теряются. Интегратор может предоставить Google необработанный код. Например, шлюз кредитных карт (интегратор) может использовать это поле, чтобы сообщить Google точный код отклонения, полученный из сети VISA. В этом случае scope будет «visa», а 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 не соответствовал тому, что отправил интегратор.
OTP_ALREADY_USED OTP уже использовался.
CAPTURE_REQUEST_EXPIRED Интегратору потребовалось слишком много времени, чтобы захватить средства пользователя. Google будет рассматривать это отклонение как окончательное состояние, поэтому интегратор должен гарантировать, что средства пользователя не будут захвачены позже или что пользователю будет автоматически возвращено возмещение, если захват окажется успешным.
INVALID_PIN Пользователь указал неверный PIN-код.
OS_LOCK_FAILED Для этого потока платежей требуется запрос на блокировку ОС, и пользователю не удалось разблокировать устройство.
PIN_ENTRY_ATTEMPTS_EXHAUSTED Этот поток платежей требует ввода PIN-кода пользователя. Пользователю не удалось ввести PIN-код столько раз, что у него закончились попытки.
USER_EXITED_PAYMENT_FLOW Пользователь отменил всю попытку оплаты (либо при блокировке ОС, либо на экране ввода PIN-кода).
MONTHLY_FREQUENCY_LIMIT_EXCEEDED В настоящее время учетную запись пользователя нельзя использовать для покупок, поскольку превышен ежемесячный лимит попыток транзакций.
DECLINED_BY_ISSUER

Этот код отклонения никогда не следует использовать в установившемся режиме. Он предназначен для использования в качестве временного универсального кода, когда интегратор сталкивается с неизвестным кодом отклонения от основного эмитента пользовательского инструмента. Этот результирующий код может использоваться, пока интегратор определяет более подходящий для использования результирующий код или согласовывает добавление нового результирующего кода в данную спецификацию.

Важно отметить, что этот код отклонения во многом является реальным снижением. С точки зрения Google, это постоянный спад. Если интегратор возвращает это, он должен отследить, что на самом деле означает код эмитента, и вернуть пользователю деньги, если окажется, что код действительно означает SUCCESS .

Если этот код отклонения используется для одного и того же основного кода отклонения более определенного количества дней, Google будет рассматривать его как ошибку и соответствующим образом отслеживать его с учетом любых договорных санкций, связанных с исправлением ошибок.

RawResult

Необработанный объект результата.

JSON-представление
{
  "scope": string,
  "rawCode": string
}
Поля
scope

string

НЕОБЯЗАТЕЛЬНО : Область действия rawCode может быть пустой.

rawCode

string

ОБЯЗАТЕЛЬНО : необработанный код интегратора или его подсистем.

CaptureResultNotificationResultCode

Коды результатов для метода captureResultNotification .

Перечисления
UNKNOWN_RESULT Никогда не устанавливайте это значение по умолчанию!
SUCCESS Уведомление о результате захвата успешно обработано.