Files

2.0 KiB
Raw Permalink Blame History

PayMV QR (Receive)

⚠️ Work in progress. Thijooree does not call this endpoint yet. It generates Fahipay QRs locally, and the Fahipay app currently rejects those as "Invalid QR". See PayMV QR Format → Fahipay.

Fahipay's app does not build its receive QR on the device. Its PayMVQR screen asks the server for a finished card image and displays it. Found by decompiling the app (v2.0.2, Hermes bundle), not yet confirmed with a traffic capture: request headers and the exact response shape are unverified.


Endpoint

GET api/app/qr/?lang=<lang>&type=p2p&amount=<amount>

The app also has a POST api/app/qr/ variant, sent as form data with type=p2p, lang, version, platform=app, amount and device[...] fields.

Response

The app reads the image from the first of these fields that is present: qr_image, qr, image, qr_url, qr_code. The value is either an http… URL or raw base64, which the app prefixes with data:image/png;base64,. The payload text is read from qr_code_text / qrCode.

The card image

A 1240 × 1322 PNG:

  • Blue #005DA3 card with a 6 px border.
  • The square Fahipay icon plus the "FahiPay" wordmark top-left, and "PayMV QR" top-right.
  • A blue panel holding the holder's name and the QR.
  • The reference (62→05, e.g. P2KVTPYL4E) printed vertically in blue in the white margin right of the panel. The amount is not included in it.
  • A "MALDIVES NATIONAL QR" footer.

Thijooree reproduces this layout in PayMvQrFragment.renderFahipayQrCard(); see PayMV QR Screen.

Server-issued payload fields that differ from a plain PayMV QR: 60 = LD + 4 digits, 62→05 = P + 9 chars, 62→08 = PAYMENT, and 54 = *** when there is no amount. Full samples are in PayMV QR Format.


 


← Saved Favourites