Condominium developer·2020
A billing and payment platform for condominium buyers
A condominium developer needed one workflow for reservation fees and monthly statements. Secure billing links connected buyers to payment checkouts.
- Sector
- Real Estate, Payments
- My role
- Full-stack developer across the application within a multi-developer delivery team.
- Stack
- Laravel, Blade, JavaScript, jQuery, Bootstrap, MySQL, REST APIs
In 2020, a condominium developer needed one application to issue reservation fees and monthly statements, then collect payments from buyers online. I worked as a full-stack developer throughout the engagement as part of the delivery team, while another developer led development.
One workflow for two kinds of buyer payments
Condominium buyers paid through two related billing paths. The first covered the fee that secured a unit reservation. The second covered monthly statements of account after the sale progressed.
The internal team needed to prepare and issue both types of billing, while buyers needed a direct checkout that showed the correct amount and payment status. The platform kept the billing record and its resulting transaction in one workflow.
How I contributed across the engagement
My work crossed the Laravel backend and the Blade interface. I contributed to the data model, billing screens, statement issuance, buyer checkout, payment status handling, receipts, user access, reporting, and production fixes.
I worked on complete feature slices rather than one application layer. The overall development effort was led by another developer.
Secure links into PayMongo and AltPayNet
Each issued billing email contained a temporary signed link. Invalid or expired links were rejected, and a billing record that had already been paid could not be processed again. The admin side used authenticated accounts, module-level permissions, inactive-account checks, server-side validation, and activity logs.
The application integrated PayMongo for card payments and AltPayNet for card, QR, and wallet methods, including Alipay, WeChat Pay, UnionPay QR, and GCash. Individual processors and methods could be enabled through configuration. Capture responses and callbacks updated the transaction status and reference, and successful payments produced email receipts.
Payment status became part of the billing record
The platform did not treat reaching a checkout page as payment. Processor responses and callbacks updated the transaction attached to the billing record, and successful payments produced a receipt the internal team and buyer could both trace.
That closed the gap between issuing an amount, collecting it through an external processor, and knowing which bill the result belonged to.