Method: captureResultNotification

Notifique o Google sobre o resultado de uma captura após uma chamada de método capture ou asynchronousCapture ser feita.

O valor captureResult é idempotente para esse 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 desse endpoint será do tipo ErrorResponse.

As respostas a esta consulta podem estar vazias se esse método não retornar um 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. Nessas situações, 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 retorna um HTTP 404 com um corpo vazio. Se a assinatura da solicitação puder ser verificada, informações adicionais sobre o erro serão retornadas no corpo da resposta.

Veja abaixo um exemplo de solicitação:


{
  "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

REQUIRED: um identificador exclusivo para a transação. Este é o requestId gerado pelo Google durante a chamada capture ou asynchronousCapture à qual esta solicitação está associada.

Esta é 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 desta captura.

paymentIntegratorTransactionId

string

OPCIONAL: esse identificador é específico para o integrador e é gerado pelo integrador. Esse é o identificador que o integrador conhece pela transação.

Por conveniência, este identificador está 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 dessa captura.

rawResult

object (RawResult)

OPCIONAL: resultado bruto da captura. Usado para ajudar a informar o mecanismo de risco e as análises do Google. Em situações de mapeamento de código recusado, os dados às vezes são perdidos. O integrador pode fornecer ao Google um código bruto. 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 que foi recebido da rede VISA. Nesse caso, o scope seria "visa", e o rawCode seria o que a rede VISA retornou.

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 mensagens estruturadas e voltadas para o usuário e análise da taxa de recusa.

Esse valor é micros do mesmo currencyCode que a chamada original do método 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 mensagens estruturadas e voltadas para o usuário e análise da taxa de recusa.

Esse valor é micros do mesmo currencyCode que a chamada original do método 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). Isso é usado para mensagens estruturadas voltadas para o usuário.

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

Código de resultado da captura

Códigos de resultado de uma captura.

Enums
UNKNOWN_RESULT Nunca defina esse valor padrão.
SUCCESS Captura realizada.
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 da transação para fins de mensagens do usuário.
CHARGE_EXCEEDS_TRANSACTION_LIMIT O valor de captura solicitado excede o limite máximo de integração por transação. Se esse código for usado, preencha o campo transactionMaxLimit com o limite de transação para fins de mensagens do usuário.
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 essa captura.
SUSPECTED_FRAUD O integrador tem motivos para suspeitar que essa transação seja fraudulenta.
ACCOUNT_CLOSED A conta do usuário associada ao integrador foi encerrada. Esse valor de retorno fará com que o instrumento do usuário seja fechado com o Google. O usuário será obrigado a adicionar um novo instrumento.
ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER A conta do usuário com o integrador foi fechada. A conta pode ter sido invadida. Esse valor de retorno fará com que o instrumento do usuário seja fechado com o Google. O usuário será obrigado a adicionar um novo instrumento.
ACCOUNT_CLOSED_FRAUD A conta do usuário do integrador foi encerrada por fraude. Esse valor de retorno fará com que o instrumento do usuário seja fechado com o Google. O usuário será obrigado a adicionar um novo instrumento.
ACCOUNT_ON_HOLD A conta do usuário está retida.
OTP_NOT_MATCHED A OTP não corresponde ao que o integrador enviou.
OTP_ALREADY_USED A OTP já foi usada.
CAPTURE_REQUEST_EXPIRED Demorou muito tempo para o integrador captar os fundos do usuário. O Google tratará essa recusa como um estado final. Desse modo, o integrador deve garantir que os fundos do usuário não sejam capturados depois ou que o usuário seja automaticamente reembolsado se a captura for bem-sucedida.
INVALID_PIN O usuário forneceu um PIN inválido.
OS_LOCK_FAILED Esse fluxo de pagamento exige um desafio de bloqueio do SO, e o usuário não conseguiu desbloquear o dispositivo.
PIN_ENTRY_ATTEMPTS_EXHAUSTED Esse fluxo de pagamento requer a inserção do PIN de usuário. O usuário não conseguiu inserir o PIN várias vezes até ficar sem tempo.
USER_EXITED_PAYMENT_FLOW O usuário cancelou toda a tentativa de pagamento, seja na fechadura 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 em estado estável. Ele é usado como um código "pega-tudo" temporário para ser usado quando o integrador encontrar 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 para usar ou negocia a adição de um novo código de resultados a essa especificação.

É importante ressaltar que esse código de recusa é um declínio real. É uma recusa permanente no que diz respeito ao Google. 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 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.

Resultado

Objeto de resultado bruto.

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

string

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

rawCode

string

OBRIGATÓRIO: código bruto do integrador ou 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 de resultado da captura foi processada.