SlideShare a Scribd company logo
1 of 46
Payments On Rails

    E-xact Transactions
    (emil@e-xact.com)
<introduction>




                 Hello
E-xactly, who?
Payment Processor
1-866-733-8613.




Vancouver, BC
:founded => 1999,
:per_year => 3B.dollars,
:team => (2..8)
Me?
About



</introduction>
<exactonrails>

          Merchants
               |
            E-xact
               |
       Payment Network
special
  &&
!special
“Non-special”

• Standard Rails platform
• Plugins - Solr, cache_fu, will_paginate etc.
• Capistrano / Webistrano
• SQL Backend
Apache Proxy
(mod_security, mod_proxy_balancer,...)
              |
             |||
      lighttpd/fastcgi
            Rails
“Special”


• Mission Critical Financial services
• High Volume Transactions Processing
• Rails to the “Enterprise”
“Big Rewrite”
Win32 (.NET)
Why Rails?
2006
2006 Fall
2007 Spring
Migrated 5K Customers
Customers
RPM
Primary Provider For




</exactonrails>
<api>




        api.e-xact.com
gem install exact4r
# build a purchase request
  request = Exact::Request.new({
     :transaction_type => quot;00quot;,         #   purchase
     :amount => 10.50,
     :cardholder_name => quot;Simon Brownquot;,
     :cc_number => quot;4111111111111111quot;,
     :cc_expiry => quot;1005quot;,              #   MUST be YYMM format
     :gateway_id => quot;XXXXXXXquot;,          #   which gateway to submit the request to
     :password => quot;YYYYYYquot;              #   your password for that gateway
  })

  response = request.submit
Response
response.transaction_tag   #   1234
response.exact_resp_code   #   quot;00quot;
response.exact_message     #   quot;Transaction Normalquot;
response.bank_resp_code    #   quot;00quot;
response.bank_message      #   quot;APPROVEDquot;
:rest || :json || :soap
SOAP
(legacy)
REST XML
 (default)
JSON
uri = URI.parse('https://api.e-xact.com')
http = Net::HTTP.new(uri.host, uri.port)

req_headers= {
  'Content-Type' => 'application/json; charset=utf-8'
}
req = {}
req[:amount] = 100.to_s
req[:cardholder_name] = 'Fred Hanks'
req[:email_address] = 'fred@acme.org'
req[:address] = '2000 Elm street'
req[:cc_number] = '4111111111111111'
req[:cc_expiry] = '0907'
req[:transaction_type] = :purchase
req[:gateway_id] = 'XXXXXX'
req[:password] = 'YYYYYYY'

response = http.request_post(uri.path, req.to_json, req_headers)
res = ActiveSupport::JSON.decode(response)
assert_equal 1, res['transaction_approved'], res.inspect
Transaction set
• Purchase
• Refund
• Pre-authorization, completion
• Void
• Debit
• ....
Tagged Transaction
API
                |
         Cardholder Data
                |
             E-xact

</api>
<payment_pages>




         Payment Pages
$ rails store
       create
        create   app/controllers
        create   app/helpers
        create   app/models
        create   app/views/layouts
        create   config/environments
        create   config/initializers
        create   db
        create   doc
        create   lib
        create   lib/tasks
        create   log
