La transaction de facturation
Une facture est une séquence de commandes. Envoyez-les dans l’ordre ; chacune doit réussir (réponse result = 1) avant la suivante. Il existe deux flux — une vente et un avoir (note de crédit / remboursement) — qui convergent vers le paiement et la clôture.
Statut d’abord (optionnel mais recommandé). Appelez C1h avant de démarrer une transaction pour confirmer que le dispositif est en ligne et pour capturer la verify_url dont vous aurez besoin pour construire le QR code après 38h.
Facture de vente — ordre des commandes
C0h — Start New Invoice
DATA = salesInvoice. Initialise une nouvelle transaction de facture et déclare son type.
C3h — Customer Information
Les coordonnées du destinataire (client).
31h — Register New Item
À répéter une fois par ligne de facture (produit / service).
33h — Subtotal
Envoie la remise globale ; reçoit les totaux calculés.
35h — Payment
Le mode de paiement.
38h — End Invoice
Finalise ; reçoit receipt_NO + qrcode.
Résumé de l’ordre : C0h → C3h → 31h (×N) → 33h → 35h → 38h.
Avoir / note de crédit (remboursement) — ordre des commandes
Pour un avoir, vous relisez la facture d’origine depuis le dispositif au lieu de la ressaisir.
C0h — Start New Invoice
DATA = creditNote,{reference_invoice_id} (l’identifiant de la facture d’origine est obligatoire).
C4h — Original Customer Information
Relit le client de la facture d’origine.
41h — Get Original Items
À appeler de façon répétée jusqu’à result = 2 (plus d’items).
43h — Get Original Subtotal
Relit les totaux d’origine.
35h — Payment
Le mode de paiement.
38h — End Invoice
Finalise ; reçoit receipt_NO + qrcode.
Résumé de l’ordre : C0h → C4h → 41h (boucle jusqu’à result = 2) → 43h → 35h → 38h.
La boucle 41h : continuez d’appeler 41h tant que result = 1 (un item suit) ; arrêtez lorsque result = 2 (plus d’items).
Annulation
C9h Cancel Invoice abandonne la transaction en cours. Elle peut être envoyée après n’importe laquelle de C3h, 31h, 33h, 35h (vente) ou C4h, 41h, 43h (avoir).
Vérifiez toujours result avant d’envoyer la commande suivante de la transaction : une étape en échec signifie que la séquence ne peut pas continuer. En cas d’échec, montrez le reason à l’opérateur et arrêtez la transaction (ou annulez avec C9h).
Étape suivante → Référence des commandes