SofizPay Logo

SofizPay

SofizPay Logo
SofizPay
Documentation Technique
Paiement CIB/Edahabiya

Accepter les paiements CIB/Edahabiya

Créez une transaction de paiement sécurisée en utilisant la passerelle de paiement CIB/Edahabiya avec prise en charge de la signature chiffrée et de la vérification de sécurité.

Point de terminaison API

GEThttps://sofizpay.com/make-cib-transaction/

Générateur d’URL

Lorsque keep_return_url = False, vous recevrez un callback signé pour vérifier la validité de la transaction.

URL générée :

http
https://sofizpay.com/make-cib-transaction/?account=GDNS27ISCGOIJFXC6CM4O5SVHVJPSWR42QEBWUFF24N5VVHGW73ZSJNQ&amount=150.75&full_name=Ahmed+Ben+Ali&phone=%2B213555123456&email=ahmed.benali%40example.com&return_url=https%3A%2F%2Fmystore.com%2Fpayment-callback&webhook_url=https%3A%2F%2Fmystore.com%2Fapi%2Fcib-webhook&invoice_id=INV-2026-001&language=en&memo=Order+%2312345&redirect=yes&keep_return_url=True

Paramètres de la requête

ParamètreTypeObligatoireDescription
accountstringObligatoireVotre compte Sofizpay pour recevoir les paiements
amountnumberObligatoireMontant du paiement en Dinar Algérien
full_namestringObligatoireNom complet du client
phonestringObligatoireNuméro de téléphone du client (de préférence au format international)
emailstringObligatoireAdresse e-mail du client
return_urlstring (URL)OptionnelL’URL de redirection après le paiement
webhook_urlstring (URL)OptionnelURL optionnelle (HTTP/HTTPS) pour recevoir des notifications webhook asynchrones sur le statut du paiement
invoice_idstringOptionnelID de facture optionnel pour lier le paiement à une facture existante
languagestringOptionnelLangue de la passerelle CIB ('ar' par défaut)
memostringOptionnelNote optionnelle pour la transaction (tronquée à 28 octets)
redirect'yes' | 'no'ObligatoireIndique si la redirection automatique doit être effectuée ou non
keep_return_url'True' | 'False'OptionnelSi True, le callback sera signé et la redirection inclura la signature chiffrée

Réponse réussie (200)

Lorsque la transaction est créée avec succès

json
{
  "success": true,
  "transaction_id": "600aed3b-8dd2-490c-8e45-9b81267b1f2b",
  "cib_transaction_id": "2517039448",
  "payment_url": "https://cib.satim.dz/payment/merchants/SATIM/payment_ar.html?mdOrder=HNsBw1u4An3Q44BCJ7LI",
  "amount": "150.75",
  "status": "pending_user_transfer_start",
  "more_info_url": "https://sofizpay.com/sep24/transaction/more_info?id=600aed3b-8dd2-490c-8e45-9b81267b1f2b",
  "webhook_url": "https://mystore.com/api/cib-webhook",
  "cib_response": {
    "errorCode": "0",
    "orderId": "isezBL9uLxWRBIBE56T7",
    "formUrl": "https://cib.satim.dz/payment/merchants/SATIM/payment_ar.html?mdOrder=HNsBw1u4An3Q44BCJ7LI"
  }
}

Réponse d’erreur (400)

Lorsqu’il y a des paramètres invalides ou manquants

json
{
  "status": "error",
  "message": "Invalid or missing parameters."
}

Notifications Webhook et Événements

Fournissez un paramètre webhook_url lors de l'initialisation d'une transaction pour recevoir des notifications instantanées de serveur à serveur dès que le statut de la transaction change.

L'URL du webhook doit utiliser le protocole HTTP ou HTTPS et contenir un nom de domaine valide.

Lorsque le paiement est approuvé ou refusé sur la passerelle CIB/Edahabiya, SofizPay envoie une requête HTTP POST à votre URL webhook avec le contenu JSON suivant :

