Method: getDisputeInquiryReport

Nhận báo cáo cung cấp thông tin giúp hỗ trợ khách hàng dễ dàng trò chuyện với bộ phận hỗ trợ khách hàng về trường hợp có thể xảy ra tranh chấp về 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 bị 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 đối tác tích hợp thanh toán khác. Trong những trường hợp như vậy, khi khoá ký không khớp, không tìm thấy giá trị nhận dạng của trình tích hợp thanh toán hoặc không xác định được khoá mã hoá, thì phương thức này sẽ trả về một HTTP 404 có phần nội dung trống. Nếu chữ ký của yêu cầu có thể được xác minh thì 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"
  }
}

Câu trả lờ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)
  }
}
Trường
requestHeader

object (RequestHeader)

BẮT BUỘC: Tiêu đề chung cho tất cả các yêu cầu.

paymentIntegratorAccountId

string

BẮT BUỘC: Giá trị nhận dạng tài khoản của đối tác tích hợp thanh toán giúp xác định người gọi và các điều kiện ràng buộc theo hợp đồng có liên quan đối với hoạt động tương tác này.

paymentLookupCriteria

object (PaymentLookupCriteria)

BẮT BUỘC: Tiêu chí cho biết khoản thanh toán được tra cứu cho câu hỏi này.

existingGoogleClaimId

string

KHÔNG BẮT BUỘC: Chuỗi do Google tạo từ 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 cung cấp mã này, thì một mã thông báo xác nhận quyền sở hữu mới sẽ được tạo. Phương thức gọi có thể cung cấp googleClaimId được trả về qua một cuộc gọi trước đó đến getDisputeInquiryReport nếu đây là phần tiếp theo của cùng một tranh chấp của khách hàng.

Mã đơn khiếu nại được điền ở đây hoặc được tạo sẽ được trả về trong trường googleClaimId của phản hồi.

Việc cung cấp googleClaimId là không hợp lệ nếu lệnh gọi trước đó đến getDisputeInquiryReport chưa trả về. Nếu điều này xảy ra, 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 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)
  }
}
Trường
responseHeader

object (ResponseHeader)

BẮT BUỘC: Tiêu đề chung cho tất cả câu trả lời.

result

enum (GetDisputeInquiryReportResultCode)

BẮT BUỘC: 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 để nhận dạng duy nhất đơn khiếu nại 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, đây sẽ là cùng một giá trị. Nếu không, đó sẽ là một giá trị mới được tạo. Bạn có thể cung cấp giá trị này trong các yêu cầu getDisputeInquiryReport trong tương lai nếu chúng có liên quan đến cùng một tranh chấp với khách hàng.

report

object (PurchaseReport)

KHÔNG BẮT BUỘC: Thông tin chi tiết có liên quan đến tranh chấp 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.)

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)
  },
  "captureRequestCriteria": {
    object (CaptureRequestCriteria)
  }
  // End of list of possible types for union field criteria.
}
Trường

Trường kết hợp 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 bên thu nạp (ARN).

googleTransactionReferenceNumberCriteria

object (GoogleTransactionReferenceNumberCriteria)

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

captureRequestCriteria

object (CaptureRequestCriteria)

KHÔNG BẮT BUỘC: Tra cứu dựa trên mã yêu cầu thu thập.

ArnCriteria

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

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

string

BẮT BUỘC: Số tham chiếu của người thu nạp (ARN) xác định riêng biệt khoản thanh toán. Phải có 23 chữ số.

authorizationCode

string

BẮT BUỘC: Mã uỷ quyền cho 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
}
Trường
googleTransactionReferenceNumber

string

BẮT BUỘC: Số tham chiếu của giao dịch do Google tạo giúp xác định chính xác khoản thanh toán.

authorizationCode

string

BẮT BUỘC: Mã uỷ quyền cho giao dịch.

CaptureRequestCriteria

Tiêu chí tra cứu thanh toán dựa trên yêu cầu ghi lại ban đầu.

Biểu diễn dưới dạng JSON
{
  "captureRequestId": string
}
Trường
captureRequestId

string

BẮT BUỘC: Giá trị nhận dạng duy nhất của giao dịch này. Đây là requestId do Google tạo trong cuộc gọi capture đang được tra cứu.

RequestOriginator

Thông tin về tổ chức hoặc nhóm con của tổ chức và (không bắt buộc) nhân viên mà bạn gửi 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 có giá trị 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 máy khách bên ngoài.

