Method: getDisputeInquiryReport

Ricevi un report che fornisca informazioni per facilitare una conversazione con l'assistenza clienti in merito a una potenziale contestazione di un pagamento.

Se l'endpoint rileva un errore durante l'elaborazione della richiesta, la risposta da questo endpoint sarà di tipo ErrorResponse.

Le risposte a questa query potrebbero essere vuote se questo metodo non restituisce un HTTP 200. Il corpo della risposta è vuoto nelle situazioni in cui è possibile utilizzare un ErrorResponse con una descrizione chiara per aiutare un utente malintenzionato a comprendere l'identificatore dell'account dell'integratore dei pagamenti di altri integratori. In queste situazioni, in cui la chiave di firma non corrisponde, l'identificatore dell'integratore dei pagamenti non è stato trovato o la chiave di crittografia non era nota, questo metodo restituirà un errore HTTP 404 con un corpo vuoto. Se è possibile verificare la firma della richiesta, nel corpo della risposta verranno restituite informazioni aggiuntive sull'errore.

Una richiesta di esempio ha il seguente aspetto:


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

Ecco un esempio di risposta:


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

Richiesta HTTP

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

Corpo della richiesta

Il corpo della richiesta contiene dati con la seguente struttura:

Rappresentazione JSON
{
  "requestHeader": {
    object (RequestHeader)
  },
  "paymentIntegratorAccountId": string,
  "paymentLookupCriteria": {
    object (PaymentLookupCriteria)
  },
  "existingGoogleClaimId": string,
  "requestOriginator": {
    object (RequestOriginator)
  }
}
Campi
requestHeader

object (RequestHeader)

REQUIRED: intestazione comune per tutte le richieste.

paymentIntegratorAccountId

string

REQUIRED: l'identificatore dell'account dell'integratore dei pagamenti che identifica il chiamante e i vincoli contrattuali associati per questa interazione.

paymentLookupCriteria

object (PaymentLookupCriteria)

REQUIRED: criteri che indicano il pagamento da verificare per questa richiesta di informazioni.

existingGoogleClaimId

string

FACOLTATIVO: una stringa generata da Google restituita da una precedente chiamata al numero getDisputeInquiryReport che identifica in modo univoco questa rivendicazione relativa a una contestazione del cliente.

Se non è presente, verrà generato un nuovo ID reclamo. Il chiamante può fornire un googleClaimId restituito da una chiamata precedente al numero getDisputeInquiryReport se si tratta di una continuazione della stessa contestazione del cliente.

L'ID reclamo compilato qui o generato verrà restituito nel campo googleClaimId della risposta.

Non è valido fornire un googleClaimId non restituito da una precedente chiamata a getDisputeInquiryReport. In questo caso, verrà restituita la richiesta HTTP 400 non valida.

requestOriginator

object (RequestOriginator)

OBBLIGATORIO: informazioni sull'organizzazione o sul sottogruppo dell'organizzazione che ha originato questa richiesta.

Corpo della risposta

Payload della risposta per il metodo getDisputeInquiryReport.

In caso di esito positivo, il corpo della risposta contiene dati con la seguente struttura:

Rappresentazione JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "result": enum (GetDisputeInquiryReportResultCode),
  "googleClaimId": string,
  "report": {
    object (PurchaseReport)
  }
}
Campi
responseHeader

object (ResponseHeader)

REQUIRED: intestazione comune per tutte le risposte.

result

enum (GetDisputeInquiryReportResultCode)

OBBLIGATORIO: risultato di questa chiamata.

googleClaimId

string

FACOLTATIVO: una stringa generata da Google che identifica in modo univoco questa controversia con un cliente. (Presenta solo se result ha SUCCESSO).

Se nella richiesta è stato compilato existingGoogleClaimId, questo valore corrisponderà. In caso contrario, si tratterà di un valore appena generato. Questo valore può essere fornito nelle future richieste di getDisputeInquiryReport se fanno parte della stessa contestazione del cliente.

report

object (PurchaseReport)

FACOLTATIVO: dettagli pertinenti alla contestazione del pagamento identificato nella richiesta. (Presenta solo se result ha SUCCESSO).

RequestHeader

Oggetto intestazione definito in tutte le richieste inviate al server.

Rappresentazione JSON
{
  "requestId": string,
  "requestTimestamp": string,
  "userLocale": string,
  "protocolVersion": {
    object (Version)
  }
}
Campi
requestId

