Adopting the idea of letting the customer choose the provider at all times early enough gives you more control on what extra data to ask from the client for those exceptional operators like Vodafone in Ghana. As we add more operators, extra data might be required to be picked from the customer depending on the operator. Therefore it’s necessary to be aware of the operator in action.
The customer chooses to pay at checkout.
The customer chooses a country to pay from if not known already e.g Uganda
The customer chooses the payment method for the country selected e.g mobile_money - Mobile Money
The customer chooses provider e.g airtel_ug - Airtel Money Uganda You could also combine the method and provider such that the customer only chooses the provider. Using the provider_id selected, you can determine the method it belongs to. You would need to maintain a list of the payment options you want the customer to choose from that help you determine the provider method. It’s all up to you and the customer experience. Since you now know the provider selected, you can validate the account number that will be entered next if necessary and further ask for extra data if any is required for a given provider. e.g You can now go ahead and tell the client that selected vodafone_gh - Ghana to generate a voucher and enter it in a given field then you submit it along with the request. It’s up to you to design the interface to give the customer a better checkout experience.
Once you have submitted the transaction details to the API for processing, we return a
payment_url where we expect you do redirect the customer and if it's empty, we usually return
instructions to display to the customer. The
instructions returned are mainly useful for async processing e.g mobile money transactions
So if instructions are returned, we recommend that you add a button on the screen that displays the
instructions which leads them to a page that displays the status of the transaction
polled or fetched from your application's database.
The transaction status will change when we notify you via the webhook/callback URL set under your merchant account.
When one customer pays 1,000 UGX via airtel_ug and another pays 2,000 UGX via mtn_ug, your balance will reflect 3,000 UGX in the UGX subaccount under your merchant account. This holds true with the assumption that there were zero transaction fees or the customer paid the transaction fees.