Method: getDisputeInquiryReport

결제의 잠재적 분쟁에 관해 고객과의 고객 지원 대화를 진행하는 데 도움이 되는 정보가 포함된 보고서를 받습니다.

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

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

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


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 1,
      "revision": 0
    },
    "requestId": "HsKv5pvtQKTtz7rdcw1YqE",
    "requestTimestamp": "1519996751331"
  },
  "paymentIntegratorAccountId": "InvisiCashUSA",
  "paymentLookupCriteria": {
    "googleTransactionReferenceNumberCriteria": {
      "googleTransactionReferenceNumber": "714545417102363157911822",
      "authorizationCode": "111111"
    }
  },
  "existingGoogleClaimId": "138431383281",
  "requestOriginator": {
    "organizationId": "ISSUER_256",
    "organizationDescription": "Community Bank of Some City",
    "agentId": "982749"
  }
}

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


{
  "responseHeader": {
    "responseTimestamp": "1519996752221"
  },
  "result": "SUCCESS",
  "googleClaimId": "138431383281",
  "report": {
    "customerAccount": {
      "customerEmail": "example@gmail.com",
      "customerName" : "Example Customer"
    },
    "order": {
      "timestamp": "1517992525972",
      "orderId": "SOP.8976-1234-1234-123456..99",
      "currencyCode": "USD",
      "subTotalAmount": "206990000",
      "totalAmount": "212990000",
      "shippingAddress": {
        "name": "Example Customer",
        "addressLine": ["123 Main St"],
        "localityName": "Springfield",
        "administrativeAreaName": "CO",
        "postalCodeNumber": "80309",
        "countryCode": "US"
      },
      "taxes": [
        {
          "description": "Colorado Sales Tax",
          "amount": "6000000"
        }
      ],
      "items": [
        {
          "description": "Super cool gizmo",
          "merchant": "HTC",
          "googleProductName": "Google Store",
          "quantity": "2",
          "totalPrice": "198000000"
        },
        {
          "description": "Gizmo charger",
          "merchant": "HTC",
          "googleProductName": "Google Store",
          "quantity": "1",
          "totalPrice": "8990000"
        }
      ]
    },
    "payment": {
      "billingAddress" : {
        "name": "Example Customer",
        "addressLine": ["123 Main St"],
        "localityName": "Springfield",
        "administrativeAreaName": "CO",
        "postalCodeNumber": "80309",
        "countryCode": "US"
      },
      "amount": "100000000",
      "refunds": [
        {
          "amount": "9250000",
          "initiatedTimestamp": "1518811245384"
        }
      ],
      "cardDetails": {
        "authResult": "APPROVED"
      }
    }
  }
}

HTTP 요청

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

요청 본문

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

JSON 표현
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "paymentLookupCriteria": {
    object (PaymentLookupCriteria)
  },
  "existingGoogleClaimId": string,
  "requestOriginator": {
    object (RequestOriginator)
  }
}
필드
requestHeader

object (RequestHeader)

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

paymentIntegratorAccountId

string

필수: 발신자 및 이 상호작용에 대한 관련 계약 제약조건을 식별하는 결제 통합업체 계정 식별자입니다.

paymentLookupCriteria

object (PaymentLookupCriteria)

필수: 이 문의에서 조회되어야 하는 결제를 나타내는 기준입니다.

existingGoogleClaimId

string

선택사항: 이전 getDisputeInquiryReport 호출에서 반환한 Google에서 생성한 문자열로, 이 고객의 이의 제기 신청을 고유하게 식별합니다.

소유권 주장 ID가 없으면 새 소유권 주장 ID가 생성됩니다. 동일한 고객 이의 제기가 이어지는 경우 호출자는 이전 getDisputeInquiryReport 호출에서 반환된 googleClaimId를 제공할 수 있습니다.

여기에 입력되거나 생성된 소유권 주장 ID는 응답의 googleClaimId 필드에 반환됩니다.

이전 getDisputeInquiryReport 호출에서 반환되지 않은 googleClaimId를 제공하는 것은 유효하지 않습니다. 이 경우 HTTP 400 잘못된 요청이 반환됩니다.

requestOriginator

object (RequestOriginator)

필수: 이 요청을 보낸 조직 또는 조직의 하위 그룹에 대한 정보입니다.

응답 본문

getDisputeInquiryReport 메서드의 응답 페이로드입니다.

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

JSON 표현
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "result": enum (GetDisputeInquiryReportResultCode),
  "googleClaimId": string,
  "report": {
    object (PurchaseReport)
  }
}
필드
responseHeader

object (ResponseHeader)

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

result

enum (GetDisputeInquiryReportResultCode)

필수: 이 호출의 결과입니다.

googleClaimId

string