string

REQUIRED: identificatore univoco della richiesta.

Si tratta di una stringa con una lunghezza massima di 100 caratteri e contenente solo i caratteri "a-z", "A-Z", "0-9", ":", "-" e "_".

requestTimestamp

string (int64 format)

REQUIRED: timestamp di questa richiesta espresso in millisecondi dall'epoca. Il destinatario deve verificare che il timestamp sia di ± 60 secondi rispetto a "now". Questo timestamp della richiesta non è idempotente al momento dei nuovi tentativi.

userLocale
(deprecated)

string

OBSOLETO: un codice lingua ISO 639-2 Alpha 3 a due o tre lettere facoltativamente seguito da un trattino e da un codice paese Alpha-2 ISO 3166-1, ad esempio "pt", "pt-BR", "fil" o "fil-PH". Utilizzalo per generare più campi userMessage nella risposta.

protocolVersion

object (Version)

REQUIRED: la versione della richiesta.

Versione

Oggetto versione, che è una forma strutturata della struttura della versione classica di a.b.c. È garantita la compatibilità delle versioni principali dello stesso numero. Tieni presente che le revisioni e le revisioni possono cambiare spesso e senza preavviso. L'integratore deve supportare tutte le richieste per la stessa versione principale.

Rappresentazione JSON
{
  "major": integer,
  "minor": integer,
  "revision": integer
}
Campi
major

integer

REQUIRED: versione principale. Questo stato è contrassegnato perché non è garantita la compatibilità delle richieste di compatibilità con versioni diverse.

minor

integer

REQUIRED: versione secondaria. Indica correzioni di bug significative.

revision

integer

REQUIRED: versione secondaria. Indica correzioni di bug minori.

PaymentLookupCriteria

Contenitore di criteri che possono cercare in modo univoco un pagamento. Deve essere compilato un solo campo membro.

Rappresentazione 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.
}
Campi

Campo di unione criteria.

criteria può essere solo uno dei seguenti:

arnCriteria

object (ArnCriteria)

FACOLTATIVO: ricerca basata sul numero di riferimento dell'acquirente (ARN).

googleTransactionReferenceNumberCriteria

object (GoogleTransactionReferenceNumberCriteria)

FACOLTATIVO: esegui una ricerca basata sul numero di riferimento della transazione Google.

ArnCriteria

Criteri di ricerca dei pagamenti basati sul numero di riferimento dell'acquirente (ARN).

Rappresentazione JSON
{
  "acquirerReferenceNumber": string,
  "authorizationCode": string
}
Campi
acquirerReferenceNumber

string

OBBLIGATORIO: il numero di riferimento dell'acquirente (ARN) che identifica in modo univoco il pagamento. Deve avere una lunghezza di 23 cifre.

authorizationCode

string

REQUIRED: il codice di autorizzazione per la transazione.

GoogleTransactionReferenceNumberCriteria

Criteri di ricerca dei pagamenti basati sul numero di riferimento della transazione generato da Google.

Rappresentazione JSON
{
  "googleTransactionReferenceNumber": string,
  "authorizationCode": string
}
Campi
googleTransactionReferenceNumber

string

OBBLIGATORIO: il numero di riferimento della transazione generato da Google che identifica in modo univoco il pagamento.

authorizationCode

string

REQUIRED: il codice di autorizzazione per la transazione.

RequestOriginator

Informazioni sull'organizzazione o sul sottogruppo dell'organizzazione e, facoltativamente, sul dipendente da cui ha avuto origine la richiesta. In questo modo Google può identificare problemi o comportamenti illeciti e implementare controlli a un livello più granulare rispetto a paymentIntegratorAccountId. È particolarmente importante quando il chiamante è un fornitore di servizi intermediario che recupera le richieste da più client esterni.

Rappresentazione JSON
{
  "organizationId": string,
  "organizationDescription": string,
  "agentId": string
}
Campi
organizationId

string

OBBLIGATORIO: un identificatore dell'azienda, dell'organizzazione o del gruppo di organizzazioni da cui ha avuto origine la richiesta. Deve essere univoco all'interno di questo paymentIntegratorAccountId.

organizationDescription

string

OBBLIGATORIO: un nome o una descrizione leggibile dell'organizzazione che può essere utilizzato per facilitare la comunicazione tra i dipendenti di Google e l'integratore in merito a tale organizzazione.

agentId

string

