Provider · Mobile money

D-Money direct integration

Djibouti Telecom's mobile-money rail. Requests are signed with an RSA-PSS keypair issued per merchant — but you don't need to know that: MerasPay handles signing server-side. From the client's perspective the flow is identical to Waafipay's OTP loop.

OTPRSA-PSS

1 · Provision your D-Money RSA key

Generate the keypair in the merchant portal at Settings → Keys → RSA and label it dmoney_signing. The private half is encrypted under your merchant DEK and stays in MerasPay; you never see it.

2 · Server: create the intent

bashbash
curl -X POST https://api.merashub.com/v1/payment_intents \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 30000,
    "currency": "DJF",
    "provider": "dmoney",
    "customer_msisdn": "+25377xxxxxxx"
  }'

3 · Browser: collect OTP

tsts
const meras = MerasPay("pk_test_...");
const intent = await meras.confirmPayment(piId, {
  client_secret: cs,
  otp: "123456",
});

Signing happens server-side

MerasPay holds the RSA private half encrypted under a per-merchant data key. Every D-Money outbound request is signed in-process, never via a callback to your servers.

Sandbox

  • 123456 succeeds
  • 999999 fails with "invalid pin"
  • Any other 6-digit OTP fails with "expired"