I'm implementing my first payment gateway, and while my situation might be simple in that I could make all three the same, but I'd like to know some situations where they should be different.
So again, What is the difference between order number, transaction id and invoice no. and any other forms of transaction related information?
Do all of them have to be unique?
Lastly, what do I show to the client once the transaction is complete?
Note: I'm a merchant, but situation pertaining to any other domain (e.g. bank, credit card, payment gateway, or anything) is also acceptible.
We integrate with many different card authorisation APIs from various banks, at a high level there is no standard for the API interface that would be made available to you when a merchant account is acquired.
In my experience:
order number (or equivalent) is a value provided by the merchant that gets passed in the transaction request to the bank, who then associate it in their records with the transaction.
This allows the identification of the transaction on the banks system (for reporting/reconciliation etc.) using a merchant defined value.
In general this is expected to be unique.
transaction id (or equivalent) is the value that is returned by the bank to identify a transaction on their system. This will be unique.
invoice no This is nothing to do with the process of authorisation so would pertain to an additional feature provided by the bank and would be implementation specific (for example a way of grouping multiple products together).
Lastly, what do I show to the client once the transaction is complete?
You would store all information relating to the transaction in a database and from that set of records generate your own transaction id; this is what you would show the user.