선택사항: 이 고객 이의 제기를 고유하게 식별하는 Google 생성 문자열입니다. (result가 성공인 경우에만 표시됩니다.)

요청에 existingGoogleClaimId가 채워져 있으면 동일한 값이 됩니다. 그렇지 않으면 새로 생성되는 값입니다. 동일한 고객 이의 제기의 일부인 경우 향후 getDisputeInquiryReport 요청에 이 값이 제공될 수 있습니다.

report

object (PurchaseReport)

선택사항: 요청에 명시된 지급의 이의 제기와 관련된 세부정보입니다. (result가 성공인 경우에만 표시됩니다.)

RequestHeader

서버로 전송되는 모든 요청에 정의된 헤더 객체입니다.

JSON 표현
{
  "requestId": string,
  "requestTimestamp": string,
  "userLocale": string,
  "protocolVersion": {
    object (Version)
  }
}
필드
requestId

string

필수: 이 요청의 고유 식별자입니다.

이 문자열은 최대 길이가 100자(영문 기준)이며 'a~z', 'A~Z', '0~9', ':', '-', '_' 문자만 포함합니다.

requestTimestamp

string (int64 format)

필수: 이 요청의 타임스탬프로, 에포크 이후 경과된 밀리초로 표시됩니다. 수신자는 이 타임스탬프가 '현재'의 ±60초인지 확인해야 합니다. 이 요청 타임스탬프는 재시도 시 멱등성이 없습니다.

userLocale
(deprecated)

string

지원 중단됨: 2자 또는 3자로 된 ISO 639-2 Alpha 3 언어 코드로, 하이픈과 ISO 3166-1 Alpha-2 국가 코드(예: 'pt', 'pt-BR', 'fil', 'fil-PH')를 선택적으로 추가할 수 있습니다. 응답에서 userMessage 필드를 만드는 데 사용합니다.

protocolVersion

object (Version)

필수: 이 요청의 버전입니다.

버전

기본 a.b.c 버전 구조의 구조화된 형식인 버전 객체 동일한 번호의 메이저 버전은 호환성이 보장됩니다. 부 버전 및 버전은 예고 없이 자주 변경될 수 있습니다. 통합자는 동일한 주 버전에 대한 모든 요청을 지원해야 합니다.

JSON 표현
{
  "major": integer,
  "minor": integer,
  "revision": integer
}
필드
major

integer

필수: 메이저 버전입니다. 버전이 다르면 호환성 요청이 표시되어도 호환성이 보장되지 않습니다.

minor

integer

필수: 마이너 버전입니다. 중요한 버그 수정을 나타냅니다.

revision

integer

필수: 마이너 버전입니다. 사소한 버그 수정을 나타냅니다.

PaymentLookupCriteria

결제를 고유하게 조회할 수 있는 기준의 컨테이너입니다. 하나의 구성원 필드만 채워야 합니다.

JSON 표현
{

  // Union field criteria can be only one of the following:
  "arnCriteria": {
    object (ArnCriteria)
  },
  "googleTransactionReferenceNumberCriteria": {
    object (GoogleTransactionReferenceNumberCriteria)
  }
  // End of list of possible types for union field criteria.
}
필드

통합 필드 criteria.

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

arnCriteria

object (ArnCriteria)

선택사항: ARN (Acquirer Reference Number)을 기준으로 조회합니다.

googleTransactionReferenceNumberCriteria

object (GoogleTransactionReferenceNumberCriteria)

선택사항: Google 거래 참조 번호를 기준으로 조회합니다.

ArnCriteria

ARN (Acquirer Reference Number)을 기반으로 한 결제 조회 기준입니다.

JSON 표현
{
  "acquirerReferenceNumber": string,
  "authorizationCode": string
}
필드
acquirerReferenceNumber

string

필수: 결제를 고유하게 식별하는 획득자 참조 번호 (ARN)입니다. 23자리 숫자여야 합니다.

authorizationCode

string

필수: 거래의 승인 코드입니다.

GoogleTransactionReferenceNumberCriteria

Google에서 생성한 거래 참조 번호를 토대로 한 결제 조회 기준

JSON 표현
{
  "googleTransactionReferenceNumber": string,
  "authorizationCode": string
}
필드
googleTransactionReferenceNumber

string

필수: 결제를 고유하게 식별하는 Google 생성 거래 참조 번호입니다.

authorizationCode

string

필수: 거래의 승인 코드입니다.

RequestOriginator

이 요청이 발생한 조직 또는 조직 하위 그룹(선택사항)에 대한 정보입니다. 이를 통해 Google은 문제나 악용을 식별하고 paymentIntegratorAccountId보다 더 세분화된 수준에서 제어 기능을 구현할 수 있습니다. 이 방법은 호출자가 여러 외부 클라이언트의 요청을 제공하는 중개 서비스 제공업체인 경우 특히 중요합니다.

