Claims
1. A transaction processing system for transacting in multiple currencies, said system comprising: a first transaction processing system for entering a transaction in a first currency ; at least one gateway processing system interconnected to said first transaction processing system by a wide area network; a currency conversion system connected to said gateway processing system for converting the transaction value in said first currency to a currency value in a second currency whilst the transaction is being carried out; a transaction charging system for charging the converted transaction value to the customer's card account.
2. A system as claimed in claim 1 wherein said currency conversion system forwards said converted transaction value to said first transaction processing system for display to a merchant's customer. 3. A system as claimed in either claim 1 or 2 wherein said currency conversion system is interconnected to at least one externally provided rate determination system for determining an approximate converted transaction value.
4. A system as claimed in any one of the preceding claims wherein there are at least two independently operable gateways each independently connected to said first transaction processing system.
5. A method of processing a transaction between a merchant operating in a first currency and a customer having a transaction account in a second currency, in which the transaction is settled via one or more intermediate parties, said method including the steps of: (a) providing transaction processing means configured to interact with a currency conversion means to convert a monetary value in said first currency into a monetary value in said second currency;
(b) receiving a transaction request in the first currency at the transaction processing means ;
(c) processing the transaction request with the currency conversion means to determine a transaction amount expressed in the second currency; and (d) settling the transaction with the merchant in the first currency and communicating the transaction details, expressed in the second currency, to the one or more intermediate parties to allow settlement of the transaction with the customer in the second currency.
6. A method as claim in claim 5 wherein step (c) includes the sub-steps of: receiving an authorisation request expressed in the first currency; processing the authorisation request with the currency conversion means to determine the transaction amount expressed in the second currency; and processing the authorisation request in the second currency and enabling the transaction to continue if one or more predetermined authorisation conditions are met. 7. A method as claim in either claim 5 or 6 wherein step (c) includes the additional sub-step of: providing a converted transaction value to the customer expressed in the second currency.
8. A method as claimed in any one of claims 5 to 7 in which the transaction processing means receives the transaction request from any one of the following; a point of service terminal, a cash register, a website, a server, an interactive voice response system, a call centre terminal, an automatic teller machine, a vending machine, a computer terminal, a mobile phones, a PDA, a television, a refrigerator, a satellite.
9. A method as claimed in any one of claims 5 to 8 in which said transaction processing means includes at least one gateway means in communication with the currency conversion means and one or more of said intermediate parties to enable transaction processing and settlement information to be communicated to and from the
transaction processing means. 10. A transaction processing system substantially as hereinbefore described with reference to the accompanying drawings.
11. A method of conducting credit card transactions substantially as hereinbefore described with reference to the accompanying drawings.
Appendix A Transaction Server- Example interface FileName: databaseTEST.java
Overview: This class is responsible for making connections to the database and logging the response as It is received from the payment gateway.
Public methods in the class:
1. makeRequest
Function Name: makeRequest
Return Type: boolean
Overview: The following function will log the transaction request details in the database. Parameters: The function will take the following parameters
Merchant ID : TYPE : Integer
Trans Amount : TYPE : Integer
Trans Notes : TYPE : Integer
2. logResponselnDatabase
Function Name: logResponselnDatabase
Return Type: void
Overview: The following function will log the response from IBM, in the database.
Parameters: The function will take the following parameters
Return Code : TYPE : Integer
Result Code : TYPE : Integer
Bank Code : TYPE : Integer
Return Message : TYPE : String
Bank Message : TYPE : String
Order Reference : TYPE : String
Transaction ID : TYPE : Integer (It must match with the transaction ID when the request was made.)
3. recordCreditCardHolderDetails
Function Name: recordCreditCardHolderDetails
Return Type: boolean
Overview : The function will write the details of the credit card holder to the database.
Parameters: The function will take the following parameters
ChFName TYPE: String chLName TYPE : String ccType TYPE : String
ccExpiryDate :TYPE . String ccNumber :TYPE String cchPhone ■TYPE String cchAddl TYPE String cchAdd2 TYPE String cchCity •TYPE String cch State TYPE String cchZipCode TYPE : String cch Country :TYPE : String cchEmail TYPE : String
4. getOrderNumber
Function Name: getOrderNumber
Return Type: integer
Overview: The function will return the transaction ID.
Parameters: Nil
5. getOrigSaleNum
Function Name: getOrigSaleNum
Return Type: String
Oveπ/iew: The function will return the origSaleNumber input by the customer. Parameters: Nil
FileName: erchantValidatϊon I EST.java
Overview: This class is used to validate a merchant. It is also used to return the merchant details from the database so' that a valid request can be put through the gateway for further processing.
Public methods in the class:
1. authenticateMerchant
Function Name: authenticateMerchant
Return I ype: boolean • Overview: The function will return a boolean value indicating that whether or not the merchant could be validated. False means, merchant could not be validated. And true, means that the merchant is valid.
Parameters: The following arguments are accepted by the method.
Merchant! D TYPE Integer merehantName TYPE String password TYPE String
. getKeyName
Function Name: getKeyName
Return Type: String
Overview; The function will return the merchant keyname from the database. Parameters: Nil
3. getKeyFileName
Function Name: getKeyFileName
Return Type: String
Overview: The function will return the keyfile name so that encryption/decryption may take place/ Parameters: Nil
4. getProjectCode
Function Name: getProjectCode
Return Type: String
Overview: The function will return the project code issued by the IBM.
Parameters: Nil
5. getCurrency
Function Name: getCurrency
Return Type: String
Overview: The function will return the associated currency.
Parameters: Nil
FileName: PureTransTESTjava
Overview: This class is the heart of the system. All the NTF functions are called from this class. It is responsible for actually processing the transactions and pulling and parsing the response.
Public methods in the class:
1. setCardHolderFName
Function Name: setCardHolderFName
Return Type: void
Overview: The function is used to set the credit card holder first name.
Parameters: String
2. setCardHolderLName
Function Name: setCardHolderLName
Return Type: void
Overview: The function is used to set the credit card holder last name.
Parameters: String
3. setCardType
Function Name: setCardType
Return Type: void
Overview: The function is used to set the credit card type.
Parameters: String
4. setCardExpiry
Function Name: setCardExpiry
Return Type: void
Overview: The function is used to set the credit card expiry date.
Parameters: String
5. setCardNumber
Function Name: setCardNumber
Return Type: void
Overview: The function is used to set the credit card number.
Parameters: String
6. setCardHoiderAddl
Function Name: setCardHoiderAddl
Return Type: void
Overview: The function is used to set the first address line of the credit card holder's address. Parameters: String
7. setCardHo!derAdd2
Function Name: setCardHolderAdd2
Return Type: void
Overview. The function is used to set the second line of the credit card holder's address. Parameters: String
8. setCardHolderCity
Function Name: setCardHolderCity
Return Type: void ,
Overview: The function is used to set the city value in credit card holder's address. Parameters: String
9. setCardHolderState
Function Name: setCardHolderState
Return Type: void
Overview: The function is used to set state value in credit card holder s address. Parameters: String
iO.setCardHolderCountry
Function Name: setCardHoiderCountry
Return Type: void
Overview: The function is used to set the credit card holder's country value. Parameters: String
H .setCardHolderPhone
Function Name: setCardHolderPhone
Return Type: void
Overview: The function is used to set the credit card holder's phone number. Parameters: String
12. setCardHo!derEmail
Function Name: setCardHolderEmail
Return Type: void
Overview: The function is used to set the credit card holder's email address. Parameters: String
13. setCardHolderZipCode
Function Name: setCardHolderZipCode
Return Type: void
Overview: The function is used to set the credit card holder's zip code.
Parameters: String
14. setOrigSaleMum
Function Name: setOrigSaieNum
Return Type: void
Overview: The function is used to set the original sale number as input by the user. Parameters: String
15. doCCAuth Function Name: doCCAuth Return Type: int Overview: This is probably the most important method. This is the function that actually calls NTF methods and does all the core things.
Parameters: The method takes following parameters: merchantNumber Type : integer
totalAmount Type Integer fname Type String
Iname Type String
IsUS I ype Boolean currency Type String ccNumber Type String ccExpire Type String chName Type String
MerchName Type String
MerchNumber Type String
KeyName Type String
KeyFile Type String
Offset Type Integer
TransNotes Type String
I β. geterrors
Function Name: geterrors
Return Type: String
Overview: The function will return the errors, if any.
Parameters: Nil
17. getreturncode()
Function Name: getreturncode
Return Type: String
Overview: The function will return the return code sent to us by the
NTF. Parameters: Nil
18. getresult
Function Name: getresult
Return Type: String
Overview: The function will return the result.
Parameters: Nil
19.getbankcode
Function Name: getbankcode
Return Type: String
Overview: The function will return the bank code.
Parameters: Nil
20.getretmessage
Function Name: getretmessage
Return Tyoe: String
Overview:' The function will return the return message sent to us by tne
IBM. Parameters: Nil
21. getbankmessage
Function Name: getbankmessage
Return Type: String
Overview: The function will return the bank message sent by the respective financial institution. Parameters: Nil
22.getorderref
Function Name: getorderref
Return Type: String
Overview: The function will return the Order reference number.
Parameters: Nil
23. getOrderNumber
Function Name: getOrderNumber
Return Type: String
Overview: The function will return the order number, which is a unique transaction identifier issued by us. Parameters: Nil
24. getOrigSaleNum
Function Name: getOrigSaleNum
Return Type: String . . . ..
Overview: The function will return the original sale number, input by the user while making the request. Parameters: Nil
25.retMessage
Function Name: retMessage
Return type: S ring
Overview: The function will interpret the return code and will lookup the respective return message.
Parameters: retCode: Type: integer
Please note that in' addition to the above file/methods, there is an additional java class file called Simulate which is a Java servlet. This servlet is very
much self explanatory from the code itself. There is only one method ie. doPost.
Class files for refunds
Filename : databaseRefundTEST.java
Overview: This class manages database related stuff. It involves making connections, logging response.
Public methods in the class:
1. getOrderReference
Function Name: getOrderReference
Return Type: String
Overview: The function will return the IBM Order Reference Number from the database. Parameters: Nil
2. getTransactionStatus
Function Name: getTransactionStatus
Return Type: String
Overview: The function will return the status of the transaction in the sense that whether or not the transaction is already refunded or if it had failed at the first place. Parameters: Nil
3. getTransactionAmount
Function Name: getTransactionAmount
Return Type: Integer
Overview: The function will return the original amount of transaction.
The amount of refund must match with the amount of the transaction. Parameters: Nil
4. getRefundlD
Function Name: getRefundlD
Return Type: Integer
Overview: The function will return the refund Id from the database, which is always unique. Parameters: Nil
checkStatus
Function Name : checkStatus Return Type : boolean
Overview : The following function check the status of the transaction before refunding it.
Parameters : The function will take the following parameters Transaction ID: TYPE : Integer
6. logResponse
Function Name : logResponse Return Type : boolean Overview : This function will write the response of the refund request into the database.
Parameters : The function will take the following parameters Transaction amount: Type : Integer
Result code: Type Integer Return code; Type Integer Message: Type String
7. updateTransaction
Function Name : updateTransaction
Return Type boolean
Overview This function will update the status of the transaction.
Parameters The function will take the following parameters
TransactionlD: Type : Integer
Refund ID: Type: Integer
Filename : PureRefTEST.java
Overview: This is the main refund class that actually processes the refund request and calls the NTF methods.
Public methods in the class:
getResultCode Function Name: getResultCode Return Type: String Overview: The function will return the result code associated with the refund request.
Parameters: Nil
getReturnCode
Function Name: getReturnCode
Return Type: String
Overview: The function will return the return code associated with the refund request.
Parameters: Nil getRetivlessage
Function Name: getRetMessage
Return Type: String
Overview: The function will return the return message sent to us by the
IBM as a response for the refund request made. Parameters: Nil doRefund
Function Name: doRefund
Return Type: Integer
Overview: This function is the most important function in the total refund process. It calls all the NTF refund related functions. Parameters: The method takes following parameters in order to successfully complete a refund request.
MerchName; Type: String
MerchNumber: Type: String totalAmount: Type: Integer isUS: Type: Boolean currency: Type: String offset: Type: Integer number: Type: String
OrderRef: Type: String
KeyName: Type: String
Key File: Type: String
In addition to it, there is Java servlet called SimulateRefund which incorporates just one single doPost method, which doesn't need to be mentioned here.
Please note that the naming convention that has been followed is that all the files for the testing gateway ends with TEST and ail the live files will end with LIVE. But in the case of sen/lets the name of the servlets for the live gateway are as follows:
1. Live (Its Simulate under stage/testing environment.)
2. Refund (Its SimulateRefund under the stage/testing environment.)
The End
Amit.Sharma