Method: captureResultNotification

Notifique o Google sobre o resultado de uma captura depois que uma chamada de método capture ou asynchronousCapture for feita.

O valor captureResult é idempotente para essa captureRequestId, portanto, o valor não pode ser alterado por uma chamada subsequente para esse método.

Se o endpoint encontrar um erro ao processar a solicitação, a resposta dele será do tipo ErrorResponse.

As respostas a esta consulta podem ficar vazias se o método não retornar HTTP 200. O corpo da resposta fica vazio em situações em que um ErrorResponse com uma descrição clara pode ser usado para ajudar um invasor a entender o identificador da conta do integrador de pagamentos de outros integradores. Quando a chave de assinatura não corresponde, o identificador do integrador de pagamentos não é encontrado ou a chave de criptografia é desconhecida, esse método vai retornar um HTTP 404 com corpo vazio. Se for possível verificar a assinatura da solicitação, informações adicionais sobre o erro serão retornadas no corpo da resposta.

Um exemplo de solicitação é semelhante a este:


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

Veja um exemplo de resposta:


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

Solicitação HTTP

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

Corpo da solicitação

O corpo da solicitação contém dados com a seguinte estrutura:

Representação JSON
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "captureRequestId": string,
  "captureResult": {
    object (CaptureResult)
  },
  "paymentIntegratorTransactionId": string
}
Campos
requestHeader

object (RequestHeader)

OBRIGATÓRIO: cabeçalho comum para todas as solicitações.

paymentIntegratorAccountId

string

OBRIGATÓRIO: o identificador da conta do integrador de pagamentos em que a captura ocorreu.

captureRequestId

string

OBRIGATÓRIO: um identificador exclusivo para esta transação. Esse é o requestId gerado pelo Google durante a chamada capture ou asynchronousCapture a que essa solicitação está associada.

Essa é uma string com comprimento máximo de 100 caracteres e contém apenas os caracteres "a-z", "A-Z", "0-9", ":", "-" e "_".

captureResult

object (CaptureResult)

OBRIGATÓRIO: resultado da captura.

paymentIntegratorTransactionId

string

OPCIONAL: esse identificador é específico para o integrador e gerado por ele. O integrador conhece essa transação pelo identificador.

Para facilitar, esse identificador é incluído nos detalhes da remessa.

Corpo da resposta

Objeto de resposta para o método captureResultNotification.

Se bem-sucedido, o corpo da resposta incluirá dados com a estrutura a seguir:

Representação JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "result": enum (CaptureResultNotificationResultCode)
}
Campos
responseHeader

object (ResponseHeader)

OBRIGATÓRIO: cabeçalho comum para todas as respostas.

result

enum (CaptureResultNotificationResultCode)

OBRIGATÓRIO: resultado da chamada.

CaptureResult

Informações sobre o resultado final de uma captura.

Representação 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.
}
Campos
captureResultCode

enum (CaptureResultCode)

OBRIGATÓRIO: código do resultado da captura.

rawResult

object (RawResult)

OPCIONAL: resultado bruto dessa captura. Usado para ajudar a informar o mecanismo de risco e as análises do Google. Em situações de recusa de mapeamento de código, os dados às vezes são perdidos. O integrador pode optar por fornecer um código bruto ao Google. Por exemplo, um gateway de cartão de crédito (o integrador) pode usar esse campo para comunicar ao Google o código de recusa exato recebido da rede VISA. Nesse caso, o valor de scope seria "visto". e rawCode seria o que a rede VISA retornasse.

Esse valor será obrigatório se result não for SUCCESS.

Campo de união FailureDetail.

FailureDetail pode ser apenas de um dos tipos a seguir:

transactionMaxLimit

string (Int64Value format)

OPCIONAL: se captureResultCode for CHARGE_EXCEEDS_TRANSACTION_LIMIT, esse será o valor da transação máxima permitida. Isso é usado para análise de taxa de recusa e mensagens estruturadas voltadas ao usuário.

Esse valor é micros do mesmo currencyCode da chamada de método original capture ou asynchronousCapture.

transactionMinLimit

string (Int64Value format)

OPCIONAL: se captureResultCode for CHARGE_UNDER_TRANSACTION_LIMIT, esse será o valor da transação mínima permitida. Isso é usado para análise de taxa de recusa e mensagens estruturadas voltadas ao usuário.

Esse valor é micros do mesmo currencyCode da chamada de método original capture ou asynchronousCapture.

currentBalance

string (Int64Value format)

OPCIONAL: se o resultado for INSUFFICIENT_FUNDS, esse será o saldo atual disponível na conta do usuário (em micros). É usada para mensagens estruturadas e voltadas para o usuário.

