Aller au contenu

Tests

Parcourir tout le cycle 221 Pay en mode test, sans argent réel, puis vérifier la liste de passage en production.

En mode test, aucun argent réel ne circule. 221 Pay simule l’opérateur : chaque paiement est confirmé automatiquement en quelques secondes (sauf les numéros d’issue simulée, plus bas), chaque retrait réussit. Webhooks, soldes, remboursements et retraits fonctionnent comme en mode réel.

La clé sk_221_pay_test_… sélectionne le simulateur et les données de test. Une clé sk_221_pay_live_… sélectionne les opérateurs réels et des données séparées, après activation du mode live du projet. Les deux clés utilisent la même URL de base.

Reconnaître le mode test

Terminal
curl -s "$API_URL/v1/balances" -H "Authorization: Bearer $API_KEY" | jq '{livemode, gateway_mode}'

livemode: false et simulated : mode test. livemode: true et real : mode réel. Si le mode live n’est pas raccordé, l’appel échoue avec 503 PAYMENTS_UNAVAILABLE. Voir Authentification.

Parcours complet

Créer un paiement

Créer un paiement comme décrit dans Paiements. Tout numéro mobile valide dans le pays du moyen de paiement convient, par exemple 77 123 45 67 pour sn_wave. Le simulateur répond à la place du téléphone du client.

Attendre la confirmation

Quelques secondes plus tard, le paiement passe à confirmed, fee et net sont renseignés et payment.succeeded part vers les points de terminaison abonnés.

Terminal
curl "$API_URL/v1/payments/$PAYMENT_ID" -H "Authorization: Bearer $API_KEY"

Rembourser

Demander un devis puis rembourser : voir Remboursements. Le paiement doit avoir été créé avec customer_phone.

Retirer

Avec une identité vérifiée, enregistrer un numéro, demander un devis puis retirer : voir Retraits.

Tester les autres issues

En mode test, un paiement se confirme ; frais et trésorerie sont simulés. Le numéro customer_phone impose une autre issue quand il se termine par :

Fin du numéroIssue au premier relevé du statuterror_code
0002failedprovider_failed
0003expiredexpired

Par exemple 77 123 00 02 sur sn_wave. La page de paiement simulée n’y change rien, et le mode réel ignore ces numéros.

unknown se teste en envoyant au point de terminaison de l’application des événements signés : voir l’exemple cURL de Webhooks.

Vérifier un numéro de retrait

En mode test seulement, le code 000000 valide un numéro de retrait ou un compte bancaire (POST /v1/payout-destinations/{id}/verify), sans consulter la boîte e-mail du propriétaire du compte. Un code expiré reste refusé. Le mode réel refuse 000000. Voir Retraits.

Webhooks en mode test

Les événements sont signés et renvoyés comme en mode réel. L’URL doit être joignable depuis Internet ; pour un serveur local, utiliser un tunnel HTTPS.

Avant la production

  • Mode live du projet activé, clé sk_221_pay_live_… créée avec la seule portée payments et stockée dans le gestionnaire de secrets du serveur.
  • Détection des clés actuelles et 221pay_ (motif dans Authentification), ainsi que des anciennes sk_221_, en place dans le dépôt de code et les journaux.
  • gateway_mode vaut real.
  • Chaque POST porte une Idempotency-Key stable par commande, réutilisée en cas de réessai.
  • customer_phone envoyé à chaque paiement.
  • Signature des webhooks vérifiée sur le corps brut, déduplication sur id.
  • Statuts failed, expired et unknown traités, sans second paiement automatique.
  • Identité vérifiée et numéro de retrait enregistré.