1. A bill-payment checkout
The whole service in one flow, with the confirmation step where it belongs.totalDebit in step 2 is what actually leaves the account. Showing amount instead is how a customer ends up surprised by the charge.
2. Airtime, in one fewer step
Airtime is the one product that does not need a package.- The customer id is the phone number, normalised for you.
- The recipient comes from the enquiry, not from the
phoneNumberin the payment body. Getting the number right matters at enquiry time.
bill_amount_mismatch.
3. A vend that has not resolved
submitted and pending are normal. The money has left; the biller has not finished.
4. Reconcile a day of bills
Remember the page shape here:
totalPages, and no hasNext. Loop while page < totalPages.
5. Tell the two telco billers apart
A telco appears as a separate biller under Airtime and under Data, with disjoint packages and different ids. Browse the group you mean, and keep the billerid you got from it:
404s, so a mismatched
pair fails loudly rather than quietly buying the wrong thing.
What you cannot do here
- Cancel or refund a payment. A failure refunds itself; a success is final.
- Pay in any currency but NGN.
- Pay a biller outside the catalog.
- Re-issue a token. Store it when it arrives.
- Extend an enquiry. Make a new one.