Method: getDisputeInquiryReport

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

Если конечная точка обнаружит ошибку при обработке запроса, ответ от этой конечной точки будет иметь тип ErrorResponse .

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

Пример запроса выглядит так:


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 1,
      "revision": 0
    },
    "requestId": "HsKv5pvtQKTtz7rdcw1YqE",
    "requestTimestamp": "1519996751331"
  },
  "paymentIntegratorAccountId": "InvisiCashUSA",
  "paymentLookupCriteria": {
    "googleTransactionReferenceNumberCriteria": {
      "googleTransactionReferenceNumber": "714545417102363157911822",
      "authorizationCode": "111111"
    }
  },
  "existingGoogleClaimId": "138431383281",
  "requestOriginator": {
    "organizationId": "ISSUER_256",
    "organizationDescription": "Community Bank of Some City",
    "agentId": "982749"
  }
}

Пример ответа выглядит так:


{
  "responseHeader": {
    "responseTimestamp": "1519996752221"
  },
  "result": "SUCCESS",
  "googleClaimId": "138431383281",
  "report": {
    "customerAccount": {
      "customerEmail": "example@gmail.com",
      "customerName" : "Example Customer"
    },
    "order": {
      "timestamp": "1517992525972",
      "orderId": "SOP.8976-1234-1234-123456..99",
      "currencyCode": "USD",
      "subTotalAmount": "206990000",
      "totalAmount": "212990000",
      "shippingAddress": {
        "name": "Example Customer",
        "addressLine": ["123 Main St"],
        "localityName": "Springfield",
        "administrativeAreaName": "CO",
        "postalCodeNumber": "80309",
        "countryCode": "US"
      },
      "taxes": [
        {
          "description": "Colorado Sales Tax",
          "amount": "6000000"
        }
      ],
      "items": [
        {
          "description": "Super cool gizmo",
          "merchant": "HTC",
          "googleProductName": "Google Store",
          "quantity": "2",
          "totalPrice": "198000000"
        },
        {
          "description": "Gizmo charger",
          "merchant": "HTC",
          "googleProductName": "Google Store",
          "quantity": "1",
          "totalPrice": "8990000"
        }
      ]
    },
    "payment": {
      "billingAddress" : {
        "name": "Example Customer",
        "addressLine": ["123 Main St"],
        "localityName": "Springfield",
        "administrativeAreaName": "CO",
        "postalCodeNumber": "80309",
        "countryCode": "US"
      },
      "amount": "100000000",
      "refunds": [
        {
          "amount": "9250000",
          "initiatedTimestamp": "1518811245384"
        }
      ],
      "cardDetails": {
        "authResult": "APPROVED"
      }
    }
  }
}

HTTP-запрос

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

Тело запроса

Тело запроса содержит данные следующей структуры:

JSON-представление
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "paymentLookupCriteria": {
    object (PaymentLookupCriteria)
  },
  "existingGoogleClaimId": string,
  "requestOriginator": {
    object (RequestOriginator)
  }
}
Поля
requestHeader

object ( RequestHeader )

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

paymentIntegratorAccountId

string

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

paymentLookupCriteria

object ( PaymentLookupCriteria )

ОБЯЗАТЕЛЬНО : Критерии, указывающие платеж, который необходимо найти для этого запроса.

existingGoogleClaimId

string

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

Если его нет, будет создан новый идентификатор заявки. Вызывающий может предоставить googleClaimId , который был возвращен предыдущим вызовом getDisputeInquiryReport , если это продолжение того же спора клиента.

Идентификатор утверждения, заполненный или сгенерированный здесь, будет возвращен в поле googleClaimId ответа.

Недопустимо предоставлять googleClaimId , который не был возвращен предыдущим вызовом getDisputeInquiryReport . В этом случае будет возвращен HTTP 400 Bad Request.

requestOriginator

object ( RequestOriginator )

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

Тело ответа

Полезные данные ответа для метода getDisputeInquiryReport .

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

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

object ( ResponseHeader )

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

result

enum ( GetDisputeInquiryReportResultCode )

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

googleClaimId

string

НЕОБЯЗАТЕЛЬНО : строка, сгенерированная Google, которая однозначно идентифицирует спор клиента. (Присутствует тогда и только тогда, когда result УСПЕХ.)

