Method: getDisputeInquiryReport

Ricevi un report che fornisce informazioni per facilitare una conversazione con un utente nell'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 era sconosciuta, questo metodo restituirà un errore HTTP 404 con un corpo vuoto. Se è possibile verificare la firma della richiesta, nel corpo della risposta verranno restituite ulteriori informazioni sull'errore.

Ecco un esempio di richiesta:


{
  "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 pagamenti che identifica il chiamante e i vincoli contrattuali associati a questa interazione.

paymentLookupCriteria

object (PaymentLookupCriteria)

OBBLIGATORIO: criteri che indicano il pagamento da cercare per questa richiesta.

existingGoogleClaimId

string

FACOLTATIVO: una stringa generata da Google restituita da una precedente chiamata a getDisputeInquiryReport che identifica in modo univoco la rivendicazione della contestazione del cliente.

Se non è presente, verrà generato un nuovo ID reclamo. Il chiamante potrebbe fornire un valore googleClaimId restituito da una precedente chiamata al numero getDisputeInquiryReport se si tratta della continuazione della contestazione dello stesso cliente.

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

Non è possibile fornire un valore googleClaimId che non sia stato restituito da una chiamata precedente a getDisputeInquiryReport. In questo caso, verrà restituita una richiesta HTTP 400 Bad Request (Richiesta non valida HTTP 400).

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)

REQUIRED: il risultato della chiamata.

googleClaimId

string

FACOLTATIVO: una stringa generata da Google che identifica in modo univoco questa contestazione del cliente. (Presenta solo se result ha esito positivo).

Se existingGoogleClaimId è stato compilato nella richiesta, il valore sarà lo stesso. In caso contrario, sarà un valore appena generato. Questo valore può essere fornito nelle richieste future 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 esito positivo).

PaymentLookupCriteria

Contenitore dei criteri che possono cercare in modo univoco un pagamento. È necessario compilare un solo campo membro.

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

Campo 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: ricerca basata sul numero di riferimento della transazione Google.

captureRequestCriteria

object (CaptureRequestCriteria)

FACOLTATIVO: ricerca basata sull'ID richiesta di acquisizione.

ArnCriteria

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

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

string

REQUIRED: il numero di riferimento dell'acquirente (ARN) che identifica in modo univoco il pagamento. Deve essere 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.

CaptureRequestCriteria

Criteri di ricerca dei pagamenti basati sulla richiesta di acquisizione originale.

Rappresentazione JSON
{
  "captureRequestId": string
}
Campi
captureRequestId

string

REQUIRED: un identificatore univoco per questa transazione. Questo è il valore requestId generato da Google durante la chiamata capture che viene esaminata.

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 utile quando il chiamante è un fornitore di servizi intermediario che riceve 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 organizzativo 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 possa essere utilizzato per facilitare la comunicazione tra i dipendenti di Google e l'integratore in merito all'organizzazione.

agentId

string

FACOLTATIVO: un identificatore univoco dell'agente specifico (dipendente) dell'organizzazione identificata 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. Sono inclusi i casi in cui l'ordine è stato rimosso su richiesta del proprietario.
NO_ADDITIONAL_DETAILS Il pagamento richiesto è stato trovato, ma non è disponibile un 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: informazioni riguardanti il cliente e il suo account.

order

object (Order)

OBBLIGATORIO: informazioni relative all'ordine con cui è stato effettuato il pagamento.

payment

object (Payment)

FACOLTATIVO: informazioni relative al pagamento. Nota: sono possibili pagamenti multipli per un unico ordine, ma questo conterrà solo i dati relativi 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

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

customerName

string

REQUIRED: il 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 del momento in cui è stato effettuato l'ordine, rappresentato in millisecondi dall'epoca. Non disponibile per tutti i tipi di ordine.

orderId

string

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

currencyCode

string

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

subTotalAmount

string (Int64Value format)

FACOLTATIVO: importo totale di questo ordine al netto delle imposte, rappresentato come micro della valuta specificata in order.currencyCode. Questo valore è pari a SUM(items.totalPrice). Non disponibile per tutti i tipi di ordine.

totalAmount

string (Int64Value format)

FACOLTATIVO: importo totale di questo ordine, tasse incluse, rappresentati come micro della valuta specificata in order.currencyCode. Questo valore è pari a subTotalAmount + SUM(taxes.amount). Non disponibile per tutti i tipi di ordine.

shippingAddress

object (Address)

FACOLTATIVO: indirizzo di spedizione per gli articoli fisici di questo ordine.

items[]

object (Item)

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

taxes[]

object (Tax)

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

Indirizzo

Strutturare la conservazione delle informazioni relative a 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 dell'indirizzo non strutturato.

localityName

string

FACOLTATIVO: è un termine parziale, ma generalmente si riferisce alla porzione di città di un indirizzo. 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 vuoto il campo localtyName e utilizza addressLine.

Esempi: città USA, comune in Italia, città postale nel Regno Unito.

administrativeAreaName

string

FACOLTATIVO: suddivisione amministrativa di primo livello di questo paese Esempi: stato USA, regione IT, provincia CN, prefettura giapponese."

postalCodeNumber

string

FACOLTATIVO: nonostante il nome, i valoriPostalCodeNumber 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.

Elemento

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 di questo articolo.

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

totalPrice

string (Int64Value format)

FACOLTATIVO: il prezzo totale dell'elemento, rappresentato come 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 del prodotto Google associato all'articolo.

Tasse

Informazioni su una tassa applicabile a questo ordine.

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

string

REQUIRED: una descrizione delle tasse.

amount

string (Int64Value format)

OBBLIGATORIO: l'importo dell'imposta, rappresentato come 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)

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

refunds[]

object (Refund)

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

Campo unione fopDetails.

fopDetails può essere solo uno dei seguenti:

cardDetails

object (PaymentCardDetails)

FACOLTATIVO: dati di pagamento specifici per il credito e FoP delle carte di debito.

Rimborso

Informazioni su un rimborso effettuato per un pagamento.

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

string (Int64Value format)

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

initiatedTimestamp

string (int64 format)

REQUIRED: timestamp della data di inizio del rimborso, espresso in millisecondi dal periodo.

PaymentCardDetails

Dettagli di pagamento specifici per credito e carte di debito.

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

enum (AuthResult)

OBBLIGATORIO: risultato dell'autorizzazione al pagamento.

AuthResult

Risultati dell'autorizzazione al pagamento.

Enum
UNKNOWN_RESULT Non impostare mai questo valore predefinito.
APPROVED Autorizzazione approvata.
DENIED Autorizzazione negata.
NOT_ATTEMPTED Tentativo di autenticazione non tentato.