- HTTP-запрос
- Тело запроса
- Тело ответа
- Подробности о мандате
- MandateWithNotificationDetails
- Захват контекста
- CaptureResultCode
Инициирует движение денег между счетом клиента в Google и платежной системой. Комбинация requestId
в заголовке и paymentIntegratorAccountId
является ключом идемпотентности и уникально идентифицирует эту транзакцию. Все изменения в этой транзакции (возвраты) заполняют значение 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 | ОБЯЗАТЕЛЬНО : это идентификатор учетной записи платежного интегратора, который определяет договорные ограничения, связанные с этой транзакцией. |
transactionDescription | ОБЯЗАТЕЛЬНО : это описание транзакции, которое можно указать в выписке клиента. Локализовано для userLocale, найденного в |
currencyCode | ТРЕБУЕТСЯ : трехбуквенный код валюты ISO 4217. |
amount | ОБЯЗАТЕЛЬНО : Сумма покупки в микро валютной единице. |
captureContext | ОБЯЗАТЕЛЬНО : Контекст этого захвата. |
Поле объединения fopDetails . ОБЯЗАТЕЛЬНО : данные FOP для этой транзакции Capture. fopDetails может быть только одним из следующих: | |
googlePaymentToken | Токен, который обе компании будут использовать для идентификации аккаунта для покупок между собой. |
mandateDetails | Платежные реквизиты, специфичные для мандатов. |
mandateWithNotificationDetails | Платежные реквизиты, специфичные для мандатов, для которых требуется уведомление |
Поле объединения | |
authenticationRequestId | НЕОБЯЗАТЕЛЬНО : Если он присутствует, значит, пользователь был аутентифицирован непосредственно перед этим вызовом или был аутентифицирован при настройке автоматического графика платежей. |
otpVerification | НЕОБЯЗАТЕЛЬНО : данные, необходимые для проверки OTP, сгенерированного |
Тело ответа
Объект ответа для метода захвата.
В случае успеха тело ответа содержит данные следующей структуры:
JSON-представление |
---|
{ "responseHeader": { object ( |
Поля | |
---|---|
responseHeader | ОБЯЗАТЕЛЬНО : общий заголовок для всех ответов. |
paymentIntegratorTransactionId | НЕОБЯЗАТЕЛЬНО : этот идентификатор специфичен для интегратора и генерируется интегратором. Это идентификатор, по которому интегратор знает эту транзакцию. Для удобства этот идентификатор включен в детали денежного перевода. |
userMessage | УСТАРЕЛО : описание результата, которое будет отображаться пользователю, если результат не |
result | ОБЯЗАТЕЛЬНО : Результат этого захвата. |
rawResult | НЕОБЯЗАТЕЛЬНО : необработанный результат этого захвата. Используется для информирования системы рисков и аналитики Google. В ситуациях отказа от сопоставления кода данные иногда теряются. Интегратор может предоставить Google необработанный код. Например, шлюз кредитных карт (интегратор) может использовать это поле, чтобы сообщить Google точный код отклонения, полученный из сети VISA. В этом случае Это значение является обязательным , если |
transactionLimit | НЕОБЯЗАТЕЛЬНО : если Result равен Это должно быть ограничение относительно |
currentBalance | НЕОБЯЗАТЕЛЬНО : если результат равен Это значение должно быть в той же валюте, что и |
Подробности о мандате
Подробности о мандате на захват.
JSON-представление |
---|
{ "mandateId": string } |
Поля | |
---|---|
mandateId | ОБЯЗАТЕЛЬНО : идентификатор мандата, сгенерированный Google, который был отправлен во время вызова |
MandateWithNotificationDetails
Подробная информация о мандате на захват, а также необходимые сведения об уведомлениях.
JSON-представление |
---|
{ "mandateId": string, "upcomingTransactionNotificationId": string } |
Поля | |
---|---|
mandateId | ОБЯЗАТЕЛЬНО : идентификатор мандата, сгенерированный Google, который был отправлен во время вызова |
upcomingTransactionNotificationId | ОБЯЗАТЕЛЬНО : |
Захват контекста
Этот объект предоставляет контекст о том, как был запрошен захват.
JSON-представление |
---|
{ "userIpAddress": string } |
Поля | |
---|---|
userIpAddress | НЕОБЯЗАТЕЛЬНО : это IP-адрес устройства пользователя, если покупка была совершена пользователем во время сеанса. Если пользователь не был в сеансе, это поле будет пустым. Если в конкретном договоре не предусмотрена необходимость этого поля, оно всегда будет пустым. |
CaptureResultCode
Коды результатов для захвата.
Перечисления | |
---|---|
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 | Базовый эмитент или источник средств недоступен, и повторная попытка существующего платежа не будет успешной. Google будет повторять платежи, если партнер вернет код ответа 4xx или 5xx. По этой причине партнеры обычно должны возвращать один из этих кодов ответа, если повторная попытка того же платежа может быть успешной, когда основной источник средств снова станет доступным. Но если по техническим причинам Google не сможет повторить платеж, партнер может вернуть «FUNDING_SOURCE_UNAVAILABLE», чтобы сообщить Google, что ему не следует повторять тот же платеж. Примечание. Google по-прежнему может повторить этот платеж, но с другим идентификатором запроса, но этот запрос платежа будет помечен как отклоненный. |
MANDATE_NOT_ACTIVE | Мандат, использованный для этого захвата, больше не действует. Это возвращаемое значение приведет к закрытию инструмента мандата пользователя в Google. |
UPCOMING_TRANSACTION_NOTIFICATION_EXPIRED | Срок действия уведомления, отправленного пользователю о регулярном обязательном платеже, истек. |