Если в запросе был указан existingGoogleClaimId , это будет то же значение. В противном случае это будет новое сгенерированное значение. Это значение может быть предоставлено в будущих запросах getDisputeInquiryReport , если они являются частью одного и того же спора клиента.

report

object ( PurchaseReport )

НЕОБЯЗАТЕЛЬНО : Подробная информация, относящаяся к спору о платеже, указанном в запросе. (Присутствует тогда и только тогда, когда result УСПЕХ.)

Заголовок запроса

Объект заголовка, который определяется для всех запросов, отправляемых на сервер.

JSON-представление
{
  "requestId": string,
  "requestTimestamp": string,
  "userLocale": string,
  "protocolVersion": {
    object (Version)
  }
}
Поля
requestId

string

ОБЯЗАТЕЛЬНО : уникальный идентификатор этого запроса.

Это строка максимальной длиной 100 символов, содержащая только символы «az», «AZ», «0-9», «:», «-» и «_».

requestTimestamp

string ( int64 format)

ОБЯЗАТЕЛЬНО : временная метка этого запроса, представленная в миллисекундах с начала эпохи. Получатель должен убедиться, что эта временная метка составляет ± 60 секунд от «сейчас». Эта временная метка запроса не является идемпотентной при повторных попытках.

userLocale
(deprecated)

string

УСТАРЕЛО : двух- или трехбуквенный код языка ISO 639-2 Alpha 3, за которым может следовать дефис и код страны ISO 3166-1 Alpha-2, например «pt», «pt-BR», «fil» или 'фил-PH'. Используйте это, чтобы управлять полями userMessage в ответе.

protocolVersion

object ( Version )

ОБЯЗАТЕЛЬНО : версия этого запроса.

Версия

Объект версии, который представляет собой структурированную форму классической структуры версий abc . Совместимость основных версий одного и того же номера гарантирована. Обратите внимание, что второстепенные и исправленные версии могут изменяться часто и без предварительного уведомления. Интегратор должен поддерживать все запросы на одну и ту же основную версию.

JSON-представление
{
  "major": integer,
  "minor": integer,
  "revision": integer
}
Поля
major

integer

ТРЕБУЕТСЯ : Основная версия. Это отмечено для запросов совместимости с разными версиями, совместимость которых не гарантируется.

minor

integer

ТРЕБУЕТСЯ : Дополнительная версия. Это означает существенные исправления ошибок.

revision

integer

ТРЕБУЕТСЯ : Дополнительная версия. Это означает исправление мелких ошибок.

Критерии поиска платежа

Контейнер для критериев, позволяющих однозначно искать платеж. Одно (и только одно) поле участника должно быть заполнено.

JSON-представление
{

  // Union field criteria can be only one of the following:
  "arnCriteria": {
    object (ArnCriteria)
  },
  "googleTransactionReferenceNumberCriteria": {
    object (GoogleTransactionReferenceNumberCriteria)
  }
  // End of list of possible types for union field criteria.
}
Поля

criteria поля Союза.

criteria может быть только один из следующих:

arnCriteria

object ( ArnCriteria )

НЕОБЯЗАТЕЛЬНО : поиск по номеру покупателя (ARN).

googleTransactionReferenceNumberCriteria

object ( GoogleTransactionReferenceNumberCriteria )

НЕОБЯЗАТЕЛЬНО : поиск по ссылочному номеру транзакции Google.

АрнКритерии

Критерии поиска платежа на основе ссылочного номера эквайера (ARN).

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

string

ОБЯЗАТЕЛЬНО : Справочный номер эквайрера (ARN), который однозначно идентифицирует платеж. Должно быть 23 цифры в длину.

authorizationCode

string

ОБЯЗАТЕЛЬНО : Код авторизации для транзакции.

GoogleTransactionReferenceNumberCriteria

Критерии поиска платежа на основе ссылочного номера транзакции, сгенерированного Google.

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

string

ОБЯЗАТЕЛЬНО : сгенерированный Google ссылочный номер транзакции, который однозначно идентифицирует платеж.

authorizationCode

string

ОБЯЗАТЕЛЬНО : Код авторизации для транзакции.

Инициатор запроса

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

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

string

ОБЯЗАТЕЛЬНО : идентификатор компании, организации или организационной группы, от которой поступил этот запрос. Должен быть уникальным в пределах этого paymentIntegratorAccountId .

organizationDescription

string

ОБЯЗАТЕЛЬНО : удобочитаемое название или описание организации, которое можно использовать для облегчения общения между сотрудниками Google и интегратором относительно этой организации.

