Method: getDisputeInquiryReport

Nhận báo cáo cung cấp thông tin để hỗ trợ khách hàng trao đổi với người dùng về khả năng xảy ra tranh chấp về một khoản thanh toán.

Nếu điểm cuối gặp lỗi trong khi xử lý yêu cầu, thì phản hồi từ điểm cuối này sẽ thuộc loại ErrorResponse.

Phản hồi cho truy vấn này có thể trống nếu phương thức này không trả về HTTP 200. Nội dung phản hồi trống trong trường hợp ErrorResponse có nội dung mô tả rõ ràng có thể được dùng để giúp kẻ tấn công hiểu được giá trị nhận dạng tài khoản của bên tích hợp thanh toán của các nhà tích hợp khác. Trong các trường hợp này, khi khoá ký không khớp, không tìm thấy mã nhận dạng nhà tích hợp thanh toán hoặc khoá mã hoá không xác định, thì phương thức này sẽ trả về một HTTP 404 với phần nội dung trống. Nếu có thể xác minh được chữ ký yêu cầu, thông tin bổ sung về lỗi sẽ được trả về trong nội dung phản hồi.

Yêu cầu mẫu sẽ có dạng như sau:


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

Phản hồi mẫu sẽ có dạng như sau:


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

Yêu cầu HTTP

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

Nội dung yêu cầu

Nội dung yêu cầu chứa dữ liệu có cấu trúc sau:

Biểu diễn dưới dạng JSON
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "paymentLookupCriteria": {
    object (PaymentLookupCriteria)
  },
  "existingGoogleClaimId": string,
  "requestOriginator": {
    object (RequestOriginator)
  }
}
Các trường
requestHeader

object (RequestHeader)

REQUIRED: Tiêu đề chung cho tất cả các yêu cầu.

paymentIntegratorAccountId

string

REQUIRED: Giá trị nhận dạng tài khoản của bên tích hợp thanh toán xác định người gọi và những ràng buộc theo hợp đồng có liên quan đến hoạt động tương tác này.

paymentLookupCriteria

object (PaymentLookupCriteria)

REQUIRED: Tiêu chí cho biết khoản thanh toán mà bạn cần tra cứu yêu cầu này.

existingGoogleClaimId

string

KHÔNG BẮT BUỘC: Chuỗi do Google tạo được trả về bởi lệnh gọi trước đó đến getDisputeInquiryReport xác định duy nhất khiếu nại tranh chấp của khách hàng này.

Nếu bạn không có mã này, hệ thống sẽ tạo một mã xác nhận quyền sở hữu mới. Phương thức gọi có thể cung cấp một googleClaimId đã được lệnh gọi trước đó trả về cho getDisputeInquiryReport nếu đây là phần tiếp theo của một tranh chấp của khách hàng.

Mã xác nhận quyền sở hữu được điền ở đây hoặc được tạo sẽ được trả về trong trường googleClaimId của phản hồi.

Không hợp lệ nếu bạn cung cấp googleClaimId chưa được lệnh gọi trước đó trả về cho getDisputeInquiryReport. Nếu điều này xảy ra, thì yêu cầu HTTP 400 không hợp lệ sẽ được trả về.

requestOriginator

object (RequestOriginator)

BẮT BUỘC: Thông tin về tổ chức hoặc nhóm con của tổ chức đã đưa ra yêu cầu này.

Nội dung phản hồi

Tải trọng phản hồi cho phương thức getDisputeInquiryReport.

Nếu thành công, phần nội dung phản hồi sẽ chứa dữ liệu có cấu trúc sau:

Biểu diễn dưới dạng JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "result": enum (GetDisputeInquiryReportResultCode),
  "googleClaimId": string,
  "report": {
    object (PurchaseReport)
  }
}
Các trường
responseHeader

object (ResponseHeader)

REQUIRED: Tiêu đề chung cho tất cả các câu trả lời.

result

enum (GetDisputeInquiryReportResultCode)

REQUIRED: Kết quả của cuộc gọi này.

googleClaimId

string

KHÔNG BẮT BUỘC: Chuỗi do Google tạo giúp xác định duy nhất vấn đề tranh chấp của khách hàng này. (Trình bày khi và chỉ khi result là THÀNH CÔNG.)

