API initCheckout

Richiesta generazione nuovo checkout (Server esercente > Tinaba): nella response viene restituito un payment code valido per effettuare il pagamento.

Spiegazione degli attributi

Nome campoTipoMandatorioDescrizione
merchantIdStringYesIdentificativo dell'esercente assegnato da TINABA.
merchantDeviceIdStringNoTerminale collegato alla transazione (ID univoco della cassa)
externalIdStringYesIdentificativo del pagamento pendente sul server dell'esercente. Deve essere univoco per ogni chiamata.
amountStringYesImporto in centesimi.
currencyStringYesDivisa (EUR).
descriptionStringNoDescrizione da associare al pagamento.
validToStringNoAttesa massima prima del timeout (stringa numerica che esprime i minuti). Se non specificato sarà utilizzato quello di default di Tinaba.
creationDateStringYesData di creazione del pagamento su server dell'esercente (formato data yyyyMMdd). Utilizzato solo per la verifica dell'integrità dei dati.
creationTimeStringYesOra di creazione del pagamento su server dell'esercente (formato ora hhmmss). Utilizzato solo per verifica dell'integrità dei dati.
paymentModeStringYesValori possibili: ECOMMERCE, MEDIA, PREAUTH.

ECOMMERCE: il pagamento non richiede una conferma da parte dell'esercente. L’utente completa il trasferimento direttamente da app Tinaba;

PREAUTH: il pagamento richiede una conferma da parte dell'esercente. Alla conferma dell’utente tramite app Tinaba, verranno scalati i fondi dal suo saldo disponibile, in attesa della conferma da parte dell'esercente;

MEDIA: La modalità media pensata per contenuti digitali obbliga il pagamento all’utente solo la prima volta per specifico productCodeId. I tentativi successivi al primo pagamento non richiederanno un nuovo pagamento all’utente.
productCodeIdStringNoSe paymentMode = MEDIA, questo campo è obbligatorio ed è utilizzato come codice univoco di prodotto. Se l’utente compra più volte lo stesso prodotto gli sarà richiesto un solo pagamento.
metadataStringNoJSON libero dell'esercente con informazioni addizionali da poter mostrare in app (da concordare con Tinaba).
notificationCallbackStringYesURL dell'esercente presso cui sarà inviata la notifica S2S.
notificationHttpMethodStringYesMetodo http da usare per contattare l’endpoint di notifica S2S.
sendReceiverAddressBooleanNoSe true, viene configurata la modalità one-click. L'esercente riceverà all'interno della notifica S2S anche le informazioni di spedizione e fatturazione dell’utente che ha completato il pagamento.
signatureStringYesFirma di autenticazione e integrità dei dati.

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

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

Integrità dei dati >

Spiegazione degli attributi – risposta

Nome campoTipoMandatorioDescrizione
statusStringYes000 = OK











001 = KO.
paymentCodeStringNoValorizzato solo se status = 000.













Identificativo del checkout.
errorCodeStringNoValorizzato solo se status = 001.













Codice di errore.
paymentCodeURLStringNoNon utilizzato.

Richiesta


{
  "data": {
    "request": {
      "initCheckoutRequest": {
        "merchantId": "12",
        "externalId": "TR_1",
        "amount": "100",
        "currency": "EUR",
        "description": "Pagamento e-commerce",
        "validTo": "2",
        "creationDate": "20170111",
        "creationTime": "141054",
        "paymentMode": "ECOMMERCE",
        "metadata": "{"articolo":"12345"}",
        "signature": "AAIF34576……943",
        "notificationCallback": "http://example.com/notify",
        "notificationHttpMethod": "POST"
      }
    }
  }
}

Risposte

200 Success


{
  "response": {
    "initCheckoutResponse": {
      "status": "000",
      "paymentCode": "AAAID7865"
    }
  }
}

400 Errore Validazione


{
    "response": {
        "initCheckoutResponse": {
            "status": "001",
            "errorCode": "XXXXX"
        }
    }
}

$initCheckoutRequest = new InitCheckoutRequest();
$initCheckoutRequest->setExternalId(‘TR_01’)
    ->setAmount(‘100’) // Expressed in cents
    ->setCurrency(‘EUR’)
    ->setDescription(‘Customized Mug purchase’)
    ->setValidTo(’10’) // Expressed in minutes
    ->setCreationDateTime(Carbon::now())
    ->setPaymentMode(InitCheckoutRequest::MODE_ECOMMERCE)
    ->setNotificationUrl(‘https://example.com/TR_01/status’)
    ->setNotificationHttpMethod(‘POST’);
// The API Client instantiated before
$response = $client->initCheckout($initCheckoutRequest);
echo "Payment code: " . $response->code;
// Available payment modes are
InitCheckoutRequest::MODE_PREAUTH;
InitCheckoutRequest::MODE_ECOMMERCE;
InitCheckoutRequest::MODE_MEDIA;

Per l'SDK PHP completo visitare questo link


from sdk.objects import InitCheckoutRequest
from datetime import datetime
action = factory.make(‘init.checkout’)
action.body_params = InitCheckoutRequest(externalId=‘TR_01’,
                                         amount=‘100’,  # expressed in cents
                                         currency=‘EUR’,
                                         description=‘Customized Mug purchase’,
                                         validTo=’10’,  # expressed in minutes
                                         creationDateTime=datetime.now(),
                                         paymentMode=InitCheckoutRequest.MODE_ECOMMERCE,
                                         notificationCallback=‘https://example.com/TR_01/status’,
                                         notificationHttpMethod=‘POST’)
response = action.run()
print(‘Payment code: {}’.format(response.paymentCode))
# Available payment modes are
from sdk.objects import InitCheckoutRequest
InitCheckoutRequest.MODE_PREAUTH
InitCheckoutRequest.MODE_ECOMMERCE
InitCheckoutRequest.MODE_MEDIA

Per l'SDK PHP completo visitare questo link