agentId

string

НЕОБЯЗАТЕЛЬНО : уникальный идентификатор конкретного агента (сотрудника) организации, идентифицируемой organizationId , от которого исходил этот запрос. Должен быть уникальным в пределах этой organizationId .

GetDisputeInquiryReportResultCode

Результат вызова метода getDisputeInquiryReport .

Перечисления
UNKNOWN_RESULT Никогда не устанавливайте это значение по умолчанию!
SUCCESS Платеж найден и предоставлен отчет.
PAYMENT_NOT_FOUND Запрошенный платеж не найден.
PAYMENT_TOO_OLD Запрошенный платеж был найден, но отчет не был предоставлен из-за давности платежа.
ORDER_CANNOT_BE_RETURNED Запрошенный платеж принадлежит заказу, который существует, но не может быть возвращен. К причинам относятся случаи, когда заказ был удален по требованию его владельца.
NO_ADDITIONAL_DETAILS Запрошенный платеж найден, но отчет недоступен.

Отчет о покупке

Отчет, содержащий соответствующие сведения о покупке, связанной с запрошенным платежом.

JSON-представление
{
  "customerAccount": {
    object (CustomerAccount)
  },
  "order": {
    object (Order)
  },
  "payment": {
    object (Payment)
  }
}
Поля
customerAccount

object ( CustomerAccount )

ТРЕБУЕТСЯ : Информация о клиенте и его учетной записи.

order

object ( Order )

ОБЯЗАТЕЛЬНО : Информация о заказе, по которому была произведена оплата.

payment

object ( Payment )

ДОПОЛНИТЕЛЬНО : Информация об оплате. Примечание. В одном заказе возможно несколько платежей, но он будет содержать только информацию о платеже, указанном в исходном запросе. Доступно не для всех типов заказов.

Счет клиента

Информация о счете клиента

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

string

ОБЯЗАТЕЛЬНО : адрес электронной почты, связанный с учетной записью Google клиента.

customerName

string

ОБЯЗАТЕЛЬНО : Имя клиента.

Заказ

Информация о заказе.

JSON-представление
{
  "timestamp": string,
  "orderId": string,
  "currencyCode": string,
  "subTotalAmount": string,
  "totalAmount": string,
  "shippingAddress": {
    object (Address)
  },
  "items": [
    {
      object (Item)
    }
  ],
  "taxes": [
    {
      object (Tax)
    }
  ]
}
Поля
timestamp

string ( int64 format)

НЕОБЯЗАТЕЛЬНО : отметка времени создания заказа, выраженная в миллисекундах с момента создания. Доступно не для всех типов заказов.

orderId

string

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

currencyCode

string

ДОПОЛНИТЕЛЬНО : трехбуквенный код валюты ISO 4217 для всех сумм в этом заказе. Доступно не для всех типов заказов.

subTotalAmount

string ( Int64Value format)

НЕОБЯЗАТЕЛЬНО : общая сумма этого заказа до уплаты налогов, выраженная в микро валютах, указанных в order.currencyCode . Это равно SUM(items.totalPrice) . Доступно не для всех типов заказов.

totalAmount

string ( Int64Value format)

НЕОБЯЗАТЕЛЬНО : общая сумма этого заказа, включая налоги, выраженная в микро валютах, указанных в order.currencyCode . Это равно subTotalAmount + SUM(taxes.amount) . Доступно не для всех типов заказов.

shippingAddress

object ( Address )

НЕОБЯЗАТЕЛЬНО : адрес доставки физических товаров в этом заказе.

items[]

object ( Item )

ОБЯЗАТЕЛЬНО : Список товаров, которые были частью этого заказа.

taxes[]

object ( Tax )

ОБЯЗАТЕЛЬНО : Список товаров, которые были частью этого заказа. Этот список может быть пустым.

Адрес

Структура, содержащая информацию об адресе.

JSON-представление
{
  "name": string,
  "addressLine": [
    string
  ],
  "localityName": string,
  "administrativeAreaName": string,
  "postalCodeNumber": string,
  "countryCode": string
}
Поля
name

string

НЕОБЯЗАТЕЛЬНО : полное имя клиента.

addressLine[]

string

НЕОБЯЗАТЕЛЬНО : содержит неструктурированный текст адреса.

localityName

string

