• France
état des services
Back Office Marchand
assistance
FAQContacter le support
Tutoriels vidéo
Rechercher
Catégories
Tags
Français
Français
Anglais
Accueil
Cas d'usage
Créer un paiement
Créer un paiement en plusieurs fois
Proposer un paiement complémentaire
Créer un paiement par alias (token)
Créer un lien de paiement
Créer un abonnement
Gérer vos abonnements
Gérer vos transactions (rembourser,...)
Analyser vos journaux
Docs API
Formulaire embarqué
API REST
Formulaire en redirection
Intégration mobile
Échange de fichiers
Exemples de code
Logos
Push mail
Moyens de paiement
Modules de paiement
Guides
Back Office Marchand
Guides fonctionnels

Guide d'intégration React Native

1. Ajouter le SDK mobile à votre application

  1. Ajoutez dans votre fichier package.json la dépendance à notre [Native Module] (https://www.npmjs.com/package/@lyracom/react-native-sdk-payment-module).
{
  "dependencies": {
     "@lyracom/react-native-sdk-payment-module": "^1.0.0",
 },
}
  1. Ajoutez dans les dépendances du développement la référence à pod-install :
 "devDependencies": {
   "pod-install": "^0.1.0"
 },
  1. Modifiez le fichier Podfile dans votre dossier iOS :
  • Ajoutez use_frameworks! suite aux "require_relative" instructions.

  • Désactivez Flipper : mettez en commentaire la ligne :flipper_configuration => FlipperConfiguration.enabled.

  • Mettez à false les paramètres suivants : :hermes_enabled => false et :fabric_enabled => false.

  1. Run yarn.

  2. Run yarn pod-install --quiet.

Ajout du SDK mobile pour un projet Expo React Native

Si vous avez un projet Expo (managed workflow) pour ajouter le SDK mobile à votre application :

  1. Ajoutez dans votre fichier package.json la dépendance à notre [Native Module] (https://www.npmjs.com/package/@lyracom/react-native-sdk-payment-module).
{
  "dependencies": {
     "@lyracom/react-native-sdk-payment-module": "^1.0.0",
 },
}
  1. Ajoutez les dépendences suivantes dans votre fichier package.json :
{
  "dependencies": {
    "expo-build-properties": "~0.4.1",
    "expo-dev-client": "^2.0.1",
 },
}
  1. Dans votre fichier app.json ajoutez :
{
 "expo": {
   "plugins": [
     [
       "expo-build-properties",
       {
         "ios": {
           "useFrameworks": "dynamic"
         }
       }
     ]
   ]
 }}
  1. Run yarn.

Une fois que notre [Native Module] (https://www.npmjs.com/package/@lyracom/react-native-sdk-payment-module) est ajouté à votre application Expo (managed workflow), il ne sera pas possible de le tester en utilisant Expo Go.

Il faudra construire une application avec l’aide de expo-dev-client.

Pour cela :

  • Run eas build --profile development --platform ios.
  • Run eas build --profile development --platform android.
  • Installer l’application générée sur le périphérique correspondant.
  • Run expo start --dev-client.

Vous trouverez un exemple de code d'intégration de notre SDK dans une application Expo React Native dans le dépôt Github.

2. Initialiser le SDK mobile

  1. Appelez la méthode initialize avec ces paramètres :
    Paramètre Format Description Exemple
    publicKey String 2e clé du tableau des clés API REST. 73239078:testpublickey_Zr3fXIKKx0mLY9YNBQEan42ano2QsdrLuyb2W54QWmUJQ
    options Object Objet pour configurer le comportement du SDK mobile. Voir étape suivante.
  2. Dans l'objet options, utilisez ces paramètres :
    Clés Format Description Exemple
    apiServerName String 1e donnée du tableau des clés API REST. Obligatoire https://api.systempay.fr
    cardScanningEnabled Bool Active/Désactive la fonctionnalité de scan de la carte par caméra. Si elle n’est pas définie, la fonctionnalité sera désactivée. Facultatif True

En cas d'échec de l'initialisation du SDK mobile, voir : Gestion des erreurs.

Le SDK mobile ne permet pas de faire plusieurs process en parallèle. Pendant le traitement du premier appel, les autres appels seront ignorés (pas de callback, pas d'exception).

Exemple pour la boutique de démonstration

La fonction initialize est initialisée avec :

  • apiServerName valorisé à https://api.systempay.fr
  • publicKey valorisé à 73239078:testpublickey_Zr3fXIKKx0mLY9YNBQEan42ano2QsdrLuyb2W54QWmUJQ
            // Initialize Payment SDK
            initialize(
              config.publicKey,
              {
                cardScanningEnabled: true,
                apiServerName: "MY_API_SERVER_NAME",
              },
              async (result) => {
                // onError
                Alert.alert(result.error.errorMessage);
              }
            );

3. Réaliser un paiement

3.1 Créer un formToken

Vérifiez sur vos serveurs le montant du panier avant la création du formToken.

Requête
  1. Depuis votre serveur marchand, appelez le Web Service Charge/CreatePayment en envoyant le contexte de paiement (montant, devise, numéro de commande, coordonnées de l'acheteur, etc.).

    Pour des raison de sécurité et éviter des erreurs CORS, n'appelez pas le Web Service Charge/CreatePayment depuis votre application mobile.

  2. Valorisez le paramètre formTokenVersion avec le résultat de la méthode getFormTokenVersion du SDK mobile.

Exemple avec la génération du formToken

            const getProcessPaymentContext = async () => {
              var formTokenVersion = getFormTokenVersion();
              return fetch(config.merchantServerUrl + "/createPayment", {
                method: "POST",
                headers: {
                  Accept: "application/json",
                  "Content-Type": "application/json",
                },
                body: paymentParams,
              })
              .then((result) => result.json())
              .then((json) => json.answer.formToken)
              .catch((error) => {
                console.error(error);
              });
            };

Retrouvez tous les champs et leur description dans le playground : Charge/CreatePayment.

    <p></p>
Réponse

La réponse du Web Service Charge/CreatePayment contient un formToken.

C'est une clé générée par la plateforme de paiement. Elle contient les données du paiement (montant, devise, coordonnées de l'acheteur, etc.).

Le formToken est utilisé pour afficher le formulaire dans l'étape suivante.

3.2 Afficher l'écran de paiement

Transmettez le formToken lors de l'appel de la méthode Lyra.process avec ces paramètres :

Paramètre Format Description
formToken String Réponse du Web Service Charge/CreatePayment.
options Object Objet qui vous permet personnaliser le formulaire de paiement.
onSuccess (result: any) => void Fonction de callback appelée lorsque le paiement s'est déroulé correctement.
onError (result: any) => void Fonction de callback appelée lorsque le paiement n'a pu être initié ou a été refusé.

Si la fonction onError retourne un objet LyraError, consultez : Gestion des erreurs.

Exemple

            process(
            formToken!,
            options,
            async (result) => {
              // onSuccess
              // Verify the payment using your server
              verifyPayment(result.response)
              .then(() => {
                Alert.alert(`Payment success`);
              })
              .catch(() => {
                Alert.alert(`Payment verification fail`);
              });
            },
            async (result) => {
              // onError
              Alert.alert(result.error.errorMessage);
            }
            );

Le SDK mobile se charge alors de vérifier la cohérence du formToken puis affiche les moyens de paiement disponibles.

3.3 Procéder au paiement

En mode test, des exemples de carte de test sont disponibles : Cartes de test.

Pour passer en mode production, consultez la procédure.

4. Analyser le résultat du paiement

La plateforme de paiement envoie le résultat du paiement :

  • au SDK mobile en envoyant un objet LyraResponse à l'une des fonctions de callback onSuccess ou onError
  • au serveur marchand en appelant l'IPN. Nécessite le paramétrage des règles de notification.

4.1 Structure de la réponse

L'objet LyraResponse ainsi que l'objet JSON transmis dans l'IPN contiennent les données ci-dessous :

Paramètre Description
kr-hash-key Type de clé pour signer le kr-answer. Les valeurs possibles sont :
  • password pour l'IPN
  • sha256_hmac pour les fonctions de callback
kr-hash-algorithm Algorithme utilisé pour calculer le hash. Sa valeur est sha256_hmac.
kr-answer Objet contenant le résultat du paiement, encodé en JSON.
kr-answer-type Type de l'objet JSON contenu dans kr-answer.
kr-hash Hash de l'objet JSON stocké dans kr-answer. Il permet de vérifier l'authenticité de la réponse.

Exemple de réponse

{
   "kr-hash":"80f5188e757c1828e8d4ccab87467eb50c4299e4057fa03b3f3185342f6d509c",
   "kr-hash-algorithm":"sha256_hmac",
   "kr-answer-type":"V4\/Payment",
   "kr-answer": "{
      "shopId":"65512466",
      "orderCycle":"CLOSED",
      "orderStatus":"PAID",
     (...)
      "orderDetails":{
         "orderTotalAmount":1100,
         "orderEffectiveAmount":1100,
         "orderCurrency":"EUR",
         "mode":"TEST",
         "orderId":null,
         "_type":"V4\/OrderDetails"
      },
      "customer":{
         "billingDetails":{
            "address":null,
            "category":null,
            "cellPhoneNumber":null,
            ...
         },
         "email":null,
         "reference":null,
         "shippingDetails":{
            "address":null,
            "address2":null,
            "category":null,
            ...
         },
         (...)
         "shoppingCart":{
            "insuranceAmount":null,
            "shippingAmount":null,
            "taxAmount":null,
            "cartItemInfo":null,
            "_type":"V4\/Customer\/ShoppingCart"
         },
         "_type":"V4\/Customer\/Customer"
      },
      "transactions":[
         {
            "shopId":"65512466",
            "uuid":"64d704a9bb664898954c3ef537982f99",
            "amount":1100,
            "currency":"EUR",
            "paymentMethodType":"CARD",
            "status":"PAID",
            "detailedStatus":"AUTHORISED",
            "operationType":"DEBIT",
            ...
         }
      ],
      "_type":"V4\/Payment"
   }"
}

Retrouvez tous les champs et leur description dans le playground.

4.2 Analyser le résultat transmis à l'application

kr-answer est l'objet contenant le résultat du paiement, encodé en JSON.

  1. L'application mobile transmet l'objet LyraResponse au serveur marchand.
  2. Le serveur marchand calcule le kr-hash en utilisant la fonction hash_hmac et la clé HMAC-SHA-256 pour vérifier l'authenticité de la réponse.

    • Algorithme de chiffrement : SHA-256
    • Clé secrète : Clé HMAC-SHA-256 (3e clé du tableau des clés API REST)
    • Base d'encodage : héxadécimale (base 16)

    Si la valeur du kr-hash calculée par le serveur marchand est égale à celle contenue dans l'objet LyraResponse, alors le message est authentique.

  3. Le serveur marchand vérifie le statut du paiement (voir : références de status).
  4. Le serveur marchand communique le résultat à l'application mobile pour qu'elle l'affiche à l'acheteur.

Exemple de code sans le calcul du kr-hash

            const verifyPayment = async (paymentResult: any) => {
              return fetch(config.merchantServerUrl + "/verifyResult", {
                method: "POST",
                headers: {
                  Accept: "application/json",
                  "Content-Type": "application/json",
                },
                body: paymentResult,
              });
            };

4.3 Analyser le résultat depuis l'IPN

Voir : Analyse de l'IPN (URL de notification).

4.4 Gérer les erreurs

Voir : Codes d'erreur.

Restrictions

Les fonctionnalités suivantes ne sont pas disponibles :

  • la méthode cancelProcess() pour annuler le processus de paiement.
  • les fonctions du scan de la carte et du NFC.
© 2025 Tous droits réservés à SystempayMentions légales
25.22-1.11