There is always a need to build E-commerce sites with Credit Card transactions securely and seamlessly. In the Singapore market, eNETs is the most well-known company providing payment gateway services. Up to now, eNETS only provides API for .NET and Java platforms. In this post, I will show you my solution to integrate eNETS and Ruby on Rails via Java.
Table of Contents
Steps:
1. Build a JAR file to submit payment info to eNETS, I named it enets.jar. This jar file will return output from eNETS to the console in text format. I attached a sample program built with NetBean, you can download it here: eNETS. After downloading, you just copy that folder to your NetBean projects folder as shown in the below image.
2. Follow eNETS guidelines, change settings for java security as well as generate merchant.priv.pgp.asc, merchant.pub.pgp.asc.
3. Change config: log4j.properties, NETSConfig.xml
4. Build enets.jar file from source files in NetBean. Right-click on the project root, Clean and Build.
5. Generate a command to execute enets.jar, something like this:
“java -jar #{RAILS_ROOT}/vendor/extensions/payment_gateway/lib/enets/eNETS.jar #{mid} #{tid} #{paymentMode} #{amt} #{currency} #{merRef} #{submitMode} #{merCertId} #{pan} #{expiry} #{stan} #{paymentType} #{successURL} #{successURLParams} #{failureURL} #{failureURLParams} #{notify_url} #{notify_url_params} #{name} #{cvv} #{post_url} #{post_url_params} #{cancel_url} #{cancel_url_params} #{bill_first_name} #{bill_last_name} #{bill_initial} #{bill_addr1} #{bill_addr2} #{bill_coy_name} #{bill_city} #{bill_state} #{bill_zip_code} #{bill_country} #{bill_mobile_num} #{bill_phone_num} #{bill_fax_num} #{bill_email} #{ship_first_name} #{ship_last_name} #{ship_initial} #{ship_addr1} #{ship_addr2} #{ship_coy_name} #{ship_city} #{ship_state} #{ship_zip_code} #{ship_country} #{ship_mobile_num} #{ship_phone_num} #{ship_fax_num} #{ship_email} #{shopper_ip_addr} #{product_format} #{product_details} #{gw_url}”6. Run enets.jar from ruby console with output = %x[#{command}]. %x[] command will store output to output variable for later processing. It is not the same as system() or exec() ruby command. Read more on Jay Fields’ blog: Ruby Kernel system, exec and %x
7. Parse results returned from enets.jar and continue with your business logic in your ruby/rails application. For the rails project, I recommend you use Active-Merchant and modify Bogus payment gateway so that you will follow the format of ActiveMerchant framework. You will be surprised because the effort required is very little.