authorizenet_blaq 1.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +7 -0
  2. data/lib/app/helpers/authorize_net_helper.rb +24 -0
  3. data/lib/authorize_net/addresses/address.rb +29 -0
  4. data/lib/authorize_net/addresses/shipping_address.rb +26 -0
  5. data/lib/authorize_net/aim/response.rb +131 -0
  6. data/lib/authorize_net/aim/transaction.rb +190 -0
  7. data/lib/authorize_net/api/api_transaction.rb +123 -0
  8. data/lib/authorize_net/api/constants.yml +1 -0
  9. data/lib/authorize_net/api/schema.rb +4985 -0
  10. data/lib/authorize_net/api/transaction.rb +258 -0
  11. data/lib/authorize_net/arb/fields.rb +24 -0
  12. data/lib/authorize_net/arb/paging.rb +33 -0
  13. data/lib/authorize_net/arb/response.rb +34 -0
  14. data/lib/authorize_net/arb/sorting.rb +43 -0
  15. data/lib/authorize_net/arb/subscription.rb +72 -0
  16. data/lib/authorize_net/arb/subscription_detail.rb +14 -0
  17. data/lib/authorize_net/arb/subscription_list_response.rb +43 -0
  18. data/lib/authorize_net/arb/transaction.rb +177 -0
  19. data/lib/authorize_net/authorize_net.rb +154 -0
  20. data/lib/authorize_net/cim/customer_profile.rb +19 -0
  21. data/lib/authorize_net/cim/payment_profile.rb +37 -0
  22. data/lib/authorize_net/cim/response.rb +116 -0
  23. data/lib/authorize_net/cim/transaction.rb +727 -0
  24. data/lib/authorize_net/customer.rb +27 -0
  25. data/lib/authorize_net/email_receipt.rb +24 -0
  26. data/lib/authorize_net/fields.rb +779 -0
  27. data/lib/authorize_net/key_value_response.rb +117 -0
  28. data/lib/authorize_net/key_value_transaction.rb +291 -0
  29. data/lib/authorize_net/line_item.rb +25 -0
  30. data/lib/authorize_net/order.rb +42 -0
  31. data/lib/authorize_net/payment_methods/credit_card.rb +62 -0
  32. data/lib/authorize_net/payment_methods/echeck.rb +72 -0
  33. data/lib/authorize_net/reporting/batch.rb +19 -0
  34. data/lib/authorize_net/reporting/batch_statistics.rb +19 -0
  35. data/lib/authorize_net/reporting/fds_filter.rb +11 -0
  36. data/lib/authorize_net/reporting/response.rb +163 -0
  37. data/lib/authorize_net/reporting/returned_item.rb +46 -0
  38. data/lib/authorize_net/reporting/transaction.rb +133 -0
  39. data/lib/authorize_net/reporting/transaction_details.rb +25 -0
  40. data/lib/authorize_net/response.rb +27 -0
  41. data/lib/authorize_net/sim/hosted_payment_form.rb +38 -0
  42. data/lib/authorize_net/sim/hosted_receipt_page.rb +37 -0
  43. data/lib/authorize_net/sim/response.rb +142 -0
  44. data/lib/authorize_net/sim/transaction.rb +138 -0
  45. data/lib/authorize_net/transaction.rb +66 -0
  46. data/lib/authorize_net/xml_response.rb +172 -0
  47. data/lib/authorize_net/xml_transaction.rb +298 -0
  48. data/lib/authorize_net.rb +107 -0
  49. data/lib/authorizenet_blaq.rb +4 -0
  50. data/lib/generators/authorize_net/direct_post/direct_post_generator.rb +53 -0
  51. data/lib/generators/authorize_net/direct_post/templates/README-AuthorizeNet +49 -0
  52. data/lib/generators/authorize_net/direct_post/templates/config.yml.erb +8 -0
  53. data/lib/generators/authorize_net/direct_post/templates/config.yml.rails3.erb +8 -0
  54. data/lib/generators/authorize_net/direct_post/templates/controller.rb.erb +31 -0
  55. data/lib/generators/authorize_net/direct_post/templates/initializer.rb +4 -0
  56. data/lib/generators/authorize_net/direct_post/templates/layout.erb +18 -0
  57. data/lib/generators/authorize_net/direct_post/templates/payment.erb +10 -0
  58. data/lib/generators/authorize_net/direct_post/templates/payment.rails3.erb +10 -0
  59. data/lib/generators/authorize_net/direct_post/templates/receipt.erb +1 -0
  60. data/lib/generators/authorize_net/direct_post/templates/relay_response.erb +1 -0
  61. data/lib/generators/authorize_net/sim/sim_generator.rb +47 -0
  62. data/lib/generators/authorize_net/sim/templates/README-AuthorizeNet +52 -0
  63. data/lib/generators/authorize_net/sim/templates/config.yml.erb +8 -0
  64. data/lib/generators/authorize_net/sim/templates/config.yml.rails3.erb +8 -0
  65. data/lib/generators/authorize_net/sim/templates/controller.rb.erb +21 -0
  66. data/lib/generators/authorize_net/sim/templates/initializer.rb +4 -0
  67. data/lib/generators/authorize_net/sim/templates/layout.erb +18 -0
  68. data/lib/generators/authorize_net/sim/templates/payment.erb +6 -0
  69. data/lib/generators/authorize_net/sim/templates/payment.rails3.erb +6 -0
  70. data/lib/generators/authorize_net/sim/templates/thank_you.erb +1 -0
  71. data/lib/generators/generator_extensions.rb +75 -0
  72. metadata +196 -0
