Notifica S2S

Notifica server to server (S2S) circa lo stato del pagamento (Tinaba > Server dell'esercente).

Questo metodo che ottimizza lo scambio dati richiede una preventiva configurazione di sicurezza. Per usare la notifica S2S è necessario contattare Tinaba all'indirizzo ecommerce@tinaba.it per lo scambio di informazioni relative alla comunicazione tra le infrastrutture.

Spiegazione degli attributi

Nome campoTipoMandatorioDescrizione
externalIdStringYesIdentificativo del pagamento sul server dell'esercente, inviato durante la fase di creazione del pagamento pendente.
checkoutStateStringYesStato del pagamento.
000 = completato con successo
001 = completato con errore (pagamento fallito)
004 = prodotto già acquistato. Utilizzato solo se il paymentMode nella initCheckout = MEDIA. In questo caso l'utente può avere accesso al prodotto senza doverlo pagare nuovamente.
005 = pagamento preautorizzato da confermare. Utilizzato solo se il paymentMode nella initCheckout = PREAUTH
signatureStringYesFirma di autenticazione e integrità dei dati.
userAddressuserAddressNoSe configurata la modalità one-click, contiene le informazioni di spedizione e fatturazione dell’utente che ha concluso il pagamento
userAddress.nameStringYesNome Tinaba utente
userAddress.surnameStringYesCognome Tinaba utente
userAddress.emailStringYesEmail Tinaba utente
userAddress.shippingAddressshippingAddressNoIndirizzo di spedizione
userAddress.billingAddressbillingAddressNoIndirizzo di fatturazione
shippingAddress.receiverNameStringYesNome e cognome riportato sull’indirizzo
shippingAddress.addressStringYesIndirizzo
shippingAddress.streetNumberStringYesNumero civico
shippingAddress.cityStringYesCittà
shippingAddress.capStringYesCAP
shippingAddress.districtStringYesProvincia
shippingAddress.countryStringYesNazione
shippingAddress.sendAtStringNoPresso
shippingAddress.phoneNumberStringNoNumero di telefono
billingAddress.receiverNameStringYesNome e cognome di fatturazione
billingAddress.addressStringYesIndirizzo
billingAddress.streetNumberStringYesNumero civico
billingAddress.cityStringYesCittà
billingAddress.capStringYesCAP
billingAddress.districtStringYesProvincia
billingAddress.countryStringYesNazione
billingAddress.fiscalCodeStringYesCodice fiscale

La firma d’integrità dei dati, scambiata nel campo “signature”, è basata su un segreto condiviso, scambiato offline, ed è generata utilizzando il protocollo SHA256.

signature = base64(SHA256(<merchantid><datefrom><dateto><secret>))</secret></dateto></datefrom></merchantid>

Per maggiori informazioni su come generare la firma d’integrità consultare:

Integrità dei dati >

Spiegazione degli attributi – risposta

Nome campoTipoMandatorioDescrizione
statusStringYes000 = OK


001 = KO

Richiesta


{
  "externalId":"TR_1",
  "checkoutState":"000"
}

Risposte

200 Success


{
  "status":"000"
}

400 Errore Validazione


{
  "status":"001",
  "errorCode":"XXX"
}

// The request body as an associative array
$requestBody = json_decode($request->body, true);

$callbackRequest = CheckoutStateCallback::parse($request->body)

$valid = $client->verifyCallback($callbackRequest);

if($valid) {
  $successResponse = new CallbackSuccessResponse();

  // Return the response as json
  $responseBody = json_encode($successResponse->toArray());

  /*
   * Send the response as JSON with $responseBody as payload.
   * The following line is for example purpose only.
   */
  return response()->json($responseBody, 200);
}else {
  // Handle error
}

Per l'SDK PHP completo visitare questo link


from sdk.callbacks import CheckoutStateCallback
from sdk.exceptions import ValidationError

try:
    callback = CheckoutStateCallback.create(request.json())
    # handle callback
    # return a response with body {"status": "000"}
except ValidationError:
    # handle exception

Per l'SDK PHP completo visitare questo link