FACOLTATIVO: un identificatore univoco dell'agente specifico (dipendente) dell'organizzazione identificato da organizationId da cui ha avuto origine la richiesta. Deve essere univoco all'interno di questo organizationId.

GetDisputeInquiryReportResultCode

Il risultato della chiamata al metodo getDisputeInquiryReport.

Enum
UNKNOWN_RESULT Non impostare mai questo valore predefinito.
SUCCESS Il pagamento è stato trovato e viene fornito un report.
PAYMENT_NOT_FOUND Il pagamento richiesto non è stato trovato.
PAYMENT_TOO_OLD Il pagamento richiesto è stato trovato, ma non è stato fornito un report a causa della data del pagamento.
ORDER_CANNOT_BE_RETURNED Il pagamento richiesto appartiene a un ordine esistente, ma non può essere restituito. Tra le possibili cause rientrano i casi in cui l'ordine è stato rimosso su richiesta del relativo proprietario.
NO_ADDITIONAL_DETAILS È stato trovato il pagamento richiesto, ma non è disponibile alcun report.

PurchaseReport

Un report contenente i dettagli pertinenti dell'acquisto associato al pagamento richiesto.

Rappresentazione JSON
{
  "customerAccount": {
    object (CustomerAccount)
  },
  "order": {
    object (Order)
  },
  "payment": {
    object (Payment)
  }
}
Campi
customerAccount

object (CustomerAccount)

OBBLIGATORIO: le informazioni relative al cliente e al suo account.

order

object (Order)

OBBLIGATORIO: informazioni relative all'ordine mediante il quale è stato effettuato il pagamento.

payment

object (Payment)

FACOLTATIVO: informazioni relative al pagamento. Nota: sono possibili più pagamenti per un singolo ordine, ma saranno incluse solo le informazioni relative al pagamento identificato nella richiesta originale. Non disponibile per tutti i tipi di ordine.

CustomerAccount

Informazioni sull'account del cliente

Rappresentazione JSON
{
  "customerEmail": string,
  "customerName": string
}
Campi
customerEmail

string

REQUIRED: l'indirizzo email associato all'Account Google del cliente.

customerName

string

REQUIRED: nome del cliente.

Ordine

Informazioni sull'ordine.

Rappresentazione JSON
{
  "timestamp": string,
  "orderId": string,
  "currencyCode": string,
  "subTotalAmount": string,
  "totalAmount": string,
  "shippingAddress": {
    object (Address)
  },
  "items": [
    {
      object (Item)
    }
  ],
  "taxes": [
    {
      object (Tax)
    }
  ]
}
Campi
timestamp

string (int64 format)

FACOLTATIVO: timestamp relativo a quando è stato effettuato l'ordine, espresso in millisecondi dall'epoca. Non disponibile per tutti i tipi di ordine.

orderId

string

FACOLTATIVO: una stringa che identifica in modo univoco l'ordine. Non disponibile per tutti i tipi di ordine.

currencyCode

string

FACOLTATIVO: codice valuta ISO 4217 di tre lettere per tutti gli importi dell'ordine. Non disponibile per tutti i tipi di ordine.

subTotalAmount

string (Int64Value format)

FACOLTATIVO: l'importo totale di questo ordine al netto delle imposte, espresso in micro della valuta specificata in order.currencyCode. È uguale a SUM(items.totalPrice). Non disponibile per tutti i tipi di ordine.

totalAmount

string (Int64Value format)

FACOLTATIVO: l'importo totale di questo ordine, tasse incluse, espresso in micro della valuta specificata in order.currencyCode. È uguale a subTotalAmount + SUM(taxes.amount). Non disponibile per tutti i tipi di ordine.

shippingAddress

object (Address)

FACOLTATIVO: indirizzo di spedizione per gli articoli fisici inclusi nell'ordine.

items[]

object (Item)

OBBLIGATORIO: elenco degli articoli che facevano parte dell'ordine.

taxes[]

object (Tax)

OBBLIGATORIO: elenco degli articoli che facevano parte dell'ordine. Questo elenco potrebbe essere vuoto.

Indirizzo

Struttura con informazioni su un indirizzo.

Rappresentazione JSON
{
  "name": string,
  "addressLine": [
    string
  ],
  "localityName": string,
  "administrativeAreaName": string,
  "postalCodeNumber": string,
  "countryCode": string
}
Campi
name

string

FACOLTATIVO: nome completo del cliente.