@@ -0,0 +1,107 @@
1
+ # The SDK initialization enters here. Loads all needed libraries and files. Inspects
2
+ # the current runtime to see if Rails is present. If it is, we inject our helper into
3
+ # ActiveSupport.
4
+
5
+ #coverall
6
+ # require 'coveralls'
7
+ # Coveralls.wear!
8
+
9
+ require "cgi"
10
+ require "net/https"
11
+ require "uri"
12
+ require "openssl"
13
+ require 'bigdecimal'
14
+ require 'nokogiri'
15
+ require 'date'
16
+
17
+ # TODO: Add local data validation where possible
18
+
19
+ $:.unshift File.dirname(__FILE__)
20
+
21
+ require "authorize_net/authorize_net"
22
+ require "authorize_net/payment_methods/credit_card"
23
+ require "authorize_net/payment_methods/echeck"
24
+ require "authorize_net/addresses/address"
25
+ require "authorize_net/addresses/shipping_address"
26
+ require "authorize_net/customer"
27
+ require "authorize_net/email_receipt"
28
+ require "authorize_net/order"
29
+ require "authorize_net/line_item"
30
+ require "authorize_net/cim/payment_profile"
31
+ require "authorize_net/cim/customer_profile"
32
+ require "authorize_net/reporting/batch"
33
+ require "authorize_net/reporting/batch_statistics"
34
+ require "authorize_net/reporting/transaction_details"
35
+ require "authorize_net/reporting/fds_filter"
36
+ require "authorize_net/reporting/returned_item"
37
+ require "authorize_net/response"
38
+ require "authorize_net/key_value_response"
39
+ require "authorize_net/xml_response"
40
+ require "authorize_net/transaction"
41
+ require "authorize_net/key_value_transaction"
42
+ require "authorize_net/xml_transaction"
43
+ require "authorize_net/fields"
44
+
45
+ # AIM
46
+
47
+ require "authorize_net/aim/transaction"
48
+ require "authorize_net/aim/response"
49
+
50
+ # API
51
+ require "authorize_net/api/schema"
52
+ require "authorize_net/api/api_transaction"
53
+ require "authorize_net/api/transaction"
54
+
55
+ # SIM
56
+
57
+ require "authorize_net/sim/hosted_payment_form"
58
+ require "authorize_net/sim/hosted_receipt_page"
59
+ require "authorize_net/sim/transaction"
60
+ require "authorize_net/sim/response"
61
+
62
+ # ARB
63
+
64
+ require "authorize_net/arb/paging"
65
+ require "authorize_net/arb/sorting"
66
+ require "authorize_net/arb/subscription_list_response"
67
+ require "authorize_net/arb/subscription_detail"
68
+ require "authorize_net/arb/fields"
69
+ require "authorize_net/arb/subscription"
70
+ require "authorize_net/arb/response"
71
+ require "authorize_net/arb/transaction"
72
+
73
+ # CIM
74
+
75
+ require "authorize_net/cim/response"
76
+ require "authorize_net/cim/transaction"
77
+
78
+ # Reporting
79
+
80
+ require "authorize_net/reporting/response"
81
+ require "authorize_net/reporting/transaction"
82
+
83
+ # Load our Rails plugin
84
+
85
+ if defined?(Rails)
86
+ if defined?(Rails::Railtie)
87
+ module AuthorizeNet
88
+ class Railtie < Rails::Railtie
89
+ initializer "authorize_net.load_path_initialize" do |app|
90
+ %w{ models controllers helpers }.each do |dir|
91
+ path = File.join(File.dirname(__FILE__), 'app', dir)
92
+ $LOAD_PATH << path
93
+ ActiveSupport::Dependencies.autoload_paths << path
94
+ ActiveSupport::Dependencies.autoload_once_paths.delete(path)
95
+ end
96
+ end
97
+ end
98
+ end
99
+ else
100
+ %w{ models controllers helpers }.each do |dir|
101
+ path = File.join(File.dirname(__FILE__), 'app', dir)
102
+ $LOAD_PATH << path
103
+ ActiveSupport::Dependencies.load_paths << path
104
+ ActiveSupport::Dependencies.load_once_paths.delete(path)
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,4 @@
1
+ # This file is just here to avoid obnoxious gem name/require name issues. All this
2
+ # file does is require authorize_net.rb, the real initialization file.
3
+
4
+ require 'authorize_net'
@@ -0,0 +1,53 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/named_base'
3
+
4
+ module AuthorizeNet
5
+ module Generators
6
+ class DirectPostGenerator < Rails::Generators::NamedBase
7
+ source_root File.expand_path("../templates", __FILE__)
8
+ p '__FILE__:' + __FILE__
9
+ p 'source_root:' + source_root
10
+ argument :api_login_id, :type => :string, :desc => 'Your Authorize.Net API login ID.', :optional => true
11
+ argument :api_transaction_key, :type => :string, :desc => 'Your Authorize.Net API transaction key.', :optional => true
12
+ argument :merchant_hash_value, :type => :string, :desc => 'Your Authorize.Net merchant hash value.', :optional => true
13
+ desc <<-DESC
14
+ Description
15
+ Generates a simple implementation of Authorize.Net's Direct Post Method integration method.
16
+
17
+ Example:
18
+ rails generate authorize_net:direct_post payments API_LOGIN_ID API_TRANSACTION_KEY MERCHANT_HASH_VALUE
19
+
20
+ This will create:
21
+ create README-AuthorizeNet
22
+ create app/views/payments
23
+ create app/views/payments/payment.erb
24
+ create app/views/payments/receipt.erb
25
+ create app/views/payments/relay_response.erb
26
+ create app/views/layouts/authorize_net.erb
27
+ create config/authorize_net.yml
28
+ create config/initializers/authorize_net.rb
29
+ create app/controllers/payments_controller.rb
30
+ route match '/payments/receipt', :to => 'payments#receipt', :as => 'payments_receipt', :via => [:get]
31
+ route match '/payments/relay_response', :to => 'payments#relay_response', :as => 'payments_relay_response', :via => [:post]
32
+ route match '/payments/payment', :to => 'payments#payment', :as => 'paymentspayment', :via => [:get]
33
+
34
+ DESC
35
+
36
+ def manifest
37
+ copy_file "README-AuthorizeNet", "README-AuthorizeNet"
38
+ empty_directory "app/views/#{file_name}"
39
+ copy_file "payment.rails3.erb", "app/views/#{file_name}/payment.erb"
40
+ copy_file "receipt.erb", "app/views/#{file_name}/receipt.erb"
41
+ copy_file "relay_response.erb", "app/views/#{file_name}/relay_response.erb"
42
+ copy_file "layout.erb", "app/views/layouts/authorize_net.erb"
43
+ template "config.yml.rails3.erb", "config/authorize_net.yml"
44
+ copy_file "initializer.rb", "config/initializers/authorize_net.rb"
45
+ template "controller.rb.erb", "app/controllers/#{file_name}_controller.rb"
46
+ route "match '/#{plural_name}/receipt', :to => '#{file_name}#receipt', :as => '#{singular_name}_receipt', :via => [:get]"
47
+ route "match '/#{plural_name}/relay_response', :to => '#{file_name}#relay_response', :as => '#{singular_name}_relay_response', :via => [:post]"
48
+ route "match '/#{plural_name}/payment', :to => '#{file_name}#payment', :as => '#{singular_name}payment', :via => [:get]"
49
+ end
50
+
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,49 @@
1
+ = Authorize.Net Ruby SDK
2
+
3
+ The Authorize.Net Ruby SDK is meant to offer an alternate object-oriented
4
+ model of development with the Authorize.net APIs (Version 3.1). The SDK is
5
+ based entirely off the name-value pair API, but performs the core payment
6
+ activities (such as error handling/parsing, network communication, and data
7
+ encoding) behind the scenes. Providing the end developer with this allows the
8
+ developer to start integrating immediately without having to write out a mass
9
+ of boiler plate code.
10
+
11
+ == Prerequisites
12
+
13
+ * Ruby 1.8.7 or higher
14
+ * RubyGem 1.3.7 or higher (to build the gem)
15
+ * RDoc 1.0 or higher (to build documentation)
16
+ * Rake 0.8.7 or higher (to use the rake tasks)
17
+
18
+ == Installation
19
+
20
+ Goto the Authorize.Net SDK download page and download the Ruby gem. Then
21
+
22
+ > gem install authorize-net-1.0.0.gem
23
+
24
+ == Usage
25
+
26
+ A generator is provided to aid in setting up a Direct Post Method application. In the example below 'payments' is the name of the controller to generate.
27
+
28
+ > sudo gem install rails -v '~> 2.1'
29
+ > rails my_direct_post_app
30
+ > cd my_direct_post_app
31
+ > script/generate authorize_net_direct_post payments YOUR_API_LOGIN_ID YOUR_TRANSACTION_KEY MERCH_HASH_KEY
32
+ > script/server
33
+
34
+ After running the generator you will probably want to customize the payment form found in 'app/views/payments/payment.erb' and the receipt found in 'app/views/payments/receipt.erb'.
35
+
36
+ There is also a default layout generated, 'app/views/layouts/authorize_net.erb'. If you already have your own layout, you can delete that file and the reference to it in the controller ('app/controllers/payments_controller.rb').
37
+
38
+
39
+ == Credit Card Test Numbers
40
+
41
+ For your reference, you can use the following test credit card numbers.
42
+ The expiration date must be set to the present date or later. Use 123 for
43
+ the CCV code.
44
+
45
+ American Express:: 370000000000002
46
+ Discover:: 6011000000000012
47
+ Visa:: 4007000000027
48
+ JCB:: 3088000000000017
49
+ Diners Club/ Carte Blanche:: 38000000000006
@@ -0,0 +1,8 @@
1
+ default:
2
+ api_login_id: <%= args[0] %>
3
+ api_transaction_key: <%= args[1] %>
4
+ merchant_hash_value: <%= args[2] %>
5
+
6
+ development:
7
+ test:
8
+ production:
@@ -0,0 +1,8 @@
1
+ default:
2
+ api_login_id: <%= self.api_login_id %>
3
+ api_transaction_key: <%= self.api_transaction_key %>
4
+ merchant_hash_value: <%= self.merchant_hash_value %>
5
+
6
+ development:
7
+ test:
8
+ production:
@@ -0,0 +1,31 @@
1
+ class <%= class_name %>Controller < ApplicationController
2
+
3
+ layout 'authorize_net'
4
+ helper :authorize_net
5
+ protect_from_forgery :except => :relay_response
6
+
7
+ # GET
8
+ # Displays a payment form.
9
+ def payment
10
+ @amount = 10.00
11
+ @sim_transaction = AuthorizeNet::SIM::Transaction.new(AUTHORIZE_NET_CONFIG['api_login_id'], AUTHORIZE_NET_CONFIG['api_transaction_key'], @amount, :relay_url => <%= singular_name %>_relay_response_url(:only_path => false))
12
+ end
13
+
14
+ # POST
15
+ # Returns relay response when Authorize.Net POSTs to us.
16
+ def relay_response
17
+ sim_response = AuthorizeNet::SIM::Response.new(params)
18
+ if sim_response.success?(AUTHORIZE_NET_CONFIG['api_login_id'], AUTHORIZE_NET_CONFIG['merchant_hash_value'])
19
+ render :text => sim_response.direct_post_reply(<%= singular_name %>_receipt_url(:only_path => false), :include => true)
20
+ else
21
+ render
22
+ end
23
+ end
24
+
25
+ # GET
26
+ # Displays a receipt.
27
+ def receipt
28
+ @auth_code = params[:x_auth_code]
29
+ end
30
+
31
+ end
@@ -0,0 +1,4 @@
1
+ yml = YAML.load_file("#{Rails.root}/config/authorize_net.yml")
2
+ AUTHORIZE_NET_CONFIG = yml['default']
3
+ AUTHORIZE_NET_CONFIG.merge!(yml[Rails.env]) unless yml[Rails.env].nil?
4
+ AUTHORIZE_NET_CONFIG.freeze
@@ -0,0 +1,18 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Direct Post Sample App</title>
5
+ <style>
6
+ body {
7
+ text-align: center;
8
+ font-family: Helvetica;
9
+ }
10
+ label {
11
+ display: block;
12
+ }
13
+ </style>
14
+ </head>
15
+ <body>
16
+ <%= yield %>
17
+ </body>
18
+ </html>
@@ -0,0 +1,10 @@
1
+ <% form_for :sim_transaction, :url => AuthorizeNet::SIM::Transaction::Gateway::TEST do |f| %>
2
+ <%= sim_fields(@sim_transaction) %>
3
+ <%= label_tag 'x_amount', "Total: #{number_to_currency(@amount)}" %>
4
+ <%= label_tag 'x_card_num', 'Credit Card Number'%>
5
+ <%= text_field_tag 'x_card_num' %>
6
+ <%= label_tag 'x_exp_date', 'Expiration Date (MMYY)'%>
7
+ <%= text_field_tag 'x_exp_date' %>
8
+ <br />
9
+ <%= f.submit 'Purchase'%>
10
+ <% end %>
@@ -0,0 +1,10 @@
1
+ <%= form_for :sim_transaction, :url => AuthorizeNet::SIM::Transaction::Gateway::TEST do |f| %>
2
+ <%= sim_fields(@sim_transaction) %>
3
+ <%= label_tag 'x_amount', "Total: #{number_to_currency(@amount)}" %>
4
+ <%= label_tag 'x_card_num', 'Credit Card Number'%>
5
+ <%= text_field_tag 'x_card_num' %>
6
+ <%= label_tag 'x_exp_date', 'Expiration Date (MMYY)'%>
7
+ <%= text_field_tag 'x_exp_date' %>
8
+ <br />
9
+ <%= f.submit 'Purchase'%>
10
+ <% end %>
@@ -0,0 +1 @@
1
+ Thanks for your purchase! Your authorization code is <%=h @auth_code %>.
@@ -0,0 +1 @@
1
+ Sorry, something went wrong, please try your transaction again.
@@ -0,0 +1,47 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/named_base'
3
+
4
+ module AuthorizeNet
5
+ module Generators
6
+ class SimGenerator < Rails::Generators::NamedBase
7
+ source_root File.expand_path("../templates", __FILE__)
8
+ argument :api_login_id, :type => :string, :desc => 'Your Authorize.Net API login ID.', :optional => true
9
+ argument :api_transaction_key, :type => :string, :desc => 'Your Authorize.Net API transaction key.', :optional => true
10
+ argument :merchant_hash_value, :type => :string, :desc => 'Your Authorize.Net merchant hash value.', :optional => true
11
+ desc <<-DESC
12
+ Description
13
+ Generates a simple implementation of Authorize.Net's SIM integration method.
14
+
15
+ Example:
16
+ rails generate authorize_net:sim payments API_LOGIN_ID API_TRANSACTION_KEY MERCHANT_HASH_VALUE
17
+
18
+ This will create:
19
+ create README-AuthorizeNet
20
+ create app/views/payments
21
+ create app/views/payments/payment.erb
22
+ create app/views/payments/thank_you.erb
23
+ create app/views/layouts/authorize_net.erb
24
+ create config/authorize_net.yml
25
+ create config/initializers/authorize_net.rb
26
+ create app/controllers/payments_controller.rb
27
+ route match '/payments/thank_you', :to => 'payments#thank_you', :as => 'payments_thank_you', :via => [:get]
28
+ route match '/payments/payment', :to => 'payments#payment', :as => 'paymentspayment', :via => [:get]
29
+
30
+ DESC
31
+
32
+ def manifest
33
+ copy_file "README-AuthorizeNet", "README-AuthorizeNet"
34
+ empty_directory "app/views/#{file_name}"
35
+ copy_file "payment.rails3.erb", "app/views/#{file_name}/payment.erb"
36
+ copy_file "thank_you.erb", "app/views/#{file_name}/thank_you.erb"
37
+ copy_file "layout.erb", "app/views/layouts/authorize_net.erb"
38
+ template "config.yml.rails3.erb", "config/authorize_net.yml"
39
+ copy_file "initializer.rb", "config/initializers/authorize_net.rb"
40
+ template "controller.rb.erb", "app/controllers/#{file_name}_controller.rb"
41
+ route "match '/#{plural_name}/thank_you', :to => '#{file_name}#thank_you', :as => '#{singular_name}_thank_you', :via => [:get]"
42
+ route "match '/#{plural_name}/payment', :to => '#{file_name}#payment', :as => '#{singular_name}payment', :via => [:get]"
43
+ end
44
+
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,52 @@
1
+ = Authorize.Net Ruby SDK
2
+
3
+ The Authorize.Net Ruby SDK is meant to offer an alternate object-oriented
4
+ model of development with the Authorize.net APIs (Version 3.1). The SDK is
5
+ based entirely off the name-value pair API, but performs the core payment
6
+ activities (such as error handling/parsing, network communication, and data
7
+ encoding) behind the scenes. Providing the end developer with this allows the
8
+ developer to start integrating immediately without having to write out a mass
9
+ of boiler plate code.
10
+
11
+ == Prerequisites
12
+
13
+ * Ruby 1.8.7 or higher
14
+ * RubyGem 1.3.7 or higher (to build the gem)
15
+ * RDoc 1.0 or higher (to build documentation)
16
+ * Rake 0.8.7 or higher (to use the rake tasks)
17
+
18
+ == Installation
19
+
20
+ Goto the Authorize.Net SDK download page and download the Ruby gem. Then
21
+
22
+ > gem install authorize-net-1.0.0.gem
23
+
24
+ == Usage
25
+
26
+ === Server Integration Method (SIM)
27
+
28
+ A generator is provided to aid in setting up a Server Integration Method application. In the example below 'payments' is the name of the controller to generate.
29
+
30
+ > sudo gem install rails -v '~> 2.1'
31
+ > rails my_sim_app
32
+ > cd my_sim_app
33
+ > script/generate authorize_net_sim payments YOUR_API_LOGIN_ID YOUR_TRANSACTION_KEY MERCH_HASH_KEY
34
+ > script/server
35
+
36
+ After running the generator you will probably want to customize the payment page found in 'app/views/payments/payment.erb' and the thank you page found in 'app/views/payments/thank_you.erb'.
37
+
38
+ You may also want to customize the actual payment form and receipt pages. That can be done by making the necessary changes to the AuthorizeNet::SIM::Transaction object ('@sim_transaction') found in the +payment+ action in 'app/controllers/payments_controller.rb'. The styling of those hosted pages are controlled by the AuthorizeNet::SIM::HostedReceiptPage and AuthorizeNet::SIM::HostedPaymentForm objects (which are passed to the AuthorizeNet::SIM::Transaction).
39
+
40
+ There is also a default layout generated, 'app/views/layouts/authorize_net.erb'. If you already have your own layout, you can delete that file and the reference to it in the controller ('app/controllers/payments_controller.rb').
41
+
42
+ == Credit Card Test Numbers
43
+
44
+ For your reference, you can use the following test credit card numbers.
45
+ The expiration date must be set to the present date or later. Use 123 for
46
+ the CCV code.
47
+
48
+ American Express:: 370000000000002
49
+ Discover:: 6011000000000012
50
+ Visa:: 4007000000027
51
+ JCB:: 3088000000000017
52
+ Diners Club/ Carte Blanche:: 38000000000006
@@ -0,0 +1,8 @@
1
+ default:
2
+ api_login_id: <%= args[0] %>
3
+ api_transaction_key: <%= args[1] %>
4
+ merchant_hash_value: <%= args[2] %>
5
+
6
+ development:
7
+ test:
8
+ production:
@@ -0,0 +1,8 @@
1
+ default:
2
+ api_login_id: <%= self.api_login_id %>
3
+ api_transaction_key: <%= self.api_transaction_key %>
4
+ merchant_hash_value: <%= self.merchant_hash_value %>
5
+
6
+ development:
7
+ test:
8
+ production:
@@ -0,0 +1,21 @@
1
+ class <%= class_name %>Controller < ApplicationController
2
+
3
+ layout 'authorize_net'
4
+ helper :authorize_net
5
+ protect_from_forgery :except => :relay_response
6
+
7
+ # GET
8
+ # Displays a payment form.
9
+ def payment
10
+ @amount = 10.00
11
+ @sim_transaction = AuthorizeNet::SIM::Transaction.new(AUTHORIZE_NET_CONFIG['api_login_id'], AUTHORIZE_NET_CONFIG['api_transaction_key'], @amount, :hosted_payment_form => true)
12
+ @sim_transaction.set_hosted_payment_receipt(AuthorizeNet::SIM::HostedReceiptPage.new(:link_method => AuthorizeNet::SIM::HostedReceiptPage::LinkMethod::GET, :link_text => 'Continue', :link_url => <%= singular_name %>_thank_you_url(:only_path => false)))
13
+ end
14
+
15
+ # GET
16
+ # Displays a thank you page.
17
+ def thank_you
18
+ @auth_code = params[:x_auth_code]
19
+ end
20
+
21
+ end
@@ -0,0 +1,4 @@
1
+ yml = YAML.load_file("#{Rails.root}/config/authorize_net.yml")
2
+ AUTHORIZE_NET_CONFIG = yml['default']
3
+ AUTHORIZE_NET_CONFIG.merge!(yml[Rails.env]) unless yml[Rails.env].nil?
4
+ AUTHORIZE_NET_CONFIG.freeze
@@ -0,0 +1,18 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>SIM Sample App</title>
5
+ <style>
6
+ body {
7
+ text-align: center;
8
+ font-family: Helvetica;
9
+ }
10
+ label {
11
+ display: block;
12
+ }
13
+ </style>
14
+ </head>
15
+ <body>
16
+ <%= yield %>
17
+ </body>
18
+ </html>
@@ -0,0 +1,6 @@
1
+ <% form_for :sim_transaction, :url => AuthorizeNet::SIM::Transaction::Gateway::TEST do |f| %>
2
+ <%= sim_fields(@sim_transaction) %>
3
+ <%= label_tag 'x_amount', "Total: #{number_to_currency(@amount)}" %>
4
+ <br />
5
+ <%= f.submit 'Purchase'%>
6
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <%= form_for :sim_transaction, :url => AuthorizeNet::SIM::Transaction::Gateway::TEST do |f| %>
2
+ <%= sim_fields(@sim_transaction) %>
3
+ <%= label_tag 'x_amount', "Total: #{number_to_currency(@amount)}" %>
4
+ <br />
5
+ <%= f.submit 'Purchase'%>
6
+ <% end %>
@@ -0,0 +1 @@
1
+ Thanks for your purchase! Your authorization code is <%=h @auth_code %>.
@@ -0,0 +1,75 @@
1
+ # Extends the Rails::Generator::Commands classes to add support for route and gem configuration generation.
2
+
3
+ module Rails
4
+ module Generator
5
+ module Commands
6
+
7
+ class Base
8
+ def route_code(route_options)
9
+ route_options[:path] = route_options[:name] unless route_options.has_key? :path
10
+ code = "map.#{route_options[:name]} '#{route_options[:path]}', :controller => '#{route_options[:controller]}', :action => '#{route_options[:action]}'"
11
+ code += ", :conditions => #{route_options[:conditions]}" if route_options.has_key? :conditions
12
+ end
13
+
14
+ def gsub_file_check(relative_destination, regexp, *args, &block)
15
+ path = destination_path(relative_destination)
16
+ content = File.read(path)
17
+ !(content =~ regexp).nil?
18
+ end
19
+
20
+ def gem_code(gem_options)
21
+ gem_options[:lib] = gem_options[:name] unless gem_options.has_key? :lib
22
+ code = "config.gem '#{gem_options[:name]}', :lib => '#{gem_options[:lib]}'"
23
+ end
24
+ end
25
+
26
+ # Here's a readable version of the long string used above in route_code;
27
+ # but it should be kept on one line to avoid inserting extra whitespace
28
+ # into routes.rb when the generator is run:
29
+ # "map.#{route_options[:name]} '#{route_options[:name]}',
30
+ # :controller => '#{route_options[:controller]}',
31
+ # :action => '#{route_options[:action]}'"
32
+
33
+ class Create
34
+ def route(route_options)
35
+ sentinel = 'ActionController::Routing::Routes.draw do |map|'
36
+ unless gsub_file_check 'config/routes.rb', /(#{Regexp.escape(route_code(route_options))})/mi
37
+ logger.route route_code(route_options)
38
+ gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |m|
39
+ "#{m}\n #{route_code(route_options)}"
40
+ end
41
+ else
42
+ logger.identical route_code(route_options)
43
+ end
44
+ end
45
+
46
+ def gem(gem_options)
47
+ sentinel = 'Rails::Initializer.run do |config|'
48
+ unless gsub_file_check 'config/environment.rb', /(#{Regexp.escape(gem_code(gem_options))})/mi
49
+ logger.gem gem_code(gem_options)
50
+ gsub_file 'config/environment.rb', /(#{Regexp.escape(sentinel)})/mi do |m|
51
+ "#{m}\n #{gem_code(gem_options)}"
52
+ end
53
+ else
54
+ logger.identical gem_code(gem_options)
55
+ end
56
+ end
57
+ end
58
+
59
+ class Destroy
60
+ def route(route_options)
61
+ logger.remove_route route_code(route_options)
62
+ to_remove = "\n #{Regexp.escape(route_code(route_options))}"
63
+ gsub_file 'config/routes.rb', /(#{to_remove})/mi, ''
64
+ end
65
+
66
+ def gem(gem_options)
67
+ logger.remove_gem gem_code(gem_options)
68
+ to_remove = "\n #{Regexp.escape(gem_code(gem_options))}"
69
+ gsub_file 'config/environment.rb', /(#{to_remove})/mi, ''
70
+ end
71
+ end
72
+
73
+ end
74
+ end
75
+ end