Method: captureResultNotification

capture 또는 asynchronousCapture 메서드를 호출한 후 캡처 결과를 Google에 알립니다.

captureResult 값은 이 captureRequestId에 멱등성이므로 이후에 이 메서드를 호출해도 이 값을 변경할 수 없습니다.

요청을 처리하는 동안 엔드포인트에서 오류가 발생하면 이 엔드포인트의 응답은 ErrorResponse 유형이 됩니다.

이 메서드가 HTTP 200을 반환하지 않는 경우 이 쿼리에 대한 응답이 비어 있을 수 있습니다. 명확한 설명이 포함된 ErrorResponse를 사용하여 공격자가 다른 통합업체의 결제 통합업체 계정 식별자를 이해할 수 있는 상황에서는 응답 본문이 비어 있습니다. 서명 키가 일치하지 않거나 결제 통합업체 식별자를 찾을 수 없거나 암호화 키를 알 수 없는 경우 이 메서드는 본문이 비어 있는 HTTP 404를 반환합니다. 요청 서명을 확인할 수 있는 경우 오류에 관한 추가 정보가 응답 본문에 반환됩니다.

요청의 예는 다음과 같습니다.


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

응답 예는 다음과 같습니다.


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

HTTP 요청

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

요청 본문

요청 본문에는 다음과 같은 구조의 데이터가 포함됩니다.

JSON 표현
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "captureRequestId": string,
  "captureResult": {
    object (CaptureResult)
  },
  "paymentIntegratorTransactionId": string
}
필드
requestHeader

object (RequestHeader)

필수: 모든 요청의 공통 헤더입니다.

paymentIntegratorAccountId

string

필수: 캡처가 발생한 결제 통합업체 계정 식별자입니다.

captureRequestId

string

필수: 이 거래의 고유 식별자입니다. 이 요청과 연결된 capture 또는 asynchronousCapture 호출 중에 Google에서 생성한 requestId입니다.

최대 길이가 100자인 문자열이며 'a~z', 'A~Z', '0-9', ':', '-', '_' 문자만 포함됩니다.

captureResult

object (CaptureResult)

REQUIRED: 이 캡처의 결과입니다.

paymentIntegratorTransactionId

string

선택사항: 이 식별자는 통합업체별로 지정되며 통합업체에서 생성합니다. 이 ID는 통합업체가 이 트랜잭션을 아는 식별자입니다.

편의를 위해 송금 세부정보에 이 식별자가 포함되어 있습니다.

응답 본문

captureResultNotification 메서드의 응답 객체입니다.

성공할 경우 응답 본문에 다음 구조의 데이터가 포함됩니다.

JSON 표현
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "result": enum (CaptureResultNotificationResultCode)
}
필드
responseHeader

object (ResponseHeader)

REQUIRED: 모든 응답의 공통 헤더입니다.

result

enum (CaptureResultNotificationResultCode)

REQUIRED: 이 호출의 결과입니다.

CaptureResult

캡처의 최종 결과에 관한 정보입니다.

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.
}
필드
captureResultCode

enum (CaptureResultCode)

REQUIRED: 이 캡처의 결과 코드입니다.

rawResult

object (RawResult)

선택사항: 캡처의 원시 결과입니다. Google의 위험 엔진 및 분석에 정보를 제공하는 데 사용됩니다. 거부 코드 매핑 시 데이터가 손실될 수 있습니다. 통합업체는 Google에 원시 코드를 제공할 수 있습니다. 예를 들어 신용카드 게이트웨이 (통합업체)는 이 입력란을 사용하여 VISA 네트워크에서 수신한 거부 코드를 Google에 정확히 알릴 수 있습니다. 이 경우 scope는 'visa'가 됩니다. 그리고 rawCode는 VISA 네트워크가 반환한 값이 됩니다.

이 값은 resultSUCCESS이 아닌 경우 필수입니다.

통합 필드 FailureDetail.

FailureDetail는 다음 중 하나여야 합니다.

transactionMaxLimit

string (Int64Value format)

선택사항: captureResultCodeCHARGE_EXCEEDS_TRANSACTION_LIMIT이면 허용되는 최대 거래 값입니다. 구조화된 사용자 대상 메시지 및 거부율 분석에 사용됩니다.

이 값은 원래 capture 또는 asynchronousCapture 메서드 호출과 동일한 currencyCode마이크로입니다.

transactionMinLimit

string (Int64Value format)

선택사항: captureResultCodeCHARGE_UNDER_TRANSACTION_LIMIT이면 허용되는 최소 거래의 값입니다. 구조화된 사용자 대상 메시지 및 거부율 분석에 사용됩니다.

이 값은 원래 capture 또는 asynchronousCapture 메서드 호출과 동일한 currencyCode마이크로입니다.

currentBalance

string (Int64Value format)

선택사항: Result가 INSUFFICIENT_FUNDS인 경우 사용자 계정에서 현재 사용 가능한 잔액 (마이크로)입니다. 구조화된 사용자 대상 메시지에 사용됩니다.

이 값의 통화는 요청의 currencyCode와 동일해야 합니다.

CaptureResultCode

캡처의 결과 코드입니다.