Nếu existingGoogleClaimId được điền vào yêu cầu, thì giá trị này sẽ là cùng một giá trị. Nếu không, đó sẽ là một giá trị mới được tạo. Giá trị này có thể được cung cấp trong các yêu cầu getDisputeInquiryReport sau này nếu chúng có liên quan đến cùng một tranh chấp của khách hàng.

report

object (PurchaseReport)

KHÔNG BẮT BUỘC: Thông tin chi tiết liên quan đến khiếu nại về khoản thanh toán được xác định trong yêu cầu. (Trình bày khi và chỉ khi result là THÀNH CÔNG.)

RequestHeader

Đối tượng tiêu đề được xác định trên tất cả các yêu cầu được gửi đến máy chủ.

Biểu diễn dưới dạng JSON
{
  "requestId": string,
  "requestTimestamp": string,
  "userLocale": string,
  "protocolVersion": {
    object (Version)
  }
}
Các trường
requestId

string

REQUIRED: Giá trị nhận dạng duy nhất của yêu cầu này.

Đây là chuỗi có độ dài tối đa 100 ký tự và chỉ chứa các ký tự "a-z", "A-Z", "0-9", ":", "-" và "_".

requestTimestamp

string (int64 format)

BẮT BUỘC: Dấu thời gian của yêu cầu này được thể hiện dưới dạng mili giây kể từ thời gian bắt đầu của hệ thống. Bộ nhận phải xác minh rằng dấu thời gian này là ± 60 giây của "hiện tại". Dấu thời gian yêu cầu này không giống nhau khi thử lại.

userLocale
(deprecated)

string

KHÔNG DÙNG NỮA: Mã ngôn ngữ gồm hai hoặc ba chữ cái theo tiêu chuẩn ISO 639-2 Alpha-3 (không bắt buộc) theo sau là dấu gạch nối và mã quốc gia theo tiêu chuẩn ISO 3166-1 Alpha-2, ví dụ: 'pt', 'pt-BR', 'fil' hoặc 'fil-PH'. Dùng công cụ này để giúp thúc đẩy các trường userMessage trong phản hồi.

protocolVersion

object (Version)

REQUIRED: Phiên bản của yêu cầu này.

Phiên bản

Đối tượng phiên bản là một dạng cấu trúc của cấu trúc phiên bản a.b.c cổ điển. Các phiên bản chính của cùng một số sẽ đảm bảo tương thích. Lưu ý rằng các nội dung sửa đổi nhỏ và nội dung sửa đổi có thể thay đổi thường xuyên mà không cần thông báo trước. Trình tích hợp phải hỗ trợ tất cả các yêu cầu cho cùng một phiên bản lớn.

Biểu diễn dưới dạng JSON
{
  "major": integer,
  "minor": integer,
  "revision": integer
}
Các trường
major

integer

BẮT BUỘC: Phiên bản lớn. Thuộc tính này được đánh dấu cho các yêu cầu về khả năng tương thích với nhiều phiên bản nhưng không đảm bảo sẽ tương thích.

minor

integer

BẮT BUỘC: Phiên bản nhỏ. Điều này biểu thị các bản sửa lỗi quan trọng.

revision

integer

BẮT BUỘC: Phiên bản nhỏ. Điều này biểu thị các bản sửa lỗi nhỏ.

PaymentLookupCriteria

Vùng chứa các tiêu chí có thể tra cứu riêng một khoản thanh toán. Bạn phải điền một (và chỉ một) trường thành viên.

Biểu diễn dưới dạng 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.
}
Các trường

Trường nhóm criteria.

criteria chỉ có thể là một trong những trạng thái sau đây:

arnCriteria

object (ArnCriteria)

KHÔNG BẮT BUỘC: Tra cứu dựa trên Số tham chiếu của công ty thu nạp (ARN).

googleTransactionReferenceNumberCriteria

object (GoogleTransactionReferenceNumberCriteria)

KHÔNG BẮT BUỘC: Tra cứu dựa trên Số tham chiếu của giao dịch qua Google.

ArnCriteria

Tiêu chí tra cứu khoản thanh toán dựa trên Số tham chiếu của công ty thu nạp (ARN).

Biểu diễn dưới dạng JSON
{
  "acquirerReferenceNumber": string,
  "authorizationCode": string
}
Các trường
acquirerReferenceNumber

string

BẮT BUỘC: Số tham chiếu của bên thu nạp (ARN) dùng để xác định duy nhất khoản thanh toán. Phải có 23 chữ số.

