Aller au contenu principal

Initialiser un Paiement

Pour initialiser un paiement dans le système NoWallet, utilisez le point de terminaison suivant :

POST{baseUrl}/init/payment

Paramètres du Corps de la Requête

Lors de l'initialisation d'un paiement, le corps de la requête doit inclure les paramètres suivants au format JSON :

NameInTypeRequiredDescription
bodybodyInitPaymentModelDTOtruenone

Exemple de Corps de Requête

{
"transaction_id": "ca3a65bb-9008-443d-8d4b-61c3b0006438",
"additional_infos": {
"customer_email": "[email protected]",
"customer_lastname": "Doe",
"customer_firstname": "John",
"customer_phone": "691234567"
},
"amount": 200,
"callback_url": "https://example.com/callback",
"return_url": "https://example.com/return",
"country_code": "CM",
"operators_code": ["OM"],
"method": "MERCHANT",
"tunnel": "CHECKOUTPAGE",
"operator_otp": "123456"
}

Exemples de Code dans Plusieurs Langages

Pour vous aider à intégrer l'API NoWallet facilement, nous fournissons des exemples de code dans divers langages de programmation. Ces exemples montrent comment effectuer une requête au point de terminaison de l'API et gérer la réponse.

  • Shell (cURL) : Pour des tests rapides et une utilisation en ligne de commande.
  • HTTP : Format brut de la requête HTTP pour comprendre la structure.
  • JavaScript : En utilisant fetch pour les environnements de navigateur ou Node.js.
  • Ruby : En utilisant la bibliothèque rest-client pour les applications Ruby.
  • Python : En utilisant la bibliothèque requests pour les projets Python.
  • PHP : En utilisant GuzzleHttp pour les intégrations PHP.
  • Java : En utilisant HttpURLConnection pour les applications Java.
  • Go : En utilisant le package net/http pour les projets Go.

Exemple de Requête

Voici un exemple de la façon d'initialiser un lien de paiement en utilisant différents langages. Sélectionnez l'onglet correspondant à votre langage préféré pour voir l'implémentation.

note

Assurez-vous de remplacer {access-token} par votre véritable jeton d'API et de fournir les paramètres requis dans la requête.

# Example of initializing a payment link using cURL
curl -X POST {baseUrl}/init/payment \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer {access-token}'

Paramètres de la Réponse

La réponse du serveur inclura les paramètres suivants au format JSON :

StatutSignificationDescriptionSchéma
200OKRéponse de succès pour l'initialisation du paiementInitPaymentResponseModelDto
400Bad RequestErreurs possibles dans la requêteAucun

Types de Réponse

La réponse du serveur inclura l'URL de l'initialisation du paiement et toute information pertinente. La réponse sera au format JSON.

Réponse de Succès (200 OK)

Réponse de succès pour l'initialisation du paiement

{
"country": "CM",
"currency": "XAF",
"signature": "EXAMPLE-XXXXX-XXXXX",
"available_operator": ["MTN", "OM"],
"authorized_operator": ["MTN", "OM"],
"payment_url": "https://example.com/payment",
"payment_otp": "ACHAT123456",
}

⚠️ Champ spécifique : payment_url

Le champ payment_url correspond à une URL de finalisation de paiement retournée par l’API dans certains cas spécifiques.

📌 Contexte d’utilisation

Lorsque ce champ est présent, cela signifie que le paiement nécessite une action utilisateur supplémentaire pour être complété.
Il est généralement utilisé dans le cadre des paiements via WAVE.

📲 Utilisation côté checkout

Quand payment_url existe dans la réponse :

  • L’URL doit être transformée en QR Code
  • Le QR Code doit être affiché sur la page de checkout
  • L’utilisateur scanne le QR Code avec son téléphone ou clique sur un bouton pour ouvrir le lien s'il est sur mobile
  • Il est automatiquement redirigé vers son application Wave
  • Le paiement est alors finalisé directement dans l’application Wave

🔄 Parcours utilisateur

Page de paiement → QR Code Wave → Scan → Application Wave → Paiement confirmé

⚠️ Champ spécifique : payment_otp

La propriété payment_otp est optionnelle et n’est retournée que dans un cas précis :

  • ✅ Uniquement lors de la finalisation des paiements (dépôts) via MyNita NIGER (NE)
  • ❌ Elle ne s’applique pas aux autres opérateurs ou pays

Utilisation de payment_otp

Lorsque le champ payment_otp est présent dans la réponse :

  • Le marchand doit afficher ou transmettre ce code à l’utilisateur final
  • Ce code permet à l’utilisateur de :
    • Finaliser le paiement directement dans l’application MyNita
    • Ou se rendre dans un guichet Nita agréé pour effectuer le paiement manuellement
attention

Le marchand ne doit pas modifier ce code.
Il doit être communiqué tel quel à l’utilisateur final.

Exemple de scénario MyNita NIGER (NE)

  1. Le marchand initialise un paiement
  2. L’API retourne une réponse contenant le champ payment_otp
  3. Le marchand affiche ou transmet le code à l’utilisateur (écran de confirmation, SMS, email, etc.)
  4. L’utilisateur :
    • Renseigne le code dans l’application MyNita
    • Ou se rend dans un guichet Nita agréé avec le code pour finaliser le paiement

Réponse d'Erreur (400 Bad Request)

Erreurs possibles dans la requête

{
"statusCode": 400,
"error": "ERROR_COUNTRY_CODE_NOT_FOUND",
"message": "It seems that this country code does not exist"
}
{
"statusCode": 400,
"error": "NOT_ALLOWED_TUNNEL_WITHOUT_PHONENUMBER",
"message": "API tunnel is allowed only if there is a customer_phone"
}
{
"statusCode": 400,
"error": "NOT_ALLOWED_TUNNEL_OPERATORS_CODE",
"message": "API tunnel is allowed only for single operators_code e.g. ['OM']"
}
{
"statusCode": 400,
"error": "ERROR_PHONE_NUMBER_LENGTH_IS_TOO_SHORT",
"message": "phone number invalid, the length of this phone number is too short"
}
{
"statusCode": 400,
"error": "ERROR_PHONE_NUMBER_OPERATOR_COUNTRY",
"message": "It seems that this number is not a valid phone number, the phone number is not valid for this operator or country"
}
{
"statusCode": 400,
"error": "ERROR_FEE_NOT_FOUND",
"message": "You cannot generate a signature, please contact administrator to get help."
}
{
"statusCode": 400,
"error": "ERROR_GENERATE_SIGNATURE",
"message": "Something went wrong during signature generation, please contact support to get help or try again."
}
{
"statusCode": 400,
"error": "ERROR_BALANCE_DEFICIT",
"message": "An error has occurred, the transaction signature could not be generated. Your balance is deficit. Please contact administrator to get help."
}

Cette page vous a-t-elle été utile ?