A API segue um conjunto de padrões de APIs HTTP e oferece suporte idempotência para facilitar um processo integração total.
URLs hospedados pelo Google
A documentação de cada método hospedado pelo Google fornece um URL base, que inclui o nome do método e o número da versão principal. O URL completo é criado adicionando o ID da conta do integrador de pagamentos do autor da chamada ao fim. Por exemplo, a documentação do método echo hospedado pelo Google especifica o URL:
https://vgw.googleapis.com/secure-serving/gsp/v1/echo
Se o ID da conta do integrador de pagamentos do autor da chamada for INTEGRATOR_1
, ele vai adicionar
ao final do URL para formar:
https://vgw.googleapis.com/secure-serving/gsp/v1/echo/INTEGRATOR_1
URLs hospedados por parceiros
A documentação de cada método de API hospedado por parceiro fornece um URL base, que
inclui o nome do método e o número da versão principal. Você não deve incluir o parâmetro
ID da conta do integrador de pagamentos (PIAID
)
nos URLs hospedados.
Ambientes sandbox e de produção
O Google hospeda as APIs Standard Payments no sandbox (para desenvolvimento e testes) e produção. Solicitações no ambiente de sandbox do Google não resultam em responsabilidade financeira real. A sandbox e ambientes de produção são completamente separados e não compartilham chaves ou informações da transação.
O Google espera que seu sandbox esteja sempre disponível, já que usaremos o sandbox para testar mudanças e novos recursos.
Caminho base do sandbox do Google
https://vgw.sandbox.google.com/secure-serving/gsp/
Caminho base de produção do Google
https://vgw.googleapis.com/secure-serving/gsp/
Neste guia, serão usados os endpoints de produção.
Tipo de conteúdo e codificação
Os payloads de mensagens que usam criptografia PGP precisam usar o tipo de conteúdoapplication/octet-stream; charset=utf-8
. Os corpos das solicitações de PGP precisam
ser enviada usando a codificação base64url, conforme definido no
rfc4648 §5.
Os payloads de mensagens que usam criptografia JWE precisam usar o tipo de conteúdo
application/jose; charset=utf-8
A opção de serialização compacta
suportado por JWE/JWS lida com a codificação do corpo da solicitação final.
Códigos de status HTTP
As APIs Standard Payments foram projetadas para retornar um código de status HTTP 200
.
para todas as solicitações que podem ser processadas pelo servidor. Isso inclui
solicitações bem-sucedidas e recusadas da perspectiva das empresas
lógica do aplicativo. As solicitações que não podem ser processadas não devem resultar em uma
Código de status HTTP 200
, já que eles representam um erro entre o Google e o
parceiro. Em vez disso, a resposta da API deve usar o status HTTP apropriado
códigos abaixo com um objeto ErrorResponse
opcional.
Erros HTTP e motivos | |
---|---|
400 |
BAD REQUEST
O cliente especificou um argumento inválido. Ele também pode ser retornado se a operação for rejeitada porque o sistema não está em um estado necessário para a execução da operação. Use se novas tentativas da solicitação não forem bem-sucedidas até que o estado do sistema foi explicitamente corrigido. Por exemplo, se uma solicitação de reembolso falha porque ele faz referência a uma captura que não existe, a nova tentativa não terá sucesso. até que a captura exista no sistema de integradores.
|
401 |
UNAUTHORIZED
A solicitação não possui credenciais de autenticação válidas para o operação Por exemplo, assinaturas inválidas ou desconhecidas devem retornar 401. |
403 |
FORBIDDEN / PERMISSION DENIED
O autor da chamada não tem permissão para executar a operação especificada. |
404 |
NOT FOUND
Algumas entidades solicitadas, como pagamento ou usuário, não foram encontradas. |
409 |
CONFLICT / ABORTED
A operação foi cancelada, normalmente devido a um problema de simultaneidade, como falhas de verificação do sequenciador, cancelamentos de transação etc. |
412 |
PRECONDITION FAILED
Esse código deve ser usado em situações em que uma chave de idempotência está sendo reutilizados com parâmetros diferentes. |
429 |
RESOURCE EXHAUSTED / TOO MANY REQUESTS
Alguns recursos do sistema se esgotaram. |
499 |
CANCELLED
A operação foi cancelada, normalmente pelo autor da chamada. |
500 |
INTERNAL ERROR
Erros internos. Isso significa que algumas invariantes esperadas pelo sistema foi corrompida. |
501 |
UNIMPLEMENTED
A operação não foi implementada, suportada ou ativada neste serviço. |
503 |
UNAVAILABLE
O serviço não está disponível no momento. É muito provável que seja um e pode ser corrigido ao tentar novamente. |
504 |
GATEWAY TIMEOUT / DEADLINE EXCEEDED
O prazo expirou antes que a operação fosse concluída. Para operações que alterar o estado do sistema, esse erro poderá ser retornado mesmo se o foi concluída com sucesso. Por exemplo, uma resposta bem-sucedida de um servidor poderia ter atrasado tempo suficiente para que o prazo final e depois ela expira. |
IDempotência da solicitação
A idempotência da solicitação é uma estratégia central usada na API Standard Payments APIs usadas para garantir que as interações de sistema entre o Google e os parceiros sejam robustos e tolerantes a falhas. Solicitações Idempotentes são aquelas que podem ser enviada várias vezes, mas ter o mesmo efeito de uma única solicitação. Essa estratégia facilita a consistência posterior entre os sistemas ao tornar novas tentativas seguras, permitindo que nossos sistemas cheguem a um acordo quanto à o estado atual do recurso.
Nossa API usa idempotência para:
- reduzir problemas de reconciliação, tornando todas as ações facilmente rastreáveis e auditáveis.
- evitar disputas, garantindo que várias solicitações idênticas de mesmo cliente não resultam em um estado final diferente.
- minimizar o estado permitindo que as solicitações sejam compreendidas de forma isolada, permitindo para melhorar o desempenho e a capacidade de processamento removendo a carga do servidor causada a retenção de dados.
- evitar a necessidade de campos adicionais para indicar se uma solicitação é uma nova tentativa.
Exemplos
Exemplo 1: conectividade perdida antes do recebimento da resposta
Cenário:
- O Google envia uma solicitação ao integrador.
- O servidor do integrador recebe essa solicitação e a processa com sucesso.
- O servidor do Google fica sem energia antes de receber a resposta na etapa 2.
- A energia do servidor do Google é restaurada e a mesma solicitação é enviada
com os mesmos parâmetros (o mesmo ID e detalhes da solicitação, mas atualizados
requestTimestamp
) para o servidor do integrador.
Resultado:
Nesse caso, o servidor do integrador precisa enviar a mesma resposta em
etapa 2, já que todos os parâmetros, exceto responseTimestamp
, são iguais.
O efeito colateral ocorre apenas uma vez, na etapa 2. A etapa 4 não tem efeito colateral.
Exemplo 2: solicitação enviada a um servidor em manutenção
Cenário:
- O banco de dados do servidor do integrador está inativo para manutenção.
- O Google envia uma solicitação ao integrador.
- O integrador retorna corretamente o código de status
UNAVAILABLE
. - O servidor do Google recebe a resposta e programa uma nova tentativa.
- O banco de dados do servidor do integrador volta a ficar on-line.
- O Google reenvia a solicitação da etapa 2 (mesmo ID e detalhes da solicitação)
mas atualizou
requestTimestamp
). Observe que os IDs das duas solicitações deve ser o mesmo. - O servidor do integrador recebe a solicitação e retorna um código de status OK com resposta completa.
Resultado:
Nesse caso, o servidor do integrador precisa processar a solicitação na etapa 7 e não
retornar HTTP 503
(UNAVAILABLE
). Em vez disso, o servidor do integrador deve
processar a solicitação e retornar OK com a mensagem adequada. Embora
o sistema é UNAVAILABLE
O Google pode fazer solicitações repetidas semelhantes a
etapa 2. Cada solicitação deve resultar em uma mensagem semelhante à etapa 3.
As etapas 6 e 7 ocorrerão depois.
Exemplo 3: a mensagem repetida não corresponde à mensagem inicial devido a um erro de recuperação
Cenário:
- O Google envia uma solicitação ao integrador.
- O servidor do integrador recebe essa solicitação e a processa com sucesso.
- O servidor do Google fica sem energia antes de receber a resposta na etapa 2.
- A energia do servidor do Google é restaurada e tenta enviar a mesma solicitação. mas alguns dos parâmetros são diferentes.
Resultado:
Nesse caso, o servidor do integrador responderá com um HTTP 412
.
(PRECONDITION FAILED
), que indica ao Google que há um erro
neste sistema.