cib.payment.updated (payment_status: "success")
json
1{
2  "event": "cib.payment.updated",
3  "payment_status": "success",
4  "transaction_id": "bb979126-4e55-49dd-8ecc-a1d59867d2b0",
5  "cib_transaction_id": "5965287001",
6  "order_id": "satim_order_a1b2c3d4",
7  "order_number": 5965287001,
8  "order_status": 2,
9  "amount": 150000,
10  "currency": "012",
11  "error_code": null,
12  "error_message": null,
13  "action_code": null,
14  "action_code_description": null,
15  "resp_code": "00",
16  "resp_code_desc": "Approved",
17  "message": "https://your-domain.com/api/webhook/success1500005965287001",
18  "signature": "MEQCIFz8v982hfkjdsf983274hfkjsdf...=="
19}

Champs du Payload Webhook

ParamètreTypeDescription
eventstringIdentifiant du type d'événement, toujours 'cib.payment.updated'
payment_status'success' | 'failed'Statut du paiement : 'success' ou 'failed'
transaction_idstring (UUID)Identifiant unique de transaction généré par SofizPay (UUID)
cib_transaction_idstringNuméro de commande de transaction CIB/Edahabiya (SATIM)
order_idstringIdentifiant de commande SATIM
order_numbernumberNuméro de commande numérique SATIM
order_statusnumberCode de statut SATIM (ex. : 2 pour approuvé/déposé, 6 pour refusé)
amountnumberMontant en centimes (ex. : 150000 = 1500.00 DZD)
currencystringCode numérique de devise ISO 4217 (012 pour DZD)
error_codenumber | nullCode d'erreur bancaire en cas d'échec (ou null si succès)
error_messagestring | nullMessage d'erreur descriptif de la banque (ou null si succès)
action_codenumber | nullCode d'action bancaire (ex. : 116 pour fonds insuffisants)
action_code_descriptionstring | nullDescription du code d'action bancaire
resp_codestringCode de réponse bancaire ('00' pour Approuvé, '05' pour Refusé)
resp_code_descstringDescription du code de réponse ('Approved' ou 'Declined')
messagestring (URL/text)Chaîne de vérification concaténée utilisée pour vérifier la signature
signaturestring (Base64)Signature cryptographique encodée en Base64 pour authentifier les données

CIB/Edahabiya Sandbox - Documentation de l'environnement de test

Le CIB/Edahabiya Sandbox est un environnement de test qui simule la passerelle de paiement SATIM CIB/Edahabiya. Il permet aux développeurs frontend de tester l'ensemble du flux de transaction de dépôt CIB/Edahabiya sans se connecter au véritable système de paiement SATIM.
Pour afficher les transactions Sandbox dans l'application SofizPay, vous devez d'abord activer le 'Mode Test' (Testing Mode) dans les paramètres de l'application.

CIB/Edahabiya Sandbox - Documentation de l'environnement de test - 1. Créer une transaction CIB/Edahabiya

GETGET sofizpay.com/make-cib-transaction/

Crée une transaction de dépôt CIB/Edahabiya fictive et renvoie une URL de paiement.

Cartes de test

Numéro de carteExpirationCVVRésultat
6280581001234567
12/28123Approuvé
6280581009876543
12/29456Approuvé
Numéro de carteExpirationCVVRésultat
6280581005555555
06/28999Refusé par l'émetteur
6280581004444444
09/28444Fonds insuffisants
6280581003333333
03/21333Carte expirée
6280581002222222
11/28222Temps mort de la transaction
L'utilisation de tout OTP autre que 123456 entraînera une erreur "Code OTP invalide", quelle que soit la carte utilisée.

Meilleures pratiques de sécurité

Utilisez HTTPS pour les URLs de retour
Ajoutez un paramètre order_id interne dans votre URL de retour (ex. ?order_id=12345) pour faciliter le suivi et la réconciliation
Lors de la réception du callback, enregistrez le cib_transaction_id avec votre order_id interne dans votre base de données
Après l'enregistrement, récupérez le cib_transaction_id à partir de votre order_id interne, puis vérifiez le statut de la transaction en appelant l'endpoint de vérification de transaction CIB/Edahabiya avec ce cib_transaction_id