Binoxus Pay

Logo Binoxus Pay

Ce package vous permet de collecter le paiement par différents moyens : Carte de paiement Débit | Crédit. , Bin-Wallet , Mobile Money. Vous devez avoir un compte marchand dans pay.binoxus.com, Où vous trouverez vos coordonnées d'authentification.

Les étapes

L'utilisation du package est très simple, il suffit de suivre les étapes suivantes :

  • L'initialiser le paiement du côté serveur
  • Récupérer le systemRef et le token
  • Faire passer ces informations dans le widget BinoxusPayCheckout
  • Mettre votre logique en attendant le callback de retour de paiement
  • Le callback de retour peut être de type IBinoxusPayOnResponse ou IBinoxusPayOnError en cas d'erreurs inattendue

Les prérequis

Quelques prérequis sont nécessaires pour faire fonctionner correctement le package.

  • Android

    • Ajouter les permissions suivantes dans le fichier android/app/src/main/AndroidManifest.xml

      ```xml
          <application
           ...
              android:usesCleartextTraffic="true">
              ...
          </application>
          ...
          <uses-permission android:name="android.permission.INTERNET"/>
          
      ```
      
      • Modifier la version du minSdkVersion dans le fichier _android/app/src/build.gradle

        minSdkVersion 17

  • IOS

    • Ajouter la permission suivante dans le fichier ios/Runner/Info.plist

      ```plist
          <key>NSAppTransportSecurity</key>
          <dict>
              <key>NSAllowsArbitraryLoads</key>
              <true/>
          </dict>
          
      ```
      

Initialisation de paiement

Pour commencer, initialiser le paiement du côté serveur, vous aurez la réponse contenant des données telles que :

  • bin_status| Type EApiResponseStatusCode | Le status de l'opération d'initialisation, si c'est BIN000, l'opération a réussi, sinon, quelque chose s'est mal passée;
  • system_ref | L'identifiant du paiement dans le système;
  • customer_ref | L'identifiant de votre paiement;
    • token | Le token à utiliser lors de l'appel du widget de paiement;

Callback de retour de paiement

Lorsque le paiement est enclenché, le package reste en attente du statut final du paiement-ci. Ainsi, à la fin du paiement le package retour un callback du type IBinoxusPayOnResponse:

  • amount | Type : Double | Montant du paiement;
  • currency | Type : String | Devise du paiement;
  • binStatus | Statut de l'opération de paiement (BIN000 : l'opération a réussi, mais il faut vérifier le paymentStatus afin de s'assurer que le paiement a réussi , à partir de : BIN001, l'opération à échoué ) | Chaîne de caractère
    • paymentStatus | type : IPaymentStatus | Statut de l'opération de paiement (APPROVED ou FAIL) | Chaîne de caractère
  • customRef| Types : String | L'identifiant de votre paiement;
  • title | Types : String | Le titre correspondant au status de paiement;
  • systemRef | Types : String | L'identifiant du paiement dans Binoxus Pay;

Callback d'erreur de traitement

Lors du traitement, il peut survenir certains types d'erreurs telles que, certains paramètres pour le paiement manquantes. Le format de retour attendu est le suivant :

  • message | Chaîne de caractère : décrivant la raison de l'échec;
  • title | Chaîne de caractère : le titre de l'échec;

Utilisation du package

En resumé, le package s'utilise par le biais d'un appel appel widget :

```dart
    // CONFIG
    var configs =  IBinoxusPayConfigs(
        token:  'ONE_TIME_TOKEN',
    );
    var paymentBody =  IBinoxusPaymentBody(
        systemRef:  'SYSTEM_REF',
    );
    Navigator.of(context).push(
    // OUVRIR LA PAGE DE PAIEMENT
    MaterialPageRoute(
        builder: (context) =>  BinoxusPayCheckout(
        title:  "Binoxus Pay",
        titleBackgroundColor:  Colors.blue.shade900,
                    titleStyle:  const  TextStyle(color:  Colors.white),
        configs: configs,
        paymentBody: paymentBody,
        onResponse: (value) {
            debugPrint("onResponse : $value");
            if (value.binStatus == EApiResponseStatusCode.bIN000) {
            // PAYMENT SUCCEED

            } else {
            // PAYMENT FAILS
            }
        },
        onError: (value) {
            debugPrint("onError : $value");
            // PAYMENT FAILS
        },
        ),

    ));
```