authorizationCode

string

REQUIRED: Mã uỷ quyền của giao dịch đó.

GoogleTransactionReferenceNumberCriteria

Tiêu chí tra cứu khoản thanh toán dựa trên Số tham chiếu giao dịch do Google tạo.

Biểu diễn dưới dạng JSON
{
  "googleTransactionReferenceNumber": string,
  "authorizationCode": string
}
Các trường
googleTransactionReferenceNumber

string

REQUIRED: Số tham chiếu giao dịch do Google tạo, dùng để xác định chính xác khoản thanh toán.

authorizationCode

string

REQUIRED: Mã uỷ quyền của giao dịch đó.

RequestOriginator

Thông tin về tổ chức hoặc nhóm con của tổ chức và nhân viên (không bắt buộc) là nguồn gốc của yêu cầu này. Điều này cho phép Google xác định các vấn đề hoặc hành vi sai trái và triển khai các biện pháp kiểm soát ở mức độ chi tiết hơn so với paymentIntegratorAccountId. Phương thức này đặc biệt hữu ích khi phương thức gọi là nhà cung cấp dịch vụ trung gian nhận yêu cầu từ nhiều ứng dụng bên ngoài.

Biểu diễn dưới dạng JSON
{
  "organizationId": string,
  "organizationDescription": string,
  "agentId": string
}
Các trường
organizationId

string

BẮT BUỘC: Giá trị nhận dạng của công ty, tổ chức hoặc nhóm tổ chức là nơi phát sinh yêu cầu này. Phải là duy nhất trong paymentIntegratorAccountId này.

organizationDescription

string

BẮT BUỘC: Tên hoặc nội dung mô tả về tổ chức mà con người có thể đọc được, có thể dùng để dễ dàng liên lạc giữa nhân viên của Google và nhà tích hợp về tổ chức đó.

agentId

string

KHÔNG BẮT BUỘC: Giá trị nhận dạng duy nhất cho người đại diện (nhân viên) cụ thể của tổ chức được organizationId xác định là nguồn gốc của yêu cầu này. Phải là duy nhất trong organizationId này.

GetDisputeInquiryReportResultCode

Kết quả của lệnh gọi phương thức getDisputeInquiryReport.

Enum
UNKNOWN_RESULT Đừng bao giờ đặt giá trị mặc định này!
SUCCESS Đã tìm thấy khoản thanh toán và gửi báo cáo.
PAYMENT_NOT_FOUND Không tìm thấy khoản thanh toán đã yêu cầu.
PAYMENT_TOO_OLD Đã tìm thấy khoản thanh toán được yêu cầu, nhưng báo cáo chưa được cung cấp do chưa đến hạn thanh toán.
ORDER_CANNOT_BE_RETURNED Khoản thanh toán được yêu cầu thuộc về đơn đặt hàng đã tồn tại, nhưng không thể trả lại. Có một số lý do như có trường hợp đơn đặt hàng bị xoá theo yêu cầu của chủ sở hữu.
NO_ADDITIONAL_DETAILS Đã tìm thấy khoản thanh toán được yêu cầu nhưng không có báo cáo.

PurchaseReport

Báo cáo chứa thông tin chi tiết có liên quan đến giao dịch mua liên quan đến khoản thanh toán được yêu cầu.

Biểu diễn dưới dạng JSON
{
  "customerAccount": {
    object (CustomerAccount)
  },
  "order": {
    object (Order)
  },
  "payment": {
    object (Payment)
  }
}
Các trường
customerAccount

object (CustomerAccount)

BẮT BUỘC: Thông tin liên quan đến khách hàng và tài khoản của họ.

order

object (Order)

REQUIRED: Thông tin về đơn đặt hàng mà bạn thực hiện thanh toán.

payment

object (Payment)

KHÔNG BẮT BUỘC: Thông tin liên quan đến khoản thanh toán. Lưu ý: Bạn có thể thực hiện nhiều khoản thanh toán cho một đơn đặt hàng, nhưng thông tin này sẽ chỉ chứa thông tin về khoản thanh toán đã được xác định trong yêu cầu ban đầu. Chỉ dành cho một số loại đơn đặt hàng.

CustomerAccount

Thông tin về tài khoản của khách hàng