Esse valor precisa estar na mesma moeda que currencyCode na solicitação.

CaptureResultCode

Códigos resultantes de uma captura.

Enums
UNKNOWN_RESULT Nunca defina esse valor padrão.
SUCCESS Captura concluída.
CHARGE_UNDER_TRANSACTION_LIMIT O valor de captura solicitado não atende ao valor mínimo por transação do integrador. Se esse código for usado, preencha o campo transactionMinLimit com o valor mínimo de transação para enviar mensagens aos usuários.
CHARGE_EXCEEDS_TRANSACTION_LIMIT O valor de captura solicitado excede o limite máximo por transação do integrador. Se esse código for usado, preencha o campo transactionMaxLimit com o limite de transações para enviar mensagens aos usuários.
CHARGE_EXCEEDS_DAILY_LIMIT A conta do usuário não pode ser usada para compras no momento porque excedeu o limite diário.
CHARGE_EXCEEDS_MONTHLY_LIMIT A conta do usuário não pode ser usada para compras no momento porque excedeu o limite mensal.
INSUFFICIENT_FUNDS Esta conta não tem fundos suficientes para garantir esta captura.
SUSPECTED_FRAUD O integrador tem motivos para suspeitar que essa transação é fraudulenta.
ACCOUNT_CLOSED A conta do usuário mantida no integrador foi encerrada. Esse valor de retorno fará com que o instrumento do usuário seja fechado com o Google. O usuário será forçado a adicionar um novo instrumento.
ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER A conta do usuário com o integrador foi encerrada e há suspeita de que a conta está sendo assumida. Esse valor de retorno fará com que o instrumento do usuário seja fechado com o Google. O usuário será forçado a adicionar um novo instrumento.
ACCOUNT_CLOSED_FRAUD A conta do usuário retida no integrador foi encerrada devido a uma fraude. Esse valor de retorno fará com que o instrumento do usuário seja fechado com o Google. O usuário será forçado a adicionar um novo instrumento.
ACCOUNT_ON_HOLD A conta do usuário está em espera.
OTP_NOT_MATCHED A OTP não correspondeu ao que o integrador enviou.
OTP_ALREADY_USED A OTP já foi usada.
CAPTURE_REQUEST_EXPIRED O integrador levou muito tempo para capturar os fundos do usuário. O Google vai tratar essa recusa como um estado final. Por isso, o integrador precisa garantir que os fundos do usuário não sejam capturados mais tarde ou que o usuário seja reembolsado automaticamente se a captura for realizada.
INVALID_PIN O usuário forneceu um PIN inválido.
OS_LOCK_FAILED Este fluxo de pagamento exige um desafio de bloqueio do SO, e o usuário não conseguiu desbloquear o dispositivo.
PIN_ENTRY_ATTEMPTS_EXHAUSTED Este fluxo de pagamento requer a inserção do PIN do usuário. O usuário não conseguiu inserir o PIN várias vezes, e não foi preciso fazer mais tentativas.
USER_EXITED_PAYMENT_FLOW O usuário cancelou toda a tentativa de pagamento (no bloqueio do SO ou na tela de inserção do PIN).
MONTHLY_FREQUENCY_LIMIT_EXCEEDED A conta do usuário não pode ser usada para compras no momento porque excedeu o limite mensal de tentativas de transação.
DECLINED_BY_ISSUER

Esse código de recusa nunca deve ser usado de forma estável. Trata-se de um código "pega-tudo" temporário a ser usado quando o integrador encontra um código de recusa desconhecido do emissor subjacente do instrumento do usuário. Esse código de resultado pode ser usado enquanto o integrador determina um código de resultado mais apropriado a ser usado ou negocia a adição de um novo código de resultado a essa especificação.

É importante ressaltar que esse código de recusa é uma recusa real. No que diz respeito ao Google, é um declínio permanente. Se o integrador retornar isso, cabe a ele rastrear o que o código do emissor realmente significa e reembolsar o usuário se o código realmente for SUCCESS.

Se esse código de recusa for usado para o mesmo código de recusa por mais de um determinado número de dias, o Google o tratará como um bug e o rastreará de acordo com as penalidades contratuais relacionadas à correção de bugs.

RawResult

Objeto de resultado bruto.

Representação JSON
{
  "scope": string,
  "rawCode": string
}
Campos
scope

string

OPCIONAL: escopo do código bruto, que pode estar vazio.

rawCode

string

OBRIGATÓRIO: código bruto do integrador ou dos subsistemas dele.

CaptureResultNotificationResultCode

Códigos de resultado para o método captureResultNotification.

Enums
UNKNOWN_RESULT Nunca defina esse valor padrão.
SUCCESS A notificação do resultado da captura foi processada com sucesso.