Biểu diễn dưới dạng JSON
{
  "organizationId": string,
  "organizationDescription": string,
  "agentId": string
}
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 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à đơn vị 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 do organizationId phát sinh 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 Đã phát hiện khoản thanh toán và đã cung cấp báo cáo.
PAYMENT_NOT_FOUND Không tìm thấy khoản thanh toán được yêu cầu.
PAYMENT_TOO_OLD Đã tìm thấy khoản thanh toán mà bạn yêu cầu nhưng chúng tôi không cung cấp báo cáo do thời hạn của khoản thanh toán.
ORDER_CANNOT_BE_RETURNED Khoản thanh toán được yêu cầu thuộc về một đơn đặt hàng tồn tại nhưng không thể trả lại. Lý do bao gồm cả trường hợp đơn đặt hàng đã bị xóa 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 liên quan về 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)
  }
}
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)

BẮT BUỘC: Thông tin về đơn đặt hàng mà khoản thanh toán đã được thực hiện.

payment

object (Payment)

KHÔNG BẮT BUỘC: Thông tin về khoản thanh toán. Lưu ý: 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 của khoản thanh toán đã được xác định trong yêu cầu ban đầu. Không áp dụng 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
}
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)
    }
  ]
}
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, được biểu thị bằng mili giây kể từ thời gian bắt đầu của hệ thống. Không áp dụng cho một số loại đơn đặt hàng.

orderId

string

KHÔNG BẮT BUỘC: Chuỗi xác định duy nhất thứ tự này. Không áp dụng 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. Không áp dụng 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 thể hiện dưới dạng phần triệu của đơn vị tiền tệ được chỉ định bằng order.currencyCode. Giá trị này tương đương với SUM(items.totalPrice). Không áp dụng 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 thể hiện dưới dạng phần triệu đơn vị tiền tệ được chỉ định bằng order.currencyCode. Giá trị này tương đương với subTotalAmount + SUM(taxes.amount). Không áp dụng cho một số loại đơn đặt hàng.

shippingAddress

object (Address)

KHÔNG BẮT BUỘC: Địa chỉ giao hàng của các mặt hàng thực trong đơn đặt hàng này.

items[]

object (Item)

BẮT BUỘC: Danh sách các mặt hàng thuộc đơn đặt hàng này.

taxes[]

object (Tax)

BẮT BUỘC: Danh sách các mặt hàng thuộc đơn đặt hàng này. Danh sách này có thể trống.

Địa chỉ

Cấu trúc lưu trữ thông tin về một địa chỉ.

Biểu diễn dưới dạng JSON
{
  "name": string,
  "addressLine": [
    string
  ],
  "localityName": string,
  "administrativeAreaName": string,
  "postalCodeNumber": string,
  "countryCode": string
}
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: Trường 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 cụm từ không rõ ràng, nhưng thường đề cập đến phần thành phố/thị trấn của một địa chỉ. Ở các khu vực trên thế giới nơi các địa phương không được xác định 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 localityName và sử dụng addressLine.

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

administrativeAreaName

string

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

postalCodeNumber

string

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

countryCode

string

KHÔNG BẮT BUỘC: Mã quốc gia của địa chỉ khách hàng, dự kiến là 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
}
Trường
description

string

KHÔNG BẮT BUỘC: Nội dung mô tả về mặt hàng đã được mua. Không áp dụng 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 mặt hàng.

quantity

string (Int64Value format)

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

Trường này sẽ bị bỏ qua nếu bạn không thể áp dụng số lượng là số nguyên cho sản phẩm (ví dụ: sản phẩm theo định mức có thể có số lượng dạ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 thể hiện dưới dạng micrô của đơn vị tiền tệ được chỉ định bằng order.currencyCode. Nếu bạn điền quantity, giá trị này sẽ phản ánh tổng giá của toàn bộ số lượng. Không áp dụng 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 dành cho mặt hàng.

Thuế

Thông tin về mức thuế áp dụng cho đơn đặt hàng này.

Biểu diễn dưới dạng JSON
{
  "description": string,
  "amount": string
}
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 dưới dạng phần triệu của đơn vị tiền tệ được chỉ định bằng 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.
}
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 dưới dạng phần triệu của đơn vị tiền tệ được chỉ định bằng order.currencyCode. Lưu ý: Mã này có thể không khớp với order.totalAmount nếu đơn đặt hàng được thanh toán theo phương thứ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 kết hợp 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: Chi tiết thanh toán cụ thể cho tín dụng và thẻ ghi nợ FoPs.

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
}
Trường
amount

string (Int64Value format)

BẮT BUỘC: Số tiền được hoàn lại, một số dương micro của đơn vị tiền tệ được chỉ định trong order.currencyCode.

initiatedTimestamp

string (int64 format)

BẮT BUỘC: Dấu thời gian về thời điểm bắt đầu quá trình hoàn tiền, được biểu thị bằng mili giây kể từ thời gian bắt đầu của hệ thống.

PaymentCardDetails

Chi tiết thanh toán cụ thể cho tín dụng & thẻ ghi nợ.

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

enum (AuthResult)

BẮT BUỘC: Kết quả của việc uỷ quyề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 xác thực.
DENIED Xác thực bị từ chối.
NOT_ATTEMPTED Chưa xác thực được.