이 API는 일련의 HTTP API 표준을 따르며 멱등성이 있어서 통합하지 않아도 됩니다
Google 호스팅 URL
각 Google 호스팅 방법에 대한 문서에서는 기본 URL을 제공하며 메서드 이름과 주 버전 번호가 포함됩니다. 전체 URL이 생성됨 호출자의 결제 통합업체 계정 ID를 있습니다. 예를 들어 Google 호스팅 에코 메서드에 관한 문서는 다음과 같습니다. 는 URL을 지정합니다.
https://vgw.googleapis.com/secure-serving/gsp/v1/echo
발신자의 결제 통합업체 계정 ID가 INTEGRATOR_1
인 경우 다음을 추가합니다.
를 추가하여 다음 양식을 작성합니다.
https://vgw.googleapis.com/secure-serving/gsp/v1/echo/INTEGRATOR_1
파트너 호스팅 URL
각 파트너 호스팅 API 메서드에 대한 문서에서는 기본 URL을 제공합니다.
메서드 이름과 주 버전 번호가 포함됩니다. 피처스토어에
결제 통합업체 계정 ID (PIAID
)
을 입력합니다.
샌드박스 및 프로덕션 환경
Google은 샌드박스 (개발 및 결제용)에서 Standard Payments API를 프로덕션에 사용할 수 있습니다. Google 샌드박스 환경의 요청 실제 재정적 책임이 발생하지 않습니다. 샌드박스와 프로덕션 환경은 완전히 별개이며 키나 거래 정보
Google은 샌드박스가 지속적으로 사용 가능할 것으로 첫 번째 변경사항과 새로운 기능을 테스트할 수 있습니다.
Google의 샌드박스 기본 경로
</ph>https://vgw.sandbox.google.com/secure-serving/gsp/
Google의 프로덕션 기본 경로
</ph>https://vgw.googleapis.com/secure-serving/gsp/
이 가이드에서는 프로덕션 엔드포인트를 사용합니다.
콘텐츠 유형 및 인코딩
PGP 암호화를 사용하는 메시지 페이로드는 콘텐츠 유형을 사용해야 합니다.application/octet-stream; charset=utf-8
PGP 요청 기관은
에 정의된 대로 base64url 인코딩을 사용하여 전송되어야 합니다.
rfc4648 §5
JWE 암호화를 사용하는 메시지 페이로드는 콘텐츠 유형을 사용해야 합니다.
application/jose; charset=utf-8
입니다. 압축 직렬화 옵션
최종 요청 본문의 인코딩을 처리합니다.
HTTP 상태 코드
Standard Payments API는 HTTP 200
상태 코드를 반환하도록 설계되었습니다.
서버에서 처리할 수 있는
모든 요청에 사용합니다 여기에는
비즈니스 관점에서 성공 및 거부된 요청을 처리하거나
애플리케이션 로직에
액세스할 수 있습니다 처리할 수 없는 요청은
HTTP 200
상태 코드는 Google과
있습니다. 대신 API 응답은
선택적 ErrorResponse
객체와 함께 아래 코드를 사용하세요.
HTTP 오류 및 이유 | |
---|---|
400 |
BAD REQUEST
클라이언트가 잘못된 인수를 지정했습니다. 이는 시스템이 작업 실행에 필요한 상태가 아닙니다. 시스템 상태가 될 때까지 요청 재시도가 성공할 수 없는 경우에 사용하세요. 명시적으로 수정되었습니다. 예를 들어 다음과 같은 이유로 환불 요청이 실패한 경우 존재하지 않는 캡처를 참조하므로 재시도할 수 없습니다. 스테이트리스(Stateless) 컨테이너를 유지할 수 있습니다
|
401 |
UNAUTHORIZED
요청에 연산으로 해석됩니다. 예를 들어 유효하지 않은 서명이나 알 수 없는 서명은 401을 반환합니다 |
403 |
FORBIDDEN / PERMISSION DENIED
호출자에 지정한 작업을 실행할 권한이 없습니다. |
404 |
NOT FOUND
결제 또는 사용자와 같은 일부 요청 항목을 찾을 수 없습니다. |
409 |
CONFLICT / ABORTED
작업이 취소되었습니다. 일반적으로 다음과 같은 동시 실행 문제로 인해 발생합니다. 시퀀서 검사 실패, 트랜잭션 취소 등 |
412 |
PRECONDITION FAILED
이 코드는 멱등성 키가 사용되고 있는 상황에서 다른 매개변수로 재사용됩니다. |
429 |
RESOURCE EXHAUSTED / TOO MANY REQUESTS
일부 시스템 리소스가 소진되었습니다. |
499 |
CANCELLED
작업이 취소되었습니다. 대개 호출자에 의해 취소됩니다. |
500 |
INTERNAL ERROR
내부 오류가 발생했습니다. 즉, 기본 시스템에서 예상하는 일부 불변량 깨졌습니다. |
501 |
UNIMPLEMENTED
이 서비스에서 작업이 구현되거나 지원되지 않거나 사용 설정되지 않았습니다. |
503 |
UNAVAILABLE
현재 서비스를 사용할 수 없습니다. 일시적인 오류일 가능성이 높으며 다시 시도하여 수정할 수 있습니다. |
504 |
GATEWAY TIMEOUT / DEADLINE EXCEEDED
작업을 완료하기 전에 기한이 지났습니다. Kubernetes에서 변경할 수 없는 경우, 이 오류는 작업이 완료되었습니다. 예를 들어 성공적인 응답 서버로부터 얻는 데이터가 전송되는 데 걸리는 시간만큼 지연되었을 수 있습니다. 만료됩니다. |
요청 멱등성
요청 멱등성은 표준 결제에서 가장 중요한 전략입니다. Google과 파트너 간의 시스템 상호작용을 보장하는 데 사용되는 API는 내결함성을 제공합니다 멱등적 요청은 다른 요청에도 여러 번 전송될 수 있지만 단일 요청과 효과가 같습니다. 이 전략은 안전하게 재시도하여 Google 시스템이 리소스의 상태를 나타냅니다
Google Cloud API는 멱등성을 활용하여 다음을 수행합니다.
- 모든 작업을 쉽게 추적하고 추적할 수 있도록 하여 조정 문제를 줄입니다. 감사할 수 있습니다
- 서로 동일한 여러 요청이 전송되도록 하여 동일한 클라이언트가 다른 최종 상태로 이어지지 않습니다.
- 요청이 격리된 상태로 이해될 수 있도록 하여 상태를 최소화하고, 서버 부하를 제거하여 성능 및 처리량 개선을 위해 데이터 보관
- 요청이 재시도인지 여부를 나타내기 위해 추가 필드를 사용하지 않아도 됩니다.
예
예 1: 응답을 수신하기 전에 연결 끊김
시나리오:
- Google이 통합업체에 요청을 보냅니다.
- 통합업체 서버가 이 요청을 받아 성공적으로 처리합니다.
- Google 서버가 2단계에서 응답을 받기 전에 전원이 끊깁니다.
- Google의 서버 전원이 복구되고 동일한 요청이 전송됩니다.
매개변수가 모두 같지만 요청 ID와 요청 세부정보는 동일하지만
requestTimestamp
)를 통합업체의 서버로 전송합니다.
결과:
이 경우 통합업체 서버는
2단계입니다. responseTimestamp
를 제외한 모든 매개변수가 동일하기 때문입니다.
부작용은 2단계에서 한 번만 발생합니다. 4단계에는 부작용이 없습니다.
예 2: 유지보수가 진행 중인 서버에 전송된 요청
시나리오:
- 통합업체 서버의 데이터베이스가 유지보수를 위해 중단되었습니다.
- Google이 통합업체에 요청을 보냅니다.
- 통합업체가
UNAVAILABLE
상태 코드를 올바르게 반환합니다. - Google 서버가 응답을 수신하고 재시도를 예약합니다.
- 통합업체 서버의 데이터베이스가 다시 온라인 상태가 됩니다.
- Google이 2단계에서 요청을 다시 보냅니다 (동일한 요청 ID 및 요청 세부정보).
requestTimestamp
)를 업데이트했습니다. 두 요청의 요청 ID는 는 동일해야 합니다. - 통합업체 서버가 요청을 수신하고 그에 따라 OK 상태 코드를 반환합니다. 완전한 응답을 제공할 수 있습니다.
결과:
이 경우 통합업체 서버는 7단계에서 요청을 처리해야 하며
HTTP 503
(UNAVAILABLE
)를 반환합니다. 대신 통합업체 서버는
요청을 처리하고 적절한 메시지와 함께 OK를 반환합니다. 참고로
UNAVAILABLE
입니다. Google은 다음과 같이 반복적으로 요청할 수 있습니다.
있습니다. 각 요청에서 3단계와 비슷한 메시지를 표시합니다.
결국 6단계와 7단계가 발생합니다.
예 3: 복구 오류로 인해 재시도한 메시지가 초기 메시지와 일치하지 않음
시나리오:
- Google이 통합업체에 요청을 보냅니다.
- 통합업체 서버가 이 요청을 받아 성공적으로 처리합니다.
- Google 서버가 2단계에서 응답을 받기 전에 전원이 끊깁니다.
- Google의 서버 전원이 복구되고 동일한 요청을 전송하려고 시도합니다. 안타깝게도 일부 매개변수가 다릅니다.
결과:
이 경우 통합업체 서버는 HTTP 412
로 응답합니다.
(PRECONDITION FAILED
) 오류 코드
확인할 수 있습니다.