JSON 표현
{
  "organizationId": string,
  "organizationDescription": string,
  "agentId": string
}
필드
organizationId

string

필수: 이 요청이 시작된 회사, 조직 또는 조직 그룹의 식별자입니다. paymentIntegratorAccountId 내에서 고유해야 합니다.

organizationDescription

string

필수: 조직과 관련하여 Google 직원과 통합업체 간의 커뮤니케이션을 용이하게 하는 데 사용할 수 있는, 사람이 읽을 수 있는 조직 이름 또는 설명입니다.

agentId

string

선택사항: 이 요청이 발생한 organizationId에 의해 식별된 조직의 특정 에이전트 (직원)의 고유 식별자입니다. organizationId 내에서 고유해야 합니다.

GetDisputeInquiryReportResultCode

getDisputeInquiryReport 메서드 호출의 결과입니다.

열거형
UNKNOWN_RESULT 이 기본값을 설정해서는 안 됩니다.
SUCCESS 결제 내역이 확인되어 보고서가 제공됩니다.
PAYMENT_NOT_FOUND 요청하신 결제 금액을 찾을 수 없습니다.
PAYMENT_TOO_OLD 요청한 결제가 확인되었지만 결제 기간이 지났기 때문에 보고서가 제공되지 않았습니다.
ORDER_CANNOT_BE_RETURNED 요청된 결제가 존재하지만 반품할 수 없는 주문에 포함되어 있습니다. 소유자의 요청으로 주문이 삭제된 경우가 사유에 포함됩니다.
NO_ADDITIONAL_DETAILS 요청한 결제가 확인되었으나 보고서가 제공되지 않습니다.

PurchaseReport

요청된 결제와 관련된 구매 관련 세부정보가 포함된 보고서

JSON 표현
{
  "customerAccount": {
    object (CustomerAccount)
  },
  "order": {
    object (Order)
  },
  "payment": {
    object (Payment)
  }
}
필드
customerAccount

object (CustomerAccount)

필수: 고객 및 고객 계정에 관한 정보입니다.

order

object (Order)

필수: 결제가 이루어진 주문에 관한 정보입니다.

payment

object (Payment)

선택사항: 결제 관련 정보입니다. 참고: 하나의 주문에 여러 번 결제할 수 있지만 여기에는 원래 요청에서 확인된 결제에 대한 정보만 포함됩니다. 일부 주문 유형에는 사용할 수 없습니다.

CustomerAccount

고객 계정 정보

JSON 표현
{
  "customerEmail": string,
  "customerName": string
}
필드
customerEmail

string

필수: 고객의 Google 계정과 연결된 이메일 주소입니다.

customerName

string

필수: 고객의 이름입니다.

주문

주문에 관한 정보입니다.

JSON 표현
{
  "timestamp": string,
  "orderId": string,
  "currencyCode": string,
  "subTotalAmount": string,
  "totalAmount": string,
  "shippingAddress": {
    object (Address)
  },
  "items": [
    {
      object (Item)
    }
  ],
  "taxes": [
    {
      object (Tax)
    }
  ]
}
필드
timestamp

string (int64 format)

선택사항: 주문이 이루어진 시점의 타임스탬프로, 에포크 이후 경과된 밀리초로 표시됩니다. 일부 주문 유형에는 사용할 수 없습니다.

orderId

string

선택사항: 이 주문을 고유하게 식별하는 문자열입니다. 일부 주문 유형에는 사용할 수 없습니다.

currencyCode

string

선택사항: 이 주문의 모든 금액에 대한 ISO 4217 3자리 통화 코드입니다. 일부 주문 유형에는 사용할 수 없습니다.

subTotalAmount

string (Int64Value format)

OPTIONAL: 이 주문의 세전 총액으로 order.currencyCode에 지정된 통화의 마이크로로 표시됩니다. SUM(items.totalPrice)와 같습니다. 일부 주문 유형에는 사용할 수 없습니다.

totalAmount

string (Int64Value format)

OPTIONAL: 세금을 포함한 이 주문의 총금액으로, order.currencyCode에 지정된 통화의 마이크로로 표시됩니다. subTotalAmount + SUM(taxes.amount)와 같습니다. 일부 주문 유형에는 사용할 수 없습니다.

shippingAddress

object (Address)

OPTIONAL: 이 주문에 포함된 실제 상품의 배송지 주소입니다.

items[]

object (Item)

필수: 이 주문에 포함된 상품의 목록입니다.

taxes[]

object (Tax)

필수: 이 주문에 포함된 상품의 목록입니다. 이 목록은 비어 있을 수 있습니다.

주소

주소에 대한 정보를 보유하는 집입니다.

JSON 표현
{
  "name": string,
  "addressLine": [
    string
  ],
  "localityName": string,
  "administrativeAreaName": string,
  "postalCodeNumber": string,
  "countryCode": string
}
필드
name

string

선택사항: 고객의 성명입니다.

addressLine[]

string

선택사항: 구조화되지 않은 주소 텍스트를 포함합니다.

localityName

string

선택사항: 모호한 용어이지만 일반적으로 주소의 시/군/구 부분을 나타냅니다. 지역이 잘 정의되지 않거나 이 구조에 잘 맞지 않는 지역 (예: 일본 및 중국)에서는 localityName을 비워두고 addressLine을 사용합니다.

예: 미국 도시, IT 코뮌, 영국 우체국

administrativeAreaName

string

선택사항: 이 국가의 최상위 행정 구역 단위입니다. 예: 미국 주, IT 지역, 중국 주, 일본 현

postalCodeNumber

string

선택사항: 이름에도 불구하고 postalCodeNumber 값은 대개 영숫자입니다. 예: '94043', 'SW1W', 'SW1W 9TQ'.

countryCode

string

선택사항: 고객의 주소 국가 코드입니다. ISO-3166-1 Alpha-2여야 합니다.

항목

주문에 포함된 상품에 관한 정보입니다.

JSON 표현
{
  "description": string,
  "merchant": string,
  "quantity": string,
  "totalPrice": string,
  "googleProductName": string
}
필드
description

string

선택사항: 구매한 상품에 관한 설명입니다. 일부 주문 유형에는 사용할 수 없습니다.

merchant

string

필수: 상품의 판매자, 아티스트 또는 제조업체입니다.

quantity

string (Int64Value format)

선택사항: 이 상품의 주문 수량입니다.

정수 수량이 제품에 적용되지 않는 경우 이 필드는 생략됩니다 (예: 측정되는 제품은 소수 수량일 수 있음).

totalPrice

string (Int64Value format)

선택사항: 이 상품의 총가격으로, order.currencyCode에 지정된 통화의 마이크로로 표시됩니다. quantity가 입력되면 전체 수량의 총 가격이 반영됩니다. 일부 주문 유형에는 사용할 수 없습니다.

googleProductName

string

필수: 상품에 대한 Google 제품 서비스의 이름입니다.

세금

이 주문에 적용되는 세금에 대한 정보입니다.

JSON 표현
{
  "description": string,
  "amount": string
}
필드
description

string

필수: 세금에 대한 설명입니다.

amount

string (Int64Value format)

필수: 세금으로, order.currencyCode에 지정된 통화의 마이크로로 표시됩니다.

지급

결제 관련 정보입니다.

JSON 표현
{
  "billingAddress": {
    object (Address)
  },
  "amount": string,
  "refunds": [
    {
      object (Refund)
    }
  ],

  // Union field fopDetails can be only one of the following:
  "cardDetails": {
    object (PaymentCardDetails)
  }
  // End of list of possible types for union field fopDetails.
}
필드
billingAddress

object (Address)

필수: 이 결제에 대한 청구서 수신 주소입니다.

amount

string (Int64Value format)

필수: 결제 금액으로, order.currencyCode에 지정된 통화의 마이크로로 표시됩니다. 참고: 주문이 여러 결제를 통해 결제된 경우 order.totalAmount와 일치하지 않을 수 있습니다.

refunds[]

object (Refund)

필수: 이 결제에 대한 환불 목록입니다. 이 목록은 비어 있을 수 있습니다.

통합 필드 fopDetails.

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

cardDetails

object (PaymentCardDetails)

선택사항: 신용카드 및 체크카드 결제 수단과 관련된 결제 세부정보입니다.

환불

결제로 인한 환불에 관한 정보입니다.

JSON 표현
{
  "amount": string,
  "initiatedTimestamp": string
}
필드
amount

string (Int64Value format)

필수: 환불 금액으로, order.currencyCode에 지정된 통화의 양수 마이크로입니다.

initiatedTimestamp

string (int64 format)

필수: 환불이 시작된 시점의 타임스탬프로, 에포크 이후 경과된 밀리초로 표시됩니다.

PaymentCardDetails

신용카드 및 체크카드와 관련된 결제 세부정보

JSON 표현
{
  "authResult": enum (AuthResult)
}
필드
authResult

enum (AuthResult)

필수: 결제 인증의 결과입니다.

AuthResult

결제 인증 결과

열거형
UNKNOWN_RESULT 이 기본값을 설정해서는 안 됩니다.
APPROVED 인증이 승인되었습니다.
DENIED 인증이 거부되었습니다.
NOT_ATTEMPTED 인증을 시도하지 않았습니다.