# SDK Swift pour iOS

Le kit de développement (SDK) KKiaPay pour Swift est conçu afin de permettre l'intégration de notre plugin au sein de votre application mobile de la manière la plus simplifiée possible.

Après avoir créé votre compte KKiaPay sur la plateforme [kkiapay.me](http://www.kkiapay.me), vous aurez besoin de créer une instance de KKiaPay en procédant comme suit :

* **Ajouter le SDK Swift de KKiaPay dans votre application**

Vous pouvez ajouter le SDK Swift de KKiaPay à votre projet en utilisant le gestionnaire de packages de Swift.

{% hint style="info" %}
Guide pratique pour l'installation d'un package avec Swift : [Installation d'un package](https://github.com/apple/swift-package-manager/tree/main/Documentation).
{% endhint %}

* **Importer le package KKiaPay**

L'intégration du SDK KKiaPay se fait simplement et rapidement via npm :

```swift
 import KKiaPaySDK;
```

* **Créer un modèle à utiliser ultérieurement**

```swift
@ObservedObject var viewModel = KKiaPayViewModel()
```

* **Ajouter une instance de KKiaPay**

```swift
 private var kkiaPay: KKiaPay{
    KKiaPay(amount: "3000",
            phone: "22997000000",
            data: "Hello world",
            publicAPIKey: "xxxxxxxxxxxxxxxxxxx",
            sandbox: true,//set this to false in production
            theme: "#4E6BFC",
            name: "John Doe",
            email:"user@email.com",
            callback: "https://redirect.kkiapay.com",
            viewModel:viewModel
    )
}
```

<table><thead><tr><th width="165.5466958575791">Paramètres</th><th width="169.35071572084505">Type</th><th>Description</th></tr></thead><tbody><tr><td>amount</td><td>Numeric</td><td>Le montant à payer en FCFA</td></tr><tr><td>phone</td><td>String</td><td>Un numéro mobile money valide</td></tr><tr><td>data</td><td>String</td><td>La donnée ou information liée à une transaction et interprétable par votre système</td></tr><tr><td>publicAPIKey</td><td>String</td><td>La <a href="https://docs.kkiapay.me/v1/compte/untitled#recuperation-des-cles-de-lapi-kkiapay">clé publique</a> liée à votre <a href="https://docs.kkiapay.me/v1/compte/creation-dun-compte">compte KKiaPay</a>​</td></tr><tr><td>name</td><td>String</td><td>Les nom et prénoms de l’initiateur du paiement</td></tr><tr><td>email</td><td>String</td><td>L’adresse mail de l’initiateur du paiement</td></tr><tr><td>sandbox</td><td>Boolean</td><td>Vous permet de basculer de l'environnement de test à l'environnement de production. La valeur <em><strong>true</strong></em> de cet attribut signifie que vous êtes en <a href="https://docs.kkiapay.me/v1/compte/kkiapay-sandbox-guide-de-test">environnement de test</a>​</td></tr><tr><td>callback</td><td>Function</td><td>La fonction de callback appelée uniquement lorsque le paiement est effectué avec succès</td></tr></tbody></table>

{% hint style="danger" %}
**Important !**&#x20;

Afin d'éviter toute fraude, procédez à la vérification côté serveur de l'opération de transaction. Pour cela, apprenez-en plus sur les [SDKs Serveurs](https://docs.kkiapay.me/v1/plugin-et-sdk/admin-sdks-server-side).
{% endhint %}

Vous pouvez souscrire aux événements liés à l'opération de paiement avec la fonction **onReceive.** Pour être notifié du statut réussi d'une opération de paiement, vous pouvez procéder comme suit :&#x20;

```swift
kkiaPay.onReceive(self.viewModel.paymentData.receive(on: RunLoop.main)){paymentData in
    
    if(paymentData.isSuccessful){
        print("The amount of the transaction is " + paymentData.amount+" with id "+paymentData.transactionId)
        showWebView = false
    }else{
        print("The payment was not successful")
    }
}
```

### Exemple d'utilisation

```swift
import SwiftUI
import KKiaPaySDK

struct ContentView: View {
        //Create a view model instance to use later
        @ObservedObject var viewModel = KKiaPayViewModel()
        @State private var showWebView = false
        
        //Initialise the Kkiapay Instance
        private var kkiaPay: KKiaPay{
            KKiaPay(amount: "3000",
                    phone: "97000000",
                    data: "Hello world",
                    publicAPIKey: "xxxxxxxxxxxxxxxxxxx",
                    sandbox: true,//set this to false in production
                    theme: "#4E6BFC",
                    name: "John Doe",
                    email:"user@email.com",
                    callback: "https://redirect.kkiapay.com",
                    viewModel:viewModel
            )
        }
        
        var body: some View {
            Button {
                showWebView.toggle()
            } label: {
                Text("Pay")
            }
            .sheet(isPresented: $showWebView) {
                
                //Get the transaction data back 
                kkiaPay.onReceive(self.viewModel.paymentData.receive(on: RunLoop.main)){paymentData in
                    
                    if(paymentData.isSuccessful){
                        print("The amount of the transaction is " + paymentData.amount+" with id "+paymentData.transactionId)
                        showWebView = false
                    }else{
                        print("The payment was not successful")
                    }
                }
            }
        }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
```

{% hint style="info" %}
Pour plus d'informations sur le package, rendez vous sur la page : [KKiaPay Swift SDK.](https://github.com/kkiapay/kkiapay-ios-sdk)
{% endhint %}
