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 | iOS |
---|---|
1.0.0...1.0.5 | 9.0+ |
- Scarica il file zip dell'ultima versione da https://github.com/SisalSpA/bill-consumer-ios-sdk/releases
- Importa il framework all'interno del tuo progetto
- Aggiungi all'interno del
Podfile
la seguente riga:pod 'BillConsumerSDK'
- Aprire il terminale ed eseguire il comando
pod install
Entrambe le soluzioni prevedono l'utilizzo del framework tramite l'importazione all'interno dei file sorgente del progetto.
Swift
import BillConsumerSDK
Objective-C
#import <BillConsumerSDK/BillConsumerSDK.h>
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 block (Objective-C) o closure (Swift) 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 dei blocks o closures 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 |
Swift
BillConsumerSDK.shared().set(partnerKey: String, partnerID: String, partnerSecret: String)
Objective-C
[[BillConsumerSDK sharedInstance] setPartnerKey:partnerKey partnerID:partnerID partnerSecret: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 Dictionary
per l'API pay
:
Parametro | Tipo | Obbligatorio | Note |
---|---|---|---|
vatCode |
String | Si | |
transactionToken |
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 block (Objective-C)/ closure (Swift):
Parametro | Note |
---|---|
SDKConsumerGenericError | Errore generico |
SDKConsumerBillOpened | L'app Bill è installata ed è stata aperta |
SDKConsumerTransactionOK | La WebView è stata aperta e la transazione è andata a buon fine |
SDKConsumerTransactionKO | La WebView è stata aperta e la transazione non è andata a buon fine |
SDKConsumerTransactionTimeout | La WebView è stata aperta ma la transazione è andata in timeout |
SDKConsumerTransactionCanceled | La WebView è stata aperta ma la transazione è stata annullata |
Swift
BillConsumerSDK.shared().pay([vatCode: vatCode, transactionToken: transactionToken, timeout: timeout])
Objective-C
[[BillConsumerSDK sharedInstance] payWithParameters:@{kVatCode: vatCode, kTransactionToken: transactionToken, kTimeout: timeout}];
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 Dictionary
per l'API pay
:
Parametro | Tipo | Obbligatorio | Note |
---|---|---|---|
vatCode |
String | Si | |
amount |
Double | Si | |
latitude |
Double | Si | |
longitude |
Double | Si |
Verrà restituito un enum
di tipo BillConsumerSDKResponse
all'interno di una block (Objective-C)/ closure (Swift):
Parametro | Note |
---|---|
SDKConsumerGenericError | Errore generico |
SDKConsumerBillInstallationNotValid | L’app non è presente sul dispositivo oppure il device non rispetta gli standard di Bill |
SDKConsumerNoShop | Non è stato trovato alcun shop vicino alle coordinate fornite |
SDKConsumerGenericShopError | Errore generico con lo shop |
SDKConsumerBillOpened | L'app Bill è installata ed è stata aperta |
Swift
BillConsumerSDK.shared().pay([vatCode: vatCode, amount: amount, latitude: latitude, longitude: longitude])
Objective-C
[[BillConsumerSDK sharedInstance] payWithParameters:@{kVatCode: vatCode, kAmount: amount, kLatitude: latitude, kLongitude: longitude}];
Nel caso in cui si sia in possesso del solo token di transazione bisogna aggiungere le seguenti chiave-valore nel Dictionary
per l'API pay
:
Parametro | Tipo | Obbligatorio | Note |
---|---|---|---|
transactionTokenOnly |
String | Si |
Verrà restituito un enum
di tipo BillConsumerSDKResponse
all'interno di una block (Objective-C)/ closure (Swift):
Parametro | Note |
---|---|
SDKConsumerGenericError | Errore generico |
SDKConsumerBillOpened | L'app Bill è installata ed è stata aperta |
SDKConsumerTransactionOK | La WebView è stata aperta e la transazione è andata a buon fine |
SDKConsumerTransactionKO | La WebView è stata aperta e la transazione non è andata a buon fine |
SDKConsumerTransactionTimeout | La WebView è stata aperta ma la transazione è andata in timeout |
SDKConsumerTransactionCanceled | La WebView è stata aperta ma la transazione è stata annullata |
Swift
BillConsumerSDK.shared().pay([transactionTokenOnly: transactionToken])
Objective-C
[[BillConsumerSDK sharedInstance] payWithParameters:@{kTransactionTokenOnly: transactionToken}];
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 |
---|---|
partnerID |
String |
transactionToken |
String |
handler |
Block / Closure |
Verrà restituito un enum
di tipo BillConsumerSDKResponse
all'interno di una block (Objective-C)/ closure (Swift):
Parametro | Note |
---|---|
SDKConsumerGenericError | Errore generico |
SDKConsumerGenericStatusError | Errore generico con lo stato della transazione |
SDKConsumerTransactionOK | La transazione è andata a buon fine |
SDKConsumerTransactionKO | La transazione non è andata a buon fine |
SDKConsumerTransactionPending | L'app Bill è installata ed è stata aperta |
SDKConsumerTransactionTimeout | Latransazione è andata in timeout |
SDKConsumerTransactionCanceled | La transazione è stata annullata |
Swift
BillConsumerSDK.shared().transactionStatus(partnerID: partnerID, transactionToken: transactionToken, completionHandler: completionHandler)
Objective-C
[[BillConsumerSDK sharedInstance] transactionStatusWithPartnerID:partnerID withTransactionToken:transactionToken withCompletionHandler:completionHandler];
To see what has changed in recent versions of BillConsumerSDK, see the CHANGELOG.md file.
BillConsumerSDK is available under the Apache 2.0 license. See the LICENSE file for more info.