Features • Requisiti • Installazione ed Utilizzo • Ambienti • Documentazione • Changelog • Licenza
Lo strumento di pagamento Bill offre due modalità alternative per completare un pagamento:
App2App
, che tramite un’applicazione esterna consumer permette di inviare all’applicazione Bill una richiesta di pagamento sullo stesso dispositivoPush2App
, che tramite una notifica push permette di inviare una richiesta di pagamento su dispositivo selezionato dall’utente
Versione | Android |
---|---|
1.0.0...1.0.6 | 5.0+ |
All'interno del file build.gradle
:
- Aggiungere il repository di Maven Central:
mavenCentral()
- Aggiungere
implementation "it.sisal.bill:bill-consumer-android-sdk:1.+"
L'SDK prevede il supporto a più ambienti semplicemente aggiungendo alla file della partnerKey
o del transactionTokenOnly
il nome dell'ambiente.
Per l'ambiente di produzione non è necessario aggiungere alcun suffisso.
Ambiente | Suffisso |
---|---|
Produzione | |
Test | -EXTERNAL |
Se per esempio la chiave è
abcdefgh0123456789
questa diventeràabcdefgh0123456789-EXTERNAL
.
Tutte le API ("set" esclusa) prevedono l'utilizzo di lambda per la gestione di eventuali risposte. Queste non verranno chiamate sul main thread, rimane quindi responsabilità dello sviluppatore gestire l'esecuzione del codice all'interno delle lambda sul main thread.
All'avvio dell'app o del processo di pagamento è necessario inizializzare l'SDK utilizzando i parametri Parnter Key
, Partner ID
e Partner Secret
che saranno forniti per ogni integrazione.
Parametro | Tipo |
---|---|
partnerKey |
String |
partnerID |
String |
partnerSecret |
String |
context |
Context |
Kotlin
BillConsumerSDK.getInstance().set(context, partnerID, partnerKey, partnerSecret)
Java
BillConsumerSDK.getInstance().set(context, partnerID, partnerKey, partnerSecret);
Il flusso di pagamento prevede che l'applicazione esterna, tramite l'SDK, possa invocare l'applicazione Bill Consumer per effettuare una transazione.
I possibili risultati sono:
- Impossibilità di proseguire nel pagamento per incompatibilità con l’applicazione Bill Consumer
- Transazione andata a buon fine
- Transazione non andata a buon fine con relativo caso di errore da gestire
Il risultato della transazione deve comunque essere verificato tramite la funzionalità di controllo dell'esito della transazione.
Nel caso in cui si sia in possesso di un token di transazione bisogna aggiungere le seguenti chiave-valore nel Bundle
per l'API pay
:
Parametro | Tipo | Obbligatorio | Note |
---|---|---|---|
VAT_CODE |
String | Si | |
TRANSACTION_TOKEN |
String | Si | |
TIMEOUT |
Int | No | Timeout nel caso in cui l’app Bill non sia installata e venga aperta la WebView per completare il pagamento |
Verrà restituito un enum
di tipo BillConsumerSDKResponse
all'interno di una lambda:
Parametro | Note |
---|---|
SDK_CONSUMER_GENERIC_ERROR | Errore generico |
SDK_CONSUMER_BILL_OPENED | L'app Bill è installata ed è stata aperta |
SDK_CONSUMER_TRANSACTION_OK | La WebView è stata aperta e la transazione è andata a buon fine |
SDK_CONSUMER_TRANSACTION_KO | La WebView è stata aperta e la transazione non è andata a buon fine |
SDK_CONSUMER_TRANSACTION_TIMEOUT | La WebView è stata aperta ma la transazione è andata in timeout |
SDK_CONSUMER_TRANSACTION_CANCELED | La WebView è stata aperta ma la transazione è stata annullata |
Kotlin
val parameters = Bundle()
parameters.putString(PayParameters.VAT_CODE.value(), vatCode)
parameters.putString(PayParameters.TRANSACTION_TOKEN.value(), transactionToken)
parameters.putString(PayParameters.TIMEOUT.value(), timeout)
BillConsumerSDK.getInstance().pay(parameters)
Java
Bundle parameters = new Bundle();
parameters.putString(PayParameters.VAT_CODE.value(), vatCode);
parameters.putString(PayParameters.TRANSACTION_TOKEN.value(), transactionToken);
parameters.putString(PayParameters.TIMEOUT.value(), timeout);
BillConsumerSDK.getInstance().pay(parameters);
Nel caso in cui si sia in possesso di una posizione di un merchant o quella attuale dell'utente (longitudine e latitudine) bisogna aggiungere le seguenti chiave-valore nel Bundle
per l'API pay
:
Parametro | Tipo | Obbligatorio | Note |
---|---|---|---|
VAT_CODE |
String | Si | |
AMOUNT |
Double | Si | |
LATITUDE |
Double | Si | |
LONGITUDE |
Double | Si |
Verrà restituito un enum
di tipo BillConsumerSDKResponse
all'interno di una lambda:
Parametro | Note |
---|---|
SDK_CONSUMER_GENERIC_ERROR | Errore generico |
SDK_CONSUMER_BILL_INSTALLATION_NOT_VALID | L’app non è presente sul dispositivo oppure il device non rispetta gli standard di Bill |
SDK_CONSUMER_NO_SHOP | Non è stato trovato alcun shop vicino alle coordinate fornite |
SDK_CONSUMER_GENERIC_SHOP_ERROR | Errore generico con lo shop |
SDK_CONSUMER_BILL_OPENED | L'app Bill è installata ed è stata aperta |
Kotlin
val parameters = Bundle()
parameters.putString(PayParameters.VAT_CODE.value(), vatCode)
parameters.putString(PayParameters.AMOUNT.value(), amount)
parameters.putString(PayParameters.LATITUDE.value(), latitude)
parameters.putString(PayParameters.LONGITUDE.value(), longitude)
BillConsumerSDK.getInstance().pay(parameters)
Java
Bundle parameters = new Bundle();
parameters.putString(PayParameters.VAT_CODE.value(), vatCode);
parameters.putString(PayParameters.AMOUNT.value(), amount);
parameters.putString(PayParameters.LATITUDE.value(), latitude);
parameters.putString(PayParameters.LONGITUDE.value(), longitude);
BillConsumerSDK.getInstance().pay(parameters);
Questa API necessita del Context
per poter funzionare, quindi prima di chimare l'API pay
è necessario chiamare l'API set
con solo Context
come parametro:
Kotlin
BillConsumerSDK.getInstance().set(context)
Java
BillConsumerSDK.getInstance().set(context);
Nel caso in cui si sia in possesso del solo token di transazione bisogna aggiungere le seguenti chiave-valore nel Bundle
per l'API pay
:
Parametro | Tipo | Obbligatorio | Note |
---|---|---|---|
TRANSACTION_TOKEN_ONLY |
String | Si |
Verrà restituito un enum
di tipo BillConsumerSDKResponse
all'interno di una lambda:
Parametro | Note |
---|---|
SDK_CONSUMER_GENERIC_ERROR | Errore generico |
SDK_CONSUMER_BILL_OPENED | L'app Bill è installata ed è stata aperta |
SDK_CONSUMER_TRANSACTION_OK | La WebView è stata aperta e la transazione è andata a buon fine |
SDK_CONSUMER_TRANSACTION_KO | La WebView è stata aperta e la transazione non è andata a buon fine |
SDK_CONSUMER_TRANSACTION_TIMEOUT | La WebView è stata aperta ma la transazione è andata in timeout |
SDK_CONSUMER_TRANSACTION_CANCELED | La WebView è stata aperta ma la transazione è stata annullata |
Kotlin
BillConsumerSDK.getInstance().set(context)
val parameters = Bundle()
parameters.putString(PayParameters.TRANSACTION_TOKEN_ONLY.value(), transactionToken)
BillConsumerSDK.getInstance().pay(parameters)
Java
BillConsumerSDK.getInstance().set(context);
Bundle parameters = new Bundle();
parameters.putString(PayParameters.TRANSACTION_TOKEN_ONLY.value(), transactionToken);
BillConsumerSDK.getInstance().pay(parameters)
Alla conclusione di un pagamento è necessario controllare l'esito della transazione tramite la funzionalità esposta dall'SDK Bill.
I possibili risultati sono:
- Transazione andata a buon fine
- Transazione non andata a buon fine
- Transazione ancora in corso
- Transazione in timeout
Parametro | Tipo | Obbligatorio | Note |
---|---|---|---|
partnerID |
String | Si | |
transactionToken |
String | Si | |
listener |
Lambda | Si |
Verrà restituito un enum
di tipo BillConsumerSDKResponse
all'interno di una lambda:
Parametro | Note |
---|---|
SDK_CONSUMER_GENERIC_ERROR | Errore generico |
SDK_CONSUMER_GENERIC_STATUS_ERROR | Errore generico con lo stato della transazione |
SDK_CONSUMER_TRANSACTION_OK | La transazione è andata a buon fine |
SDK_CONSUMER_TRANSACTION_KO | La transazione non è andata a buon fine |
SDK_CONSUMER_TRANSACTION_PENDING | L'app Bill è installata ed è stata aperta |
SDK_CONSUMER_TRANSACTION_TIMEOUT | La transazione è andata in timeout |
SDK_CONSUMER_TRANSACTION_CANCELED | La transazione è stata annullata |
Kotlin
BillConsumerSDK.getInstance().transactionStatus(partnerID: String, transactionToken: String, billResponseListener: BillResponseListener)
Java
BillConsumerSDK.getInstance().transactionStatus(String partnerID, String transactionToken, BillResponseListener billResponseListener);
To see what has changed in recent versions of bill-consumer-android-sdk, see the CHANGELOG.md file.
bill-consumer-android-sdk is available under the Apache 2.0 license. See the LICENSE file for more info.