2.0 KiB
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
#005DA3card 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.