НЕОБЯЗАТЕЛЬНО : это довольно расплывчатый термин, но обычно он относится к части адреса, посвященной городу. В регионах мира, где населенные пункты не определены четко или плохо вписываются в эту структуру (например, Япония и Китай), оставьте localityName пустым и используйте адресную строку.

Примеры: город в США, ИТ-коммуна, почтовый город Великобритании.

administrativeAreaName

string

НЕОБЯЗАТЕЛЬНО : высшее административное подразделение этой страны. Примеры: штат США, ИТ-регион, провинция CN, префектура JP.

postalCodeNumber

string

НЕОБЯЗАТЕЛЬНО : несмотря на название, значения postalCodeNumber часто являются буквенно-цифровыми. Примеры: «94043», «SW1W», «SW1W 9TQ».

countryCode

string

НЕОБЯЗАТЕЛЬНО : код страны адреса клиента, который, как ожидается, будет ISO-3166-1 Alpha-2.

Элемент

Информация о позиции в заказе.

JSON-представление
{
  "description": string,
  "merchant": string,
  "quantity": string,
  "totalPrice": string,
  "googleProductName": string
}
Поля
description

string

НЕОБЯЗАТЕЛЬНО : описание приобретенного товара. Доступно не для всех типов заказов.

merchant

string

ТРЕБУЕТСЯ : Продавец, художник или изготовитель предмета.

quantity

string ( Int64Value format)

НЕОБЯЗАТЕЛЬНО : количество заказанного товара.

Это поле будет опущено, если целые количества неприменимы к продукту (например, дозируемые продукты могут иметь дробные количества).

totalPrice

string ( Int64Value format)

НЕОБЯЗАТЕЛЬНО : общая цена этого товара, выраженная в микро валютах, указанных в order.currencyCode . Если quantity указано, оно отражает общую цену всего количества. Доступно не для всех типов заказов.

googleProductName

string

ОБЯЗАТЕЛЬНО : название службы продукта Google для элемента.

Налог

Информация о налоге, который применяется к данному заказу.

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

string

ОБЯЗАТЕЛЬНО : Описание налога.

amount

string ( Int64Value format)

ОБЯЗАТЕЛЬНО : сумма налога, выраженная в микро валюте, указанной в order.currencyCode .

Оплата

Информация об оплате.

JSON-представление
{
  "billingAddress": {
    object (Address)
  },
  "amount": string,
  "refunds": [
    {
      object (Refund)
    }
  ],

  // Union field fopDetails can be only one of the following:
  "cardDetails": {
    object (PaymentCardDetails)
  }
  // End of list of possible types for union field fopDetails.
}
Поля
billingAddress

object ( Address )

ОБЯЗАТЕЛЬНО : Платежный адрес для этого платежа.

amount

string ( Int64Value format)

ОБЯЗАТЕЛЬНО : сумма этого платежа, представленная в микро валюте, указанной в order.currencyCode . Примечание. Это значение может не совпадать с order.totalAmount , если заказ был оплачен несколькими платежами.

refunds[]

object ( Refund )

ОБЯЗАТЕЛЬНО : Список возмещений, произведенных по этому платежу. Этот список может быть пустым.

Поле объединения fopDetails .

fopDetails может быть только одним из следующих:

cardDetails

object ( PaymentCardDetails )

НЕОБЯЗАТЕЛЬНО : платежные реквизиты, относящиеся к кредитным и дебетовым картам.

Возвращать деньги

Информация о возврате денежных средств по платежу.

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

string ( Int64Value format)

ОБЯЗАТЕЛЬНО : возвращаемая сумма, положительное число микро в валюте, указанной в order.currencyCode .

initiatedTimestamp

string ( int64 format)

ОБЯЗАТЕЛЬНО : временная метка начала возврата средств, выраженная в миллисекундах с момента начала действия.

ОплатаКартаДетали

Платежные реквизиты, специфичные для кредитных и дебетовых карт.

JSON-представление
{
  "authResult": enum (AuthResult)
}
Поля
authResult

enum ( AuthResult )

ОБЯЗАТЕЛЬНО : Результат аутентификации платежа.

Результат аутентификации

Результаты аутентификации платежа.

Перечисления
UNKNOWN_RESULT Никогда не устанавливайте это значение по умолчанию!
APPROVED Авторизация одобрена.
DENIED Аутентификация отклонена.
NOT_ATTEMPTED Аутентификация не предпринята.