열거형
UNKNOWN_RESULT 이 기본값을 설정하면 안 됩니다.
SUCCESS 캡처가 완료되었습니다.
CHARGE_UNDER_TRANSACTION_LIMIT 요청된 캡처 금액이 통합업체의 최소 트랜잭션당 금액을 충족하지 않습니다. 이 코드를 사용하는 경우 사용자 메시지 전송을 위해 transactionMinLimit 필드에 최소 거래 금액을 입력합니다.
CHARGE_EXCEEDS_TRANSACTION_LIMIT 요청된 캡처 금액이 통합업체의 최대 트랜잭션당 한도를 초과합니다. 이 코드가 사용되는 경우 사용자 메시지 전송을 위해 transactionMaxLimit 필드에 거래 한도를 채웁니다.
CHARGE_EXCEEDS_DAILY_LIMIT 사용자 계정이 일일 한도를 초과했으므로 지금은 구매에 사용할 수 없습니다.
CHARGE_EXCEEDS_MONTHLY_LIMIT 사용자 계정이 월별 한도를 초과했으므로 지금은 구매에 사용할 수 없습니다.
INSUFFICIENT_FUNDS 계정의 잔액이 부족하여 캡처를 보장할 수 없습니다.
SUSPECTED_FRAUD 통합업체에 이 거래가 사기라고 의심할 만한 이유가 있습니다.
ACCOUNT_CLOSED 통합업체에 보류된 사용자 계정이 해지되었습니다. 이 반환 값으로 인해 사용자의 결제 수단이 Google에서 종료됩니다. 사용자는 새 결제 수단을 추가해야 합니다.
ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER 통합업체와 연결된 사용자 계정이 폐쇄되었으며 계정이 탈취된 것으로 의심됩니다. 이 반환 값으로 인해 사용자의 결제 수단이 Google에서 종료됩니다. 사용자는 새 결제 수단을 추가해야 합니다.
ACCOUNT_CLOSED_FRAUD 통합업체에 보류된 사용자의 계정이 사기로 인해 해지되었습니다. 이 반환 값으로 인해 사용자의 결제 수단이 Google에서 종료됩니다. 사용자는 새 결제 수단을 추가해야 합니다.
ACCOUNT_ON_HOLD 사용자의 계정이 보류 중입니다.
OTP_NOT_MATCHED OTP가 통합업체가 보낸 내용과 일치하지 않습니다.
OTP_ALREADY_USED OTP가 이미 사용되었습니다.
CAPTURE_REQUEST_EXPIRED 통합업체가 사용자의 자금을 캡처하는 데 너무 오래 걸렸습니다. Google은 이러한 거부를 최종 상태로 취급하므로 통합업체는 사용자의 자금이 나중에 캡처되지 않도록 하거나 캡처가 성공적으로 완료된 경우 사용자에게 자동으로 환불되도록 해야 합니다.
INVALID_PIN 사용자가 잘못된 PIN을 제공했습니다.
OS_LOCK_FAILED 이 결제 절차를 진행하려면 OS 잠금 질문이 필요하며 사용자가 기기 잠금 해제에 실패했습니다.
PIN_ENTRY_ATTEMPTS_EXHAUSTED 이 결제 절차를 진행하려면 사용자 PIN을 입력해야 합니다. 사용자가 PIN 입력에 여러 번 실패하여 재시도 횟수를 초과했습니다.
USER_EXITED_PAYMENT_FLOW 사용자가 OS 잠금 또는 PIN 입력 화면에서 전체 결제 시도를 취소했습니다.
MONTHLY_FREQUENCY_LIMIT_EXCEEDED 월별 거래 시도 한도를 초과했으므로 사용자 계정을 현재 구매에 사용할 수 없습니다.
DECLINED_BY_ISSUER

이 거부 코드를 안정적인 상태로 사용해서는 안 됩니다. 이 코드는 통합업체가 사용자 결제 수단의 기본 발급기관에서 알 수 없는 거부 코드를 발견했을 때 사용할 임시 포괄적 코드입니다. 이 결과 코드는 통합업체가 사용할 보다 적절한 결과 코드를 결정하거나 이 사양에 대한 새 결과 코드 추가를 협상하는 동안 사용할 수 있습니다.

이러한 거부 코드는 실제 거부 코드라는 점이 중요합니다. Google의 입장에서 보면 영구적인 거부입니다. 통합업체가 이를 반환하면 발급기관 코드의 실제 의미를 추적하고 코드가 실제로 SUCCESS를 의미하는 것으로 판명되면 사용자에게 환불해야 합니다.

이 거부 코드가 동일한 기본 거부 코드에 특정 일수 이상 사용되는 경우 Google에서는 이를 버그로 간주하고 버그 수정과 관련된 계약상의 불이익과 관련하여 적절하게 추적합니다.

RawResult

원시 결과 객체입니다.

JSON 표현
{
  "scope": string,
  "rawCode": string
}
필드
scope

string

선택사항: rawCode의 범위이며 비워둘 수 있습니다.

rawCode

string

필수: 통합업체 또는 그 내부의 하위 시스템의 원시 코드입니다.

CaptureResultNotificationResultCode

captureResultNotification 메서드의 결과 코드

열거형
UNKNOWN_RESULT 이 기본값을 설정하면 안 됩니다.
SUCCESS 캡처 결과 알림이 처리되었습니다.