@byteinnov/momo
v0.1.0
Published
Clients mobile money Afrique de l'Ouest (Moov Money SOAP, MTN MoMo REST) : codec pur (requêtes canoniques, parsing, mapping d'erreurs vers un état commun) séparé du transport HTTP injectable
Readme
@byteinnov/momo
Clients mobile money Afrique de l'Ouest — Moov Money Bénin (SOAP Merchant) et MTN MoMo (REST momodeveloper, Collection + Disbursement). TypeScript, ESM + CJS, zéro dépendance runtime (fetch natif, Node 18+ ou navigateur).
Portage à parité stricte de l'implémentation Kotlin de référence : mêmes requêtes octet par octet, même parsing, même mapping d'erreurs — vérifié par un harnais de parité en CI. Les protocoles et leurs pièges (état CREATED MTN, code 95-pending Moov…) sont documentés dans le dépôt.
import { MtnClient } from "@byteinnov/momo";
const client = new MtnClient({
baseUrl: "https://sandbox.momodeveloper.mtn.com",
targetEnvironment: "sandbox",
collection: { subscriptionKey, apiUserId, apiKey },
});
const referenceId = crypto.randomUUID(); // clé d'idempotence, à persister
await client.requestToPay(referenceId, {
amount: "100", currency: "EUR", // EUR sandbox, XOF prod Bénin
externalId: "CMD-1042", partyId: "46733123454",
});
const status = await client.getRequestToPayStatus(referenceId); // poller ≥ 60 s en sandboximport { MoovClient } from "@byteinnov/momo";
const moov = new MoovClient({ endpointUrl, token });
const push = await moov.pushWithPending({
msisdn: "+2290160130000", amount: 500,
message: "Commande #1042", externalData1: paymentId,
});Architecture : codec pur (construction canonique, parsing, mapping vers l'état commun SUCCESS | PENDING | CANCELLED | FAILED | UNKNOWN) séparé du transport HTTP injectable (fetch par défaut, remplaçable).
Source, protocoles détaillés, harnais de parité : gitlab.byteinnov.com/bi-dev-team/packages/psp · Licence Apache-2.0.
