# SDK Android

### Installation

1. Ajoutez la ligne suivante dans votre fichier root `settings.gradle` dans les `repertoires` de la section `dependencyResolutionManagement`

```gradle
maven { url 'https://jitpack.io' }
```

2. Ajoutez ceci dans le fichier `build.gradle` de votre application dans la section `dependencies`

```gradle
implementation 'com.github.kkiapay:android-sdk:<latestVersion>'
```

### Usage&#x20;

Récupérez votre clé d'API sur [le tableau de bord kkiapay dans la section `Développeurs`](https://app.kkiapay.me/dashboard/developers/keys) et initialisez le SDK dans votre classe d'application.

#### Initialisez l'API

Dans la méthode onCreate de votre classe Application :

```javascript
import co.opensi.kkiapay.uikit.Kkiapay
import co.opensi.kkiapay.uikit.SdkConfig

Kkiapay.init(applicationContext,
    "<kkiapay-api-key>",
    SdkConfig(themeColor = R.color.colorPrimary,
        /* définissez enableSandbox à false si vous utilisez les clés d'API live */
        enableSandbox = true )
)
```

### Exemple

```gradle
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import co.opensi.kkiapay.uikit.Kkiapay
```

```gradle
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    override fun onStart() {
        super.onStart()

        // Configure le listener pour le statut de paiement
        Kkiapay.get().setListener { status, transactionId ->
            // Ce code s'exécutera à la fin du paiement
            Toast.makeText(
                this@MainActivity,
                "Transaction: ${status.name} -> $transactionId",
                Toast.LENGTH_LONG
            ).show()
        }
    }

    override fun onResume() {
        super.onResume()
        val testButtonWithKkiapay = findViewById<Button>(R.id.test_button_with_kkiapay)
        testButtonWithKkiapay.setOnClickListener {
            // commence le processus de paiement
            // Ceci affichera le widget de paiement à l'utilisateur
            Kkiapay.get().requestPayment(
                this,
                1,
                reason = "Paiement d'un service",
                api_key = "<kkiapay-api-key>",
                sandbox = false,
                name = "Johna DOE",
                partnerId = "AxXxxXXid",
                phone = "22961877882",
                email = "email@mail.com",
                paymentMethods = listOf("momo", "card", "direct_debit"),
            )
        }
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        Kkiapay.get().handleActivityResult(requestCode, resultCode, data)
    }

}
```

### Références

<table data-header-hidden><thead><tr><th width="210">Attribut</th><th width="138">Type</th><th width="94">Requis</th><th>Description</th></tr></thead><tbody><tr><td>Attribut</td><td>Type</td><td>Requis</td><td>Description</td></tr><tr><td>api_key</td><td>String</td><td>Oui</td><td>Votre clé d'API publique</td></tr><tr><td>amount</td><td>Number</td><td>Oui</td><td>Le montant à débiter au client</td></tr><tr><td>phone</td><td>String</td><td>Oui</td><td>Numéro de téléphone du client à débiter. Ex: 22967434270</td></tr><tr><td>name</td><td>String</td><td>Non</td><td>Nom et prénoms du client</td></tr><tr><td>email</td><td>String</td><td>Non</td><td>L'email du client</td></tr><tr><td>partnerId</td><td>String</td><td>Non</td><td>Votre id pour retrouver la transaction</td></tr><tr><td>paymentMethods</td><td>Array of string</td><td>Non</td><td>Les méthodes de paiement à autoriser sur le widget. Ex: ["momo","card"]</td></tr><tr><td>sandbox</td><td>Boolean</td><td>Non</td><td>La valeur <em><strong>true</strong></em> de cet attribut vous permet de passer en mode test</td></tr><tr><td>reason</td><td>String</td><td>Non</td><td>La raison de la transaction</td></tr></tbody></table>