addressLine[]

string

FACOLTATIVO: contiene il testo non strutturato dell'indirizzo.

localityName

string

FACOLTATIVO: si tratta di un termine generico, ma in genere si riferisce alla parte di un indirizzo relativa a città/paese. Nelle regioni del mondo in cui le località non sono ben definite o non si adattano bene a questa struttura (ad esempio, Giappone e Cina), lascia il campo localtyName vuoto e utilizza addressLine.

Esempi: città degli Stati Uniti, comune italiano, città del Regno Unito.

administrativeAreaName

string

FACOLTATIVO: suddivisione amministrativa di primo livello del paese. Esempi: stato USA, regione IT, provincia CN, prefettura Giappone.

postalCodeNumber

string

FACOLTATIVO: a prescindere dal nome, i valori postaliCodeNumber sono spesso alfanumerici. Esempi: "94043", "SW1W", "SW1W 9TQ".

countryCode

string

FACOLTATIVO: il codice paese dell'indirizzo del cliente, che dovrebbe essere ISO-3166-1 Alpha-2.

Articolo

Informazioni su un articolo dell'ordine.

Rappresentazione JSON
{
  "description": string,
  "merchant": string,
  "quantity": string,
  "totalPrice": string,
  "googleProductName": string
}
Campi
description

string

FACOLTATIVO: una descrizione dell'articolo acquistato. Non disponibile per tutti i tipi di ordine.

merchant

string

OBBLIGATORIO: il venditore, l'artista o il produttore dell'articolo.

quantity

string (Int64Value format)

FACOLTATIVO: la quantità ordinata dell'articolo.

Questo campo verrà omesso se le quantità intere non sono applicabili al prodotto (ad esempio, i prodotti dosatori possono avere quantità frazionarie).

totalPrice

string (Int64Value format)

FACOLTATIVO: il prezzo totale dell'elemento, espresso in micro della valuta specificata in order.currencyCode. Se il campo quantity è compilato, riflette il prezzo totale dell'intera quantità. Non disponibile per tutti i tipi di ordine.

googleProductName

string

OBBLIGATORIO: nome del servizio prodotti Google per l'articolo.

Tasse

Informazioni su un'imposta applicabile a questo ordine.

Rappresentazione JSON
{
  "description": string,
  "amount": string
}
Campi
description

string

REQUIRED: una descrizione dell'imposta.

amount

string (Int64Value format)

REQUIRED: l'importo dell'imposta espresso in micro della valuta specificata in order.currencyCode.

Pagamento

Informazioni sul pagamento.

Rappresentazione 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.
}
Campi
billingAddress

object (Address)

REQUIRED: indirizzo di fatturazione per questo pagamento.

amount

string (Int64Value format)

OBBLIGATORIO: l'importo di questo pagamento, espresso in micro della valuta specificata in order.currencyCode. Nota: potrebbe non corrispondere a order.totalAmount se l'ordine è stato pagato tramite più pagamenti.

refunds[]

object (Refund)

OBBLIGATORIO: elenco dei rimborsi effettuati per questo pagamento. Questo elenco potrebbe essere vuoto.

Campo di unione fopDetails.

fopDetails può essere solo uno dei seguenti:

cardDetails

object (PaymentCardDetails)

FACOLTATIVO: dettagli di pagamento specifici per i FoP di carte di credito e di debito.

Rimborso

Informazioni su un rimborso effettuato per un pagamento.

Rappresentazione JSON
{
  "amount": string,
  "initiatedTimestamp": string
}
Campi
amount

string (Int64Value format)

OBBLIGATORIO: l'importo rimborsato, un numero positivo di micro della valuta specificata in order.currencyCode.

initiatedTimestamp

string (int64 format)

REQUIRED: timestamp relativo a quando è stato avviato il rimborso, espresso in millisecondi dall'epoca.

PaymentCardDetails

Dati di pagamento specifici di carte di credito e di debito.

Rappresentazione JSON
{
  "authResult": enum (AuthResult)
}
Campi
authResult

enum (AuthResult)

OBBLIGATORIO: risultato dell'autenticazione del pagamento.

AuthResult

Risultati dell'autenticazione dei pagamenti.

Enum
UNKNOWN_RESULT Non impostare mai questo valore predefinito.
APPROVED Autorizzazione approvata.
DENIED Autorizzazione negata.
NOT_ATTEMPTED Autenticazione non tentata.