Phase 5.x payment catalog + customer-app splash/register polish
Payment catalog (Phase 5.x — see requirement/phase5-payment-catalog-plan.md):
- New tables payment_method_groups + payment_methods with seed (3 groups,
10 methods; GoPay seeded inactive pending Xendit channel confirmation).
- payment-catalog.service.js with two-layer cache (60s in-process + 1h
Valkey) and config:invalidate pub/sub fanout. Mutator API + casing-
tolerant findActiveMethodByCode for downstream validation.
- App-facing GET /api/client/payment-methods returns pre-grouped JSON,
active-only, empty groups dropped server-side.
- POST /api/client/payment-requests now validates `method` against the
catalog (INVALID_PAYMENT_METHOD 422) and stamps
product_metadata.preferred_payment_code (upper-cased).
- Control-center /internal/payment-{groups,methods}{,/:id,/reorder}
endpoints (full CRUD + idempotent reorder). New Payment Catalog page
wired into the CC nav.
- Customer app renders the catalog as collapsible groups (first expanded)
via paymentCatalogProvider; QRIS-only hardcoded fallback on 5xx so
checkout never hard-fails. Replaces the hardcoded _PayMethod enum.
- 10 brand SVGs (~63KB) bundled in client_app/assets/payment_icons/ from
github.com/hafidznoor/idn-finlogos. Xendit's per-channel media-asset
pages were planned but found decommissioned during implementation —
switched to idn-finlogos with the standard "channels-we-accept"
trademark posture. See assets/payment_icons/README.md for the workflow
to add new methods.
- 16 vitest cases covering the service + cache; full backend suite green
(162/162).
Customer-app splash + register polish:
- Splash rewritten per figma S1: warm vertical gradient, two ImageFiltered
radial orbs, 96×96 rounded-square logo tile, "HaloBestie" + "kamu gak
harus ngerasain ini sendirian." Self-driving navigation via context.go
after a 2.5s post-frame timer (native Android splash burns ~1-1.5s
before Flutter paints — 1s timer yielded near-zero visible duration).
Router early-returns null for isSplash so it never moves us off /splash
on its own.
- 3-page onboarding carousel removed: user clarified the new splash
REPLACES that carousel. Dropped /onboarding route, OnboardingScreen,
onboardingDoneProvider + gating, dead splash_{1,2,3}.png + the
splash_chat_hebat.png Flutter asset. Phase 4 /onboarding/* subroutes
untouched; Android-native launch_background drawable left alone.
- Register screen (login-by-phone) polished: circular pink back button +
72×72 logo badge (same brandLogoBg pink as splash, Transform.scale 1.4
to fill the tile). Step-dots indicator removed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
18
client_app/assets/payment_icons/bni.svg
Normal file
18
client_app/assets/payment_icons/bni.svg
Normal file
@@ -0,0 +1,18 @@
|
||||
<svg width="80" height="24" viewBox="0 0 80 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_3802_11102)">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 8.13517L6.74901 16.6488L0 22.2413V8.13517Z" fill="#F15A23"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.71631 22.2413L7.7946 17.993L11.3046 22.2413H2.71631Z" fill="#F15A23"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 3.57962L1.76124 5.80752L9.00279 14.8564L11.3493 12.9878C11.3493 12.9878 9.40129 10.6944 8.09326 8.13515C5.53591 3.13154 7.34645 0.0162849 7.34645 0.0162849H0V3.57962Z" fill="#F15A23"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.0349 16.2534L12.4247 14.2794C12.4247 14.2794 14.7071 17.2839 17.3536 17.993C20.8217 18.9223 22.3572 16.6488 22.3572 16.6488V22.2413H14.7398L16.4575 20.7562C16.4575 20.7562 15.5613 21.3537 13.3695 19.8355C12.0759 18.9395 10.0349 16.2534 10.0349 16.2534Z" fill="#F15A23"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.2548 0C10.2548 0 9.49239 1.03855 10.0351 3.57963C10.6151 6.29571 12.9219 9.17037 12.9166 9.10601C12.9166 9.10601 13.0649 6.2516 14.7399 4.57654C18.3104 1.00611 22.3574 3.13155 22.3574 3.13155V0.0162955L10.2548 0Z" fill="#F15A23"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.3573 6.8955C22.3573 6.8955 20.0993 4.96147 18.1363 4.96147C15.6251 4.96147 14.2544 7.12946 14.2544 8.7021C14.2544 10.9928 15.3539 12.2656 16.4575 13.3692C18.0434 14.9551 19.9728 16.6655 22.3573 15.2889C22.3573 12.6833 22.3573 6.8955 22.3573 6.8955Z" fill="#F15A23"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M48.0718 0.233002H53.3999C53.3999 0.233002 58.12 7.37988 60.4397 10.3327C62.7594 13.2855 65.2563 16.6488 65.2563 16.6488C65.2563 16.6488 65.2563 6.89552 65.2563 1.83354C65.2563 1.19368 63.5763 0.233002 63.5763 0.233002H69.7205C69.7205 0.233002 67.7044 1.06129 67.7044 1.83354C67.7044 8.13516 67.7044 23.3862 67.7044 23.3862C67.7044 23.3862 65.7699 22.3135 63.5763 19.7645C61.1115 16.9004 52.3439 5.33765 52.3439 5.33765C52.3439 5.33765 52.3439 16.2534 52.3439 20.3141C52.3439 21.0811 54.024 22.2413 54.024 22.2413H48.0718C48.0718 22.2413 49.7038 21.0717 49.7038 20.3141C49.7038 14.8564 49.7038 6.89552 49.7038 1.83354C49.7038 1.15341 48.0718 0.233002 48.0718 0.233002Z" fill="#005E6A"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M73.1616 0.233002H80C80 0.233002 78.1638 1.10278 78.1638 1.83354C78.1638 6.89552 78.1638 15.2889 78.1638 20.3141C78.1638 21.1127 80 22.2413 80 22.2413H73.1616C73.1616 22.2413 74.8712 21.087 74.8712 20.3141C74.8712 14.2794 74.8712 6.89552 74.8712 1.83354C74.8712 1.13097 73.1616 0.233002 73.1616 0.233002Z" fill="#005E6A"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M27.9526 0.233002C27.9526 0.233002 29.7255 1.11699 29.7255 1.83354C29.7255 6.89552 29.7255 14.2794 29.7255 20.3141C29.7255 21.0997 27.9526 22.2413 27.9526 22.2413C27.9526 22.2413 36.8096 22.2413 38.0835 22.2413C38.7167 22.2413 45.8083 21.0817 45.8083 15.6143C45.8083 10.147 40.2996 9.63506 40.2996 9.63506C40.2996 9.63506 43.6555 8.70212 43.6555 4.96149C43.6555 0.929499 38.7167 0.233002 38.0835 0.233002C36.7677 0.233002 27.9526 0.233002 27.9526 0.233002ZM33.3347 9.27274V2.39227C33.3347 2.39227 36.2712 2.39227 37.4503 2.39227C38.0835 2.39227 40.2996 3.13155 40.2996 5.87439C40.2996 8.13516 38.0835 9.27274 37.4503 9.27274C36.0148 9.27274 33.3347 9.27274 33.3347 9.27274ZM33.3347 11.0773C33.3347 11.0773 37.4503 11.0773 38.0835 11.0773C38.7167 11.0773 42.4525 12.0477 42.4525 15.2889C42.4525 18.5934 38.7167 19.7645 38.0835 19.7645C37.4503 19.7645 33.3347 19.7645 33.3347 19.7645V11.0773Z" fill="#005E6A"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_3802_11102">
|
||||
<rect width="80" height="23.3862" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
Reference in New Issue
Block a user