Payments
A payment gateway is two integrations: the checkout at the customer and the callback that tells your server the money arrived. Test both, not just the redirect.
Before you enable a gateway
- A merchant account approved for your country and business type.
- The currency supported by the gateway and by your Foodomaa build.
- A public HTTPS callback/webhook URL.
- Sandbox credentials and a test card or test wallet.
- A refund and reconciliation process.
Setup order
- Enter sandbox credentials in the admin panel.
- Place a test order and complete the payment.
- Confirm the order status changes to paid and the webhook is received.
- Test a failed payment, a cancellation and a refund.
- Switch to live keys only after all four pass.
- Place one small live order yourself before announcing the launch.
Local gateways
Support for bKash, Nagad, UPI, Easypaisa, JazzCash, M-Pesa, GCash and similar methods depends on your build and the gateway's API. Some are direct integrations; others require a payment aggregator or custom development. Confirm before you buy or promise a method to vendors. The sales team can tell you what is directly supported for your region.
Cash on delivery
COD is an operational feature as much as a payment method. Decide the rider cash limit, the end-of-shift reconciliation step and what happens when the customer refuses an order. The rider app should show the amount to collect and the admin should show the expected cash per shift.
Common failures
| Symptom | Check |
|---|---|
| Redirect works but order stays unpaid | Webhook URL, signature secret, server firewall, HTTPS certificate |
| Callback 404 | Site URL, route cache, trailing slash, proxy rewrite rules |
| Currency/minimum error | Gateway currency, order amount, minimum transaction limit |
| 3-D Secure loop | Return URL, SameSite cookies, browser cache |
| Duplicate order | Idempotency key or webhook replay handling |