Biểu diễn dưới dạng JSON
{
  "customerEmail": string,
  "customerName": string
}
Các trường
customerEmail

string

BẮT BUỘC: Địa chỉ email liên kết với Tài khoản Google của khách hàng.

customerName

string

BẮT BUỘC: Tên của khách hàng.

Đặt

Thông tin về đơn đặt hàng.

Biểu diễn dưới dạng JSON
{
  "timestamp": string,
  "orderId": string,
  "currencyCode": string,
  "subTotalAmount": string,
  "totalAmount": string,
  "shippingAddress": {
    object (Address)
  },
  "items": [
    {
      object (Item)
    }
  ],
  "taxes": [
    {
      object (Tax)
    }
  ]
}
Các trường
timestamp

string (int64 format)

KHÔNG BẮT BUỘC: Dấu thời gian về thời điểm thực hiện đơn đặt hàng, biểu thị dưới dạng mili giây kể từ thời gian bắt đầu của hệ thống. Chỉ dành cho một số loại đơn đặt hàng.

orderId

string

KHÔNG BẮT BUỘC: Một chuỗi ký tự xác định duy nhất đơn đặt hàng này. Chỉ dành cho một số loại đơn đặt hàng.

currencyCode

string

KHÔNG BẮT BUỘC: Mã đơn vị tiền tệ gồm 3 chữ cái theo ISO 4217 cho tất cả số tiền trong đơn đặt hàng này. Chỉ dành cho một số loại đơn đặt hàng.

subTotalAmount

string (Int64Value format)

KHÔNG BẮT BUỘC: Tổng số tiền của đơn đặt hàng này trước thuế, được biểu thị bằng một phần triệu của đơn vị tiền tệ được chỉ định trong order.currencyCode. Số tiền này bằng SUM(items.totalPrice). Chỉ dành cho một số loại đơn đặt hàng.

totalAmount

string (Int64Value format)

KHÔNG BẮT BUỘC: Tổng số tiền của đơn đặt hàng này bao gồm cả thuế, được biểu thị bằng một phần triệu của đơn vị tiền tệ được chỉ định trong order.currencyCode. Số tiền này bằng subTotalAmount + SUM(taxes.amount). Chỉ dành cho một số loại đơn đặt hàng.

shippingAddress

object (Address)

KHÔNG BẮT BUỘC: Địa chỉ giao hàng cho các mặt hàng thực tế theo thứ tự này.

items[]

object (Item)

REQUIRED: Danh sách các mặt hàng nằm trong đơn đặt hàng này.

taxes[]

object (Tax)

REQUIRED: Danh sách các mặt hàng nằm trong đơn đặt hàng này. Danh sách này có thể trống.

Address (Địa chỉ)

Nhà chứa thông tin về địa chỉ.

Biểu diễn dưới dạng JSON
{
  "name": string,
  "addressLine": [
    string
  ],
  "localityName": string,
  "administrativeAreaName": string,
  "postalCodeNumber": string,
  "countryCode": string
}
Các trường
name

string

KHÔNG BẮT BUỘC: Họ tên của khách hàng.

addressLine[]

string

KHÔNG BẮT BUỘC: Thuộc tính này chứa văn bản Địa chỉ không có cấu trúc.

localityName

string

KHÔNG BẮT BUỘC: Đây là một thuật ngữ không rõ ràng, nhưng thường đề cập đến phần thành phố/thị trấn trong một địa chỉ. Ở những khu vực trên thế giới nơi các địa phương không được định nghĩa rõ hoặc không phù hợp với cấu trúc này (ví dụ: Nhật Bản và Trung Quốc), hãy để trống localName và sử dụng addressLine.

Ví dụ: Thành phố ở Hoa Kỳ, khu CNTT, thị trấn có bưu điện ở Vương quốc Anh.

administrativeAreaName

string

KHÔNG BẮT BUỘC: Đơn vị hành chính cấp cao nhất của quốc gia này" Ví dụ: Tiểu bang của Hoa Kỳ, khu vực Ý, tỉnh CN, tỉnh Nhật Bản."

postalCodeNumber

string

KHÔNG BẮT BUỘC: Mặc dù có tên như vậy, nhưng giá trịpostalCodeNumber thường là chữ và số. Ví dụ: "94043", "SW1W", "SW1W 9TQ".

countryCode

string

