about eSelect Plus (similar to authorize.net AIM):
eSELECTplus is the first e-payment system to be developed by a Canadian acquirer. As the first solution completely developed and managed by a Canadian Acquirer/Processor. Moneris’ Payment Gateway will bring stability and support to the Canadian eCommerce market. It also supports batch and call centre environments. Through the payment gateway we are providing solutions that address issues unique to the Canadian market as well as ensure compliance to international payment regulations.
———————–
I developed a very simple and straightforward php class (also modified classes provided by eselect) to integrate eselect payment gateway in one of my project. If you are thinking to integrate eselect payment gateway in your web site then you can use my class which is here. An example given below how to use this script.
Pre-requisite: php>=5
<?php /*----- Including Main Class --------*/ require_once ("IWMoneris.php"); /* # # Transaction Array # */ $transactionArray = array( /*@--- TRUE = test mode :: FALSE = live mode ----*/ 'test_mode' => TRUE, /*@------ TRUE = ssl enabled :: FALSE = ssl disabled ----*/ 'ssl_enabled' => FALSE, /*@------- API strore id used to submit transactions.----*/ 'store_id' => 'monusqa002', /*@------- API Token id used to submit transactions.----*/ 'api_token' => 'qatoken', /*@Merchant defined unique transaction identifier - must be unique for every Purchase. Characters allowed for Order ID: a-z A-Z 0-9 _ - : . @ spaces.... Max Size: 50*/ 'order_id' => 'ord-'.date("dmy-G:i:s"), /*@ Max Size: 50 */ 'customer_id' => 'cust_123', /*@ Max Size: 20. Credit Card Number - no spaces or dashes. Most credit card numbers today are 16 digits in length but some 13 digits are still accepted by some issuers. This field has been intentionally expanded to 20 digits in consideration for future expansion and/or potential support of private label card ranges. */ 'cc_card_number' => '5454545454545454', /*@ Max Size: 4. Expiry Date - format YYMM no spaces or slashes. */ 'cc_exp_date' => '0909', /*@ Max Size: 9/decimal. Amount of the transaction. This must contain 3 digits with two penny values. The minimum value passed can be 0.01 and the maximum 9999999.99 */ 'amount' => '12.00', /*@ Max Size: 17. Level 2 Invoice Number for the transaction. Used for Corporate Credit Card transactions (Commercial Purchasing Cards). Characters allowed for commcard_invoice: a-z A-Z 0-9 spaces */ 'invoice_number' => 'inv 123', /*@ Max Size: 9/decimal. Level 2 Tax Amount of the transaction. Used for Corporate Credit Card transactions (Commercial Purchasing Cards). This must contain 3 digits with two penny values. The minimum value passed can be 0.01 and the maximum is 9999999.99 */ 'tax_amount' => '0.00' ); /* # # Initiating payment gateway class # constructor param: transaction array # */ $moduleObj = new IWMoneris($transactionArray); /* # # Creating Items # At list one item needed # */ $item1 = array( /*@ Product Item Name */ 'item_name' => 'Registration1', /*@ Product Item Quantity */ 'item_quantity' => '1', /*@ Product Item Code */ 'item_code' => '416-555-555511', /*@ Product Item Price. Max Size: 9/decimal */ "item_amount" => '12.00' ); $item2 = array( /*@ Product Item Name */ 'item_name' => 'Registration2', /*@ Product Item Quantity */ 'item_quantity' => '1', /*@ Product Item Code */ 'item_code' => '416-555-555512', /*@ Product Item Price. Max Size: 9/decimal */ "item_amount" => '12.00' ); /*------ Adding items to transaction object ----------*/ $moduleObj->SetItem($item1); $moduleObj->SetItem($item2); /* # # Customer email notification (optional) # */ $email = array( /*@ Customer email address */ 'email' => 'email@email.com', /*@ email instructions */ 'instructions' => 'make it first', ); /*------ Adding email notifications array to transaction object ----------*/ /*------ Comments/Remove this if not needed ------------------------------*/ $moduleObj->SetEmailInstruction($email); /* # # Customer billing information (optional) # */ $billingArray = array( 'first_name' => 'Joe', 'last_name' => 'Thompson', 'company_name' => 'Widget Company Inc.', 'address' => '111 Bolts Ave.', 'city' => 'Toronto', 'province' => 'Ontario', 'postal_code' => 'M8T 1T8', 'country' => 'Canada', 'phone_number' => '416-555-5555', 'fax' => '416-555-5555', 'tax1' => '0.00', 'tax2' => '0.00', 'tax3' => '0.00', 'shipping_cost' => '0.00' ); /*------ Adding billing information to transaction object ----------*/ /*------ Comments/Remove this if not needed -------------------------*/ $moduleObj->SetBillingInfo($billingArray); /* # # Customer shipping information (optional) # */ $shippingArray = array( 'first_name' => 'Joe', 'last_name' => 'Thompson', 'company_name' => 'Widget Company Inc.', 'address' => '111 Bolts Ave.', 'city' => 'Toronto', 'province' => 'Ontario', 'postal_code' => 'M8T 1T8', 'country' => 'Canada', 'phone_number' => '416-555-5555', 'fax' => '416-555-5555' ); /*------ Adding Shipping information to transaction object ----------*/ /*------ Comments/Remove this if not needed -------------------------*/ $moduleObj->SetShippingInfo($shippingArray); /* # # Sending request to payment gateway server # Returns an array. Array keys: # success = true/false, code = transaction code, message = response message # */ $response = $moduleObj->Process(); if($response['success']) { echo 'Transaction Successfull::<br />'; } else { echo 'Transaction Failed::<br />'; } echo 'Code:: '.$response['code'].'<br />'; echo 'Msg:: '.$response['message'].'<br />'; echo '<br />Details response is given below:<br />'; $moduleObj->DumpResponse(); ?>
As I developed this script very urgently so many things are skiped which are also necessary. Hope you will make it more reliable when you will use it.
For any advise/help please contact with me.
Thanks…
2 responses to " eSelect payment gateway integration "
May 26 2009
hi imran,
it’s nice article.
i used these code and changed the store id , api_token only on the page.but it returns the message “connection error” .
is any configurtion setup in “Moneris”?.
what can i do now ?
May 26 2009
Hi Mubarak,
Thanks for your query.
I am not sure that you are executing this script in test or live mode. For test mode the store id and api_token is fixed that eSelect provided. So check it first. But If you are executing this script in live mode with valid store id and api_token then you have to be confirmed that you are using this script for Purchase(Basic) transaction.
eSelect support different type of transaction like Purchase(Basic), PreAuth(Basic), Refund etc. So depend on transaction you have to change value of “TRANSACTION_TYPE” in constants.php.
Hope it will work. Thanks

Recent Comments