- HTTP request
- Request body
- Response body
- RequestHeader
- Timestamp
- Version
- PaymentLookupCriteria
- ArnCriteria
- GoogleTransactionReferenceNumberCriteria
- CaptureRequestCriteria
- RequestOriginator
- GetDisputeInquiryReportResponse
- ResponseHeader
- GetDisputeInquiryReportResult
- SuccessDetails
- PurchaseReport
- CustomerAccount
- Order
- Amount
- Address
- Item
- Tax
- Payment
- Refund
- PaymentCardDetails
- AuthResult
- Empty
- ErrorResponse
- ErrorResponseResult
- InvalidApiVersion
- InvalidPayloadSignature
- InvalidPayloadEncryption
- RequestTimestampOutOfRange
- InvalidIdentifier
- IdempotencyViolation
- InvalidFieldValue
- MissingRequiredField
- PreconditionViolation
- UserActionInProgress
- InvalidDecryptedRequest
- Forbidden
Get a report that provides information to facilitate a customer support conversation with a user regarding a potential dispute of a payment.
Responses to this query may be empty if this method does not return an HTTP 200.
If the endpoint encounters an error while processing the request, the response from this endpoint will be of type
.ErrorResponse
Responses to this query may be empty if this method does not return an HTTP 200. The response body is empty in situations where an
with a clear description could be used to help an attacker understand the payment integrator account identifier of other integrators. In these situations, where either the signing key doesn't match, the payment integrator identifier was not found, or the encryption key was unknown, this method will return an HTTP 404 with an empty body. If the request signature could be verified, additional information regarding the error will be returned in the response body.ErrorResponse
An example request looks like:
{
"requestHeader": {
"protocolVersion": {
"major": 3
},
"requestId": "HsKv5pvtQKTtz7rdcw1YqE",
"requestTimestamp": {
"epochMillis": "1519996751331"
},
"paymentIntegratorAccountId": "InvisiCashUSA_USD"
},
"paymentLookupCriteria": {
"googleTransactionReferenceNumberCriteria": {
"googleTransactionReferenceNumber": "714545417102363157911822",
"authorizationCode": "111111"
}
},
"existingGoogleClaimId": "138431383281",
"requestOriginator": {
"organizationId": "ISSUER_256",
"organizationDescription": "Community Bank of Some City",
"agentId": "982749"
}
}
An example response looks like:
{
"responseHeader": {
"responseTimestamp": {
"epochMillis": "1519996752221"
}
},
"result": {
"success": {
"googleClaimId": "138431383281",
"report": {
"customerAccount": {
"customerEmail": "example@gmail.com",
"customerName" : "Example Customer"
},
"order": {
"timestamp": {
"epochMillis": "1517992525972"
},
"orderId": "SOP.8976-1234-1234-123456..99",
"subTotalAmount": {
"amountMicros": "206990000",
"currencyCode": "USD"
},
"totalAmount": {
"amountMicros": "212990000",
"currencyCode": "USD"
},
"shippingAddress": {
"addressLine": ["123 Main St"],
"localityName": "Springfield",
"administrativeAreaName": "CO",
"postalCodeNumber": "80309",
"countryCode": "US"
},
"taxes": [
{
"description": "Colorado Sales Tax",
"amount": {
"amountMicros": "6000000",
"currencyCode": "USD"
}
}
],
"items": [
{
"description": "Super cool gizmo",
"merchant": "HTC",
"googleProductName": "Google Store",
"quantity": "2",
"totalPrice": {
"amountMicros": "198000000",
"currencyCode": "USD"
}
},
{
"description": "Gizmo charger",
"merchant": "HTC",
"googleProductName": "Google Store",
"quantity": "1",
"totalPrice": {
"amountMicros": "8990000",
"currencyCode": "USD"
}
}
]
},
"payment": {
"billingAddress" : {
"addressLine": ["123 Main St"],
"localityName": "Springfield",
"administrativeAreaName": "CO",
"postalCodeNumber": "80309",
"countryCode": "US"
},
"amount": {
"amountMicros": "100000000",
"currencyCode": "USD"
},
"refunds": [
{
"amount": {
"amountMicros": "9250000",
"currencyCode": "USD"
},
"initiatedTimestamp": {
"epochMillis": "1518811245384"
}
}
],
"cardDetails": {
"authResult": "APPROVED"
}
}
}
}
}
}
HTTP request
POST https://vgw.googleapis.com/secure-serving/gsp/v3/getDisputeInquiryReport/:PIAID
Request body
The request body contains data with the following structure:
JSON representation |
---|
{ "requestHeader": { object ( |
Fields | |
---|---|
requestHeader |
REQUIRED: Common header for all requests. |
paymentLookupCriteria |
REQUIRED: Criteria indicating the payment that is to be looked up for this inquiry. |
existingGoogleClaimId |
OPTIONAL: A Google-generated string returned by a previous call to If this is not present, a new claim ID will be generated. The caller may provide a The claim ID that is populated here or generated will be returned in the response's It is not valid to provide a |
requestOriginator |
REQUIRED: Information about the organization or organizational sub-group that originated this request. |
Response body
This method supports multiple return types. For additional information about what 4XX or 5XX HTTP status code to return with an ErrorResponse
, consult the ErrorResponse
object and HTTP status codes documentation.
This method supports multiple return types. For additional information about what 4XX or 5XX HTTP status code to return with an ErrorResponse
, consult the ErrorResponse
object and HTTP status codes documentation.
If successful, the response body contains data with the following structure:
Possible response messages | |
---|---|
HTTP 200 Status |
|
HTTP 4XX / 5XX Status |
|
RequestHeader
Header object that is defined on all requests sent to the server.
JSON representation |
---|
{ "requestId": string, "requestTimestamp": { object ( |
Fields | |
---|---|
requestId |
REQUIRED: Unique identifier of this request. This is a string that has a max length of 100 characters, and contains only the characters "a-z", "A-Z", "0-9", ":", "-", and "_". |
requestTimestamp |
REQUIRED: Timestamp of this request. The receiver must verify that this timestamp is ± 60s of 'now', and reject the request if it is not. This request timestamp is not idempotent upon retries. |
protocolVersion |
REQUIRED: The version of this request. |
paymentIntegratorAccountId |
REQUIRED: Identifies a unique account with contractual constraints. |
Timestamp
A timestamp object representing a point on the ISO timeline in milliseconds since the Unix epoch.
JSON representation |
---|
{ "epochMillis": string } |
Fields | |
---|---|
epochMillis |
Milliseconds since the Unix epoch |
Version
Version object contains the major version of the API. Versions of the same major version are guaranteed to be compatible. The integrator must support all requests for the same major version.
JSON representation |
---|
{ "major": integer } |
Fields | |
---|---|
major |
REQUIRED: Major version. This is marked for compatibility requests with different versions are not guaranteed to be compatible. |
PaymentLookupCriteria
Container for criteria that can uniquely lookup a payment. One (and only one) member field must be populated.
JSON representation |
---|
{ // Union field |
Fields | |
---|---|
Union field
|
|
arnCriteria |
OPTIONAL: Lookup based on Acquirer Reference Number (ARN). |
googleTransactionReferenceNumberCriteria |
OPTIONAL: Lookup based on the Google Transaction Reference Number. |
captureRequestCriteria |
OPTIONAL: Lookup based on the original capture request. |
ArnCriteria
Payment lookup criteria based on Acquirer Reference Number (ARN).
JSON representation |
---|
{ "acquirerReferenceNumber": string, "authorizationCode": string } |
Fields | |
---|---|
acquirerReferenceNumber |
REQUIRED: The Acquirer Reference Number (ARN) that uniquely identifies the payment. Must be 23 digits long. |
authorizationCode |
REQUIRED: The Authorization Code for the transaction. |
GoogleTransactionReferenceNumberCriteria
Payment lookup criteria based on the Google-generated Transaction Reference Number.
JSON representation |
---|
{ "googleTransactionReferenceNumber": string, "authorizationCode": string } |
Fields | |
---|---|
googleTransactionReferenceNumber |
REQUIRED: The Google-generated Transaction Reference Number that uniquely identifies the payment. |
authorizationCode |
REQUIRED: The Authorization Code for the transaction. |
CaptureRequestCriteria
Payment lookup criteria based on the original capture request.
JSON representation |
---|
{ "captureRequestId": string } |
Fields | |
---|---|
captureRequestId |
REQUIRED: A unique identifier for this transaction. This is the |
RequestOriginator
Information about the organization or organizational sub-group, and optionally the employee, from which this request originated. This allows Google to identify issues or abuse and implement controls at a finer-grained level than the paymentIntegratorAccountId
. It is especially valuable when the called is an intermediary service provider that sources request from multiple external clients.
JSON representation |
---|
{ "organizationId": string, "organizationDescription": string, "agentId": string } |
Fields | |
---|---|
organizationId |
REQUIRED: An identifier of the company, organization, or organizational group from which this request originated. Must be unique within this |
organizationDescription |
REQUIRED: A human-readable name or description of the organization that can be used to ease communication between employees of Google and the integrator regarding that organization. |
agentId |
OPTIONAL: A unique identifier for the specific agent (employee) of the organization identified by |
GetDisputeInquiryReportResponse
Response payload for the getDisputeInquiryReport
method.
JSON representation |
---|
{ "responseHeader": { object ( |
Fields | |
---|---|
responseHeader |
REQUIRED: Common header for all responses. |
result |
REQUIRED: Result of this call. |
ResponseHeader
Header object that is defined on all responses sent from the server.
JSON representation |
---|
{
"responseTimestamp": {
object ( |
Fields | |
---|---|
responseTimestamp |
REQUIRED: Timestamp of this response. The receiver must verify that this timestamp is ± 60s of 'now', and reject the response if it is not. |
GetDisputeInquiryReportResult
JSON representation |
---|
{ // Union field |
Fields | |
---|---|
Union field
|
|
success |
The payment was found and a report is provided. |
paymentNotFound |
The requested payment was not found. |
paymentTooOld |
The requested payment was found, but a report was not provided due to the age of the payment. |
orderCannotBeReturned |
The requested payment belongs to an order that exists, but cannot be returned. Reasons include cases where the order was removed at the request of its owner. |
noAdditionalDetails |
The requested payment was found, but a report is not available. |
SuccessDetails
JSON representation |
---|
{
"googleClaimId": string,
"report": {
object ( |
Fields | |
---|---|
googleClaimId |
REQUIRED: A Google-generated string that uniquely identifies this customer dispute. If |
report |
REQUIRED: Details relevant to the dispute of the payment identified in the request. |
PurchaseReport
A report containing relevant details of the purchase associated with the requested payment.
JSON representation |
---|
{ "customerAccount": { object ( |
Fields | |
---|---|
customerAccount |
REQUIRED: Information regarding the customer and their account. |
order |
OPTIONAL: Information regarding the order on which the payment was made. Not available for all purchase reports. |
payment |
REQUIRED: Information regarding the payment. Note: Multiple payments are possible on a single order, but this will only contain info for the payment that was identified in the original request. |
CustomerAccount
Information about the customer's account.
JSON representation |
---|
{ "customerEmail": string, "customerName": string } |
Fields | |
---|---|
customerEmail |
OPTIONAL: The email address associated with the customer's Google account. |
customerName |
REQUIRED: The customer's name. |
Order
Information about the order.
JSON representation |
---|
{ "timestamp": { object ( |
Fields | |
---|---|
timestamp |
REQUIRED: Timestamp of when the order was made. |
orderId |
REQUIRED: A string uniquely identifying this order. |
subTotalAmount |
REQUIRED: Total amount of this order before tax. |
totalAmount |
REQUIRED: Total amount of this order including tax. |
shippingAddress |
OPTIONAL: Shipping address for the physical items in this order. |
items[] |
REQUIRED: List of items that were part of this order. |
taxes[] |
REQUIRED: List of taxes that were part of this order. This list may be empty. |
Amount
Associates an amount in micros with a currency code.
JSON representation |
---|
{ "amountMicros": string, "currencyCode": string } |
Fields | |
---|---|
amountMicros |
REQUIRED: An amount in micros. |
currencyCode |
REQUIRED: ISO 4217 3-letter currency code |
Address
Structure holding information about a physical address.
JSON representation |
---|
{ "addressLine": [ string ], "localityName": string, "administrativeAreaName": string, "postalCodeNumber": string, "countryCode": string } |
Fields | |
---|---|
addressLine[] |
OPTIONAL: This holds unstructured Address text. |
localityName |
OPTIONAL: This is something of a fuzzy term, but it generally refers to the city/town portion of an address. In regions of the world where localities are not well defined or do not fit into this structure well (for example, Japan and China), leave localityName empty and use addressLine. Examples: US city, IT comune, UK post town. |
administrativeAreaName |
OPTIONAL: Top-level administrative subdivision of this country" Examples: US state, IT region, CN province, JP prefecture." |
postalCodeNumber |
OPTIONAL: Despite the name, postalCodeNumber values are frequently alphanumeric. Examples: "94043", "SW1W", "SW1W 9TQ". |
countryCode |
OPTIONAL: Customer address country code, expected to be ISO-3166-1 Alpha-2. |
Item
Information about an item in the order.
JSON representation |
---|
{
"description": string,
"merchant": string,
"quantity": string,
"totalPrice": {
object ( |
Fields | |
---|---|
description |
REQUIRED: A description of the item that was purchased. |
merchant |
REQUIRED: The seller, artist, or maker of the item. |
quantity |
OPTIONAL: The quantity that were ordered of this item. This field will be omitted if integer quantities are not applicable to the product (metered products may have fractional quantities for example). |
totalPrice |
REQUIRED: The total price of this item. |
googleProductName |
REQUIRED: Name of the Google product service for the item. |
Tax
Information about a tax that applies to this order.
JSON representation |
---|
{
"description": string,
"amount": {
object ( |
Fields | |
---|---|
description |
REQUIRED: A description of the tax. |
amount |
REQUIRED: The amount of the tax. |
Payment
Information about the payment.
JSON representation |
---|
{ "billingAddress": { object ( |
Fields | |
---|---|
billingAddress |
REQUIRED: Billing address for this payment. |
amount |
REQUIRED: Amount of this payment. |
refunds[] |
REQUIRED: List of refunds made to this payment. This list may be empty. |
Union field
|
|
cardDetails |
OPTIONAL: Payment details specific to credit & debit card FoPs. |
Refund
Information about a refund made on a payment.
JSON representation |
---|
{ "amount": { object ( |
Fields | |
---|---|
amount |
REQUIRED: The amount refunded. |
initiatedTimestamp |
REQUIRED: Timestamp of when the refund was initiated. |
PaymentCardDetails
Payment details specific to credit & debit cards.
JSON representation |
---|
{
"authResult": enum ( |
Fields | |
---|---|
authResult |
REQUIRED: Result of payment auth. |
AuthResult
Payment auth results.
Enums | |
---|---|
UNKNOWN_RESULT |
Do not ever set this default value. |
APPROVED |
Auth approved. |
DENIED |
Auth denied. |
NOT_ATTEMPTED |
Auth not attempted. |
Empty
This type has no fields.
This object is used for extensibility because booleans and enumerations often need to be extended with extra data. The implementer uses it to determine presence. The enumeration this represents may be extended to contain data in future versions.
The JSON representation for Empty
is empty JSON object {}
.
ErrorResponse
Error Response object for all methods.
JSON representation |
---|
{ "responseHeader": { object ( |
Fields | |
---|---|
responseHeader |
REQUIRED: Common header for all responses. |
errorDescription |
OPTIONAL: Provide a description of this status for support reps to debug errors. Note that this is never shown to users. It can contain descriptive, non-sensitive text used for debugging. Note that some values for errorResponseCode should be accompanied by additional detail in this field. Warning: Do not include any tokens in this message unless they are defined as public. |
paymentIntegratorErrorIdentifier |
OPTIONAL: This identifier is specific to the integrator and is generated by the integrator. It is used for debugging purposes only in order to identify this call. This is the identifier that the integrator knows this call by. |
errorResponseResult |
OPTIONAL: A code that captures the type of error that occurred. |
ErrorResponseResult
Error Codes
JSON representation |
---|
{ // Union field |
Fields | |
---|---|
Union field
|
|
invalidApiVersion |
Used if the request's API version is unsupported. Advised HTTP Code: 400 |
invalidPayloadSignature |
Used if the signature of the payload is to an unknown or inactive key. Advised HTTP Code: 401 |
invalidPayloadEncryption |
Used if the encryption of the payload is to an unknown or inactive key. Advised HTTP Code: 400 |
requestTimestampOutOfRange |
Used if the requestTimestamp is not ± 60s of now. Advised HTTP Code: 400 |
invalidIdentifier |
Used if an identifier sent in the request was invalid or unknown. This may include PIAID, captureRequestId, Google Payment Token, etc. Advised HTTP Code: 404 |
idempotencyViolation |
Used if the request violates the idempotency requirements for the request. Advised HTTP Code: 412 |
invalidFieldValue |
Used if the request contains a value for a field that isn't in the set of supported values. Advised HTTP Code: 400 |
missingRequiredField |
Used if a field that is required is unset in the request. Advised HTTP Code: 400 |
preconditionViolation |
Used if a constraint on the operation is violated (e.g. when a request for a refund amount exceeds the amount remaining on the transaction). Advised HTTP Code: 400 |
userActionInProgress |
Used if the request cannot be processed at this time because it would interrupt an in-process user action which effectively acts as a system lock. This code must not be used to indicate failures due to implementation-specific internal concurrency errors. Advised HTTP Code: 423 |
invalidDecryptedRequest |
Used if the request payload could be decrypted, but the resulting message could not be parsed. Advised HTTP Code: 400 |
forbidden |
Access to the requested resource is forbidden. Advised Http Code: 403 |
InvalidApiVersion
JSON representation |
---|
{ "requestVersion": { object ( |
Fields | |
---|---|
requestVersion |
REQUIRED: The invalid version that was specified on the request. |
expectedVersion |
REQUIRED: The expected version. |
InvalidPayloadSignature
This type has no fields.
This message is intentionally empty right now. New fields could be added in the future.
InvalidPayloadEncryption
This type has no fields.
This message is intentionally empty right now. New fields could be added in the future.
RequestTimestampOutOfRange
JSON representation |
---|
{ "requestTimestamp": { object ( |
Fields | |
---|---|
requestTimestamp |
REQUIRED: The timestamp provided in the request |
serverTimestampAtReceipt |
REQUIRED: The server time at receipt, used for comparison |
InvalidIdentifier
JSON representation |
---|
{ "invalidIdentifierType": string } |
Fields | |
---|---|
invalidIdentifierType |
REQUIRED: The type of identifier that was invalid, e.g. PIAID, captureRequestId, etc. |
IdempotencyViolation
This type has no fields.
This message is intentionally empty right now. New fields could be added in the future.
InvalidFieldValue
JSON representation |
---|
{ "invalidFieldName": string } |
Fields | |
---|---|
invalidFieldName |
REQUIRED: The name of the field that was found to be invalid. |
MissingRequiredField
JSON representation |
---|
{ "missingFieldNames": [ string ] } |
Fields | |
---|---|
missingFieldNames[] |
REQUIRED: The names of the missing fields. |
PreconditionViolation
This type has no fields.
This message is intentionally empty right now. New fields could be added in the future.
UserActionInProgress
This type has no fields.
This message is intentionally empty right now. New fields could be added in the future.
InvalidDecryptedRequest
This type has no fields.
This message is intentionally empty right now. New fields could be added in the future.
Forbidden
This type has no fields.
This message is intentionally empty right now. New fields could be added in the future.