....
$ ./script/install active_merchant

     (http://activemerchant.org)
patch -p0 < am.patch
(http://www.e-xact.com/developers/downloads/#ActiveMerch)
Merchant Site
              |
     checkout.e-xact.com
              |
       Cardholder Data

</payment_pages>
Summary
Questions?
Contact

More Related Content

What's hot

What's hot (20)

Creating REST Applications with the Slim Micro-Framework by Vikram Vaswani
Creating REST Applications with the Slim Micro-Framework by Vikram VaswaniCreating REST Applications with the Slim Micro-Framework by Vikram Vaswani
Creating REST Applications with the Slim Micro-Framework by Vikram Vaswani
 
Web apps without internet
Web apps without internetWeb apps without internet
Web apps without internet
 
Application submission, management and manetization in Firefox Marketplace
Application submission, management and manetization in Firefox MarketplaceApplication submission, management and manetization in Firefox Marketplace
Application submission, management and manetization in Firefox Marketplace
 
SproutCore and the Future of Web Apps
SproutCore and the Future of Web AppsSproutCore and the Future of Web Apps
SproutCore and the Future of Web Apps
 
Pluginが広げるRailsの魅力
Pluginが広げるRailsの魅力Pluginが広げるRailsの魅力
Pluginが広げるRailsの魅力
 
Joomla virtuemart razorpay payment gateway
Joomla virtuemart razorpay payment gatewayJoomla virtuemart razorpay payment gateway
Joomla virtuemart razorpay payment gateway
 
Introduction to AngularJS For WordPress Developers
Introduction to AngularJS For WordPress DevelopersIntroduction to AngularJS For WordPress Developers
Introduction to AngularJS For WordPress Developers
 
Paypal checkout anytime anywhere paulam chang matt cole
Paypal checkout anytime anywhere paulam chang matt colePaypal checkout anytime anywhere paulam chang matt cole
Paypal checkout anytime anywhere paulam chang matt cole
 
From Node.js noob to not so noob
From Node.js noob to not so noobFrom Node.js noob to not so noob
From Node.js noob to not so noob
 
Paypal + symfony
Paypal + symfonyPaypal + symfony
Paypal + symfony
 
Single Page Web Apps As WordPress Admin Interfaces Using AngularJS & The Word...
Single Page Web Apps As WordPress Admin Interfaces Using AngularJS & The Word...Single Page Web Apps As WordPress Admin Interfaces Using AngularJS & The Word...
Single Page Web Apps As WordPress Admin Interfaces Using AngularJS & The Word...
 
NationJS: Node Noob to not so Noob
NationJS: Node Noob to not so Noob NationJS: Node Noob to not so Noob
NationJS: Node Noob to not so Noob
 
Razorpay payment gateway integration in laravel and vue js 2
Razorpay payment gateway integration in laravel and vue js 2Razorpay payment gateway integration in laravel and vue js 2
Razorpay payment gateway integration in laravel and vue js 2
 
AngularJs - Part 3
AngularJs - Part 3AngularJs - Part 3
AngularJs - Part 3
 
AngularJS with Slim PHP Micro Framework
AngularJS with Slim PHP Micro FrameworkAngularJS with Slim PHP Micro Framework
AngularJS with Slim PHP Micro Framework
 
Doc matrimonial
Doc matrimonialDoc matrimonial
Doc matrimonial
 
Streamlining Your Applications with Web Frameworks
Streamlining Your Applications with Web FrameworksStreamlining Your Applications with Web Frameworks
Streamlining Your Applications with Web Frameworks
 
Build a Better Editing Experience with Advanced Custom Fields - #WCTO16
Build a Better Editing Experience with Advanced Custom Fields - #WCTO16Build a Better Editing Experience with Advanced Custom Fields - #WCTO16
Build a Better Editing Experience with Advanced Custom Fields - #WCTO16
 
Webinar: AngularJS and the WordPress REST API
Webinar: AngularJS and the WordPress REST APIWebinar: AngularJS and the WordPress REST API
Webinar: AngularJS and the WordPress REST API
 
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dep...
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dep...Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dep...
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dep...
 

Viewers also liked

Viewers also liked (8)

Ai Tornado Grenade Manual
Ai Tornado Grenade ManualAi Tornado Grenade Manual
Ai Tornado Grenade Manual
 
In the Loop - Lone Star Ruby Conference
In the Loop - Lone Star Ruby ConferenceIn the Loop - Lone Star Ruby Conference
In the Loop - Lone Star Ruby Conference
 
ddddkkk
ddddkkkddddkkk
ddddkkk
 
Klima Og Sundhed Jordens Dag 17. Marts
Klima Og Sundhed Jordens Dag 17. MartsKlima Og Sundhed Jordens Dag 17. Marts
Klima Og Sundhed Jordens Dag 17. Marts
 
ZeroMQ as scriptable sockets
ZeroMQ as scriptable socketsZeroMQ as scriptable sockets
ZeroMQ as scriptable sockets
 
Barcamp PT
Barcamp PTBarcamp PT
Barcamp PT
 
Advanced Fieldcraft
Advanced FieldcraftAdvanced Fieldcraft
Advanced Fieldcraft
 
Qatar Project
Qatar ProjectQatar Project
Qatar Project
 

Similar to Payments On Rails

SproutCore and the Future of Web Apps
SproutCore and the Future of Web AppsSproutCore and the Future of Web Apps
SproutCore and the Future of Web Apps
Mike Subelsky
 
java and javascript api dev guide
java and javascript api dev guidejava and javascript api dev guide
java and javascript api dev guide
Zenita Smythe
 
Ruby on Rails For Java Programmers
Ruby on Rails For Java ProgrammersRuby on Rails For Java Programmers
Ruby on Rails For Java Programmers
elliando dias
 

Similar to Payments On Rails (20)

Implementation of GUI Framework part3
Implementation of GUI Framework part3Implementation of GUI Framework part3
Implementation of GUI Framework part3
 
SproutCore and the Future of Web Apps
SproutCore and the Future of Web AppsSproutCore and the Future of Web Apps
SproutCore and the Future of Web Apps
 
web3j Overview
web3j Overviewweb3j Overview
web3j Overview
 
Distributed Parcel Tracking/Management System Overview
Distributed Parcel Tracking/Management System OverviewDistributed Parcel Tracking/Management System Overview
Distributed Parcel Tracking/Management System Overview
 
Stripe on Atmoph
Stripe on AtmophStripe on Atmoph
Stripe on Atmoph
 
java and javascript api dev guide
java and javascript api dev guidejava and javascript api dev guide
java and javascript api dev guide
 
SDKs, the good the bad the ugly - Japan
SDKs, the good the bad the ugly - JapanSDKs, the good the bad the ugly - Japan
SDKs, the good the bad the ugly - Japan
 
FreshBooks API
FreshBooks APIFreshBooks API
FreshBooks API
 
Ruby on Rails For Java Programmers
Ruby on Rails For Java ProgrammersRuby on Rails For Java Programmers
Ruby on Rails For Java Programmers
 
How to avoid hanging yourself with Rails
How to avoid hanging yourself with RailsHow to avoid hanging yourself with Rails
How to avoid hanging yourself with Rails
 
Building Scalable Websites with Perl
Building Scalable Websites with PerlBuilding Scalable Websites with Perl
Building Scalable Websites with Perl
 
Shangz R Brown Presentation
Shangz R Brown PresentationShangz R Brown Presentation
Shangz R Brown Presentation
 
Metrics-Driven Engineering
Metrics-Driven EngineeringMetrics-Driven Engineering
Metrics-Driven Engineering
 
Unobtrusive JavaScript
Unobtrusive JavaScriptUnobtrusive JavaScript
Unobtrusive JavaScript
 
Monetize your idea! - Pay Pal
Monetize your idea! - Pay PalMonetize your idea! - Pay Pal
Monetize your idea! - Pay Pal
 
A Journey with React
A Journey with ReactA Journey with React
A Journey with React
 
Using jersey exception mapper
Using jersey exception mapperUsing jersey exception mapper
Using jersey exception mapper
 
Service Oriented Integration with ServiceMix
Service Oriented Integration with ServiceMixService Oriented Integration with ServiceMix
Service Oriented Integration with ServiceMix
 
The Future of the Web - Cold Front conference 2016
The Future of the Web - Cold Front conference 2016The Future of the Web - Cold Front conference 2016
The Future of the Web - Cold Front conference 2016
 
Monkey man
Monkey manMonkey man
Monkey man
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Recently uploaded (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 

Payments On Rails