KHÔNG BẮT BUỘC: Mã quốc gia cho địa chỉ của khách hàng, dự kiến sẽ theo ISO-3166-1 Alpha-2.

Mục

Thông tin về một mặt hàng trong đơn đặt hàng.

Biểu diễn dưới dạng JSON
{
  "description": string,
  "merchant": string,
  "quantity": string,
  "totalPrice": string,
  "googleProductName": string
}
Các trường
description

string

KHÔNG BẮT BUỘC: Nội dung mô tả về mặt hàng đã được mua. Chỉ dành cho một số loại đơn đặt hàng.

merchant

string

BẮT BUỘC: Người bán, nghệ sĩ hoặc nhà sản xuất của mặt hàng.

quantity

string (Int64Value format)

KHÔNG BẮT BUỘC: Số lượng đặt hàng của mặt hàng này.

Trường này sẽ bị bỏ qua nếu bạn không áp dụng số lượng nguyên cho sản phẩm (ví dụ: sản phẩm có định lượng có thể có số lượng phân số).

totalPrice

string (Int64Value format)

KHÔNG BẮT BUỘC: Tổng giá của mặt hàng này, được biểu thị bằng một phần triệu của đơn vị tiền tệ được chỉ định trong order.currencyCode. Nếu quantity được điền, giá trị này phản ánh tổng giá của toàn bộ số lượng. Chỉ dành cho một số loại đơn đặt hàng.

googleProductName

string

BẮT BUỘC: Tên dịch vụ sản phẩm của Google đối với mặt hàng đó.

Thuế

Thông tin về một loại thuế áp dụng cho đơn đặt hàng này.

Biểu diễn dưới dạng JSON
{
  "description": string,
  "amount": string
}
Các trường
description

string

BẮT BUỘC: Nội dung mô tả về khoản thuế đó.

amount

string (Int64Value format)

BẮT BUỘC: Số tiền thuế, được thể hiện bằng một phần triệu của đơn vị tiền tệ được chỉ định trong order.currencyCode.

Thanh toán

Thông tin về khoản thanh toán.

Biểu diễn dưới dạng 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.
}
Các trường
billingAddress

object (Address)

BẮT BUỘC: Địa chỉ thanh toán cho khoản thanh toán này.

amount

string (Int64Value format)

BẮT BUỘC: Số tiền của khoản thanh toán này, được thể hiện bằng một phần triệu của đơn vị tiền tệ được chỉ định trong order.currencyCode. Lưu ý: Giá trị này có thể không khớp với order.totalAmount nếu đơn đặt hàng được thanh toán nhiều lần.

refunds[]

object (Refund)

BẮT BUỘC: Danh sách các khoản tiền hoàn lại cho khoản thanh toán này. Danh sách này có thể trống.

Trường nhóm fopDetails.

fopDetails chỉ có thể là một trong những trạng thái sau đây:

cardDetails

object (PaymentCardDetails)

KHÔNG BẮT BUỘC: Thông tin thanh toán dành riêng cho các FoP đối với thẻ tín dụng và thẻ ghi nợ.

Hoàn tiền

Thông tin về việc hoàn tiền cho một khoản thanh toán.

Biểu diễn dưới dạng JSON
{
  "amount": string,
  "initiatedTimestamp": string
}
Các trường
amount

string (Int64Value format)

REQUIRED: Số tiền được hoàn lại, một số dương theo đơn vị tiền tệ của đơn vị tiền tệ được chỉ định trong order.currencyCode.

initiatedTimestamp

string (int64 format)

REQUIRED: Dấu thời gian về thời điểm bắt đầu quy trình hoàn tiền, được biểu thị dưới dạng mili giây kể từ thời gian bắt đầu của hệ thống.

PaymentCardDetails

Thông tin thanh toán dành riêng cho thẻ tín dụng và thẻ ghi nợ.

Biểu diễn dưới dạng JSON
{
  "authResult": enum (AuthResult)
}
Các trường
authResult

enum (AuthResult)

BẮT BUỘC: Kết quả của quá trình xác thực khoản thanh toán.

AuthResult

Kết quả xác thực khoản thanh toán.

Enum
UNKNOWN_RESULT Đừng bao giờ đặt giá trị mặc định này!
APPROVED Đã phê duyệt yêu cầu xác thực.
DENIED Yêu cầu xác thực bị từ chối.
NOT_ATTEMPTED Chưa cố gắng xác thực.