authorizenet 1.8.7 → 1.8.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/lib/app/helpers/authorize_net_helper.rb +23 -23
  3. data/lib/authorize_net.rb +107 -103
  4. data/lib/authorize_net/addresses/address.rb +28 -28
  5. data/lib/authorize_net/addresses/shipping_address.rb +25 -25
  6. data/lib/authorize_net/aim/response.rb +130 -130
  7. data/lib/authorize_net/aim/transaction.rb +190 -190
  8. data/lib/authorize_net/api/api_transaction.rb +103 -102
  9. data/lib/authorize_net/api/schema.rb +4283 -4283
  10. data/lib/authorize_net/api/transaction.rb +240 -240
  11. data/lib/authorize_net/arb/fields.rb +24 -24
  12. data/lib/authorize_net/arb/paging.rb +33 -33
  13. data/lib/authorize_net/arb/response.rb +33 -33
  14. data/lib/authorize_net/arb/sorting.rb +43 -43
  15. data/lib/authorize_net/arb/subscription.rb +71 -71
  16. data/lib/authorize_net/arb/subscription_detail.rb +14 -14
  17. data/lib/authorize_net/arb/subscription_list_response.rb +43 -43
  18. data/lib/authorize_net/arb/transaction.rb +177 -177
  19. data/lib/authorize_net/authorize_net.rb +153 -153
  20. data/lib/authorize_net/cim/customer_profile.rb +18 -18
  21. data/lib/authorize_net/cim/payment_profile.rb +36 -36
  22. data/lib/authorize_net/cim/response.rb +115 -115
  23. data/lib/authorize_net/cim/transaction.rb +727 -727
  24. data/lib/authorize_net/customer.rb +26 -26
  25. data/lib/authorize_net/email_receipt.rb +23 -23
  26. data/lib/authorize_net/fields.rb +779 -779
  27. data/lib/authorize_net/key_value_response.rb +116 -116
  28. data/lib/authorize_net/key_value_transaction.rb +290 -290
  29. data/lib/authorize_net/line_item.rb +24 -24
  30. data/lib/authorize_net/order.rb +41 -41
  31. data/lib/authorize_net/payment_methods/credit_card.rb +62 -62
  32. data/lib/authorize_net/payment_methods/echeck.rb +71 -71
  33. data/lib/authorize_net/reporting/batch.rb +18 -18
  34. data/lib/authorize_net/reporting/batch_statistics.rb +18 -18
  35. data/lib/authorize_net/reporting/fds_filter.rb +10 -10
  36. data/lib/authorize_net/reporting/response.rb +162 -162
  37. data/lib/authorize_net/reporting/returned_item.rb +46 -46
  38. data/lib/authorize_net/reporting/transaction.rb +133 -133
  39. data/lib/authorize_net/reporting/transaction_details.rb +24 -24
  40. data/lib/authorize_net/response.rb +26 -26
  41. data/lib/authorize_net/sim/hosted_payment_form.rb +37 -37
  42. data/lib/authorize_net/sim/hosted_receipt_page.rb +36 -36
  43. data/lib/authorize_net/sim/response.rb +141 -141
  44. data/lib/authorize_net/sim/transaction.rb +137 -137
  45. data/lib/authorize_net/transaction.rb +65 -65
  46. data/lib/authorize_net/xml_response.rb +171 -171
  47. data/lib/authorize_net/xml_transaction.rb +280 -280
  48. data/lib/authorizenet.rb +4 -4
  49. data/lib/generators/authorize_net/direct_post/direct_post_generator.rb +53 -53
  50. data/lib/generators/authorize_net/direct_post/templates/README-AuthorizeNet +48 -48
  51. data/lib/generators/authorize_net/direct_post/templates/config.yml.erb +8 -8
  52. data/lib/generators/authorize_net/direct_post/templates/config.yml.rails3.erb +8 -8
  53. data/lib/generators/authorize_net/direct_post/templates/controller.rb.erb +30 -30
  54. data/lib/generators/authorize_net/direct_post/templates/initializer.rb +4 -4
  55. data/lib/generators/authorize_net/direct_post/templates/layout.erb +17 -17
  56. data/lib/generators/authorize_net/direct_post/templates/payment.erb +9 -9
  57. data/lib/generators/authorize_net/direct_post/templates/payment.rails3.erb +9 -9
  58. data/lib/generators/authorize_net/sim/sim_generator.rb +47 -47
  59. data/lib/generators/authorize_net/sim/templates/README-AuthorizeNet +51 -51
  60. data/lib/generators/authorize_net/sim/templates/config.yml.erb +8 -8
  61. data/lib/generators/authorize_net/sim/templates/config.yml.rails3.erb +8 -8
  62. data/lib/generators/authorize_net/sim/templates/controller.rb.erb +20 -20
  63. data/lib/generators/authorize_net/sim/templates/initializer.rb +4 -4
  64. data/lib/generators/authorize_net/sim/templates/layout.erb +17 -17
  65. data/lib/generators/authorize_net/sim/templates/payment.erb +5 -5
  66. data/lib/generators/authorize_net/sim/templates/payment.rails3.erb +5 -5
  67. data/lib/generators/generator_extensions.rb +74 -74
  68. metadata +4 -3
@@ -1,190 +1,190 @@
1
- module AuthorizeNet::AIM
2
-
3
- # The AIM transaction class. Handles building the transaction payload and
4
- # transmitting it to the gateway.
5
- class Transaction < AuthorizeNet::KeyValueTransaction
6
-
7
- # The default options for the constructor.
8
- @@option_defaults = {
9
- :transaction_type => Type::AUTHORIZE_AND_CAPTURE,
10
- :gateway => :production,
11
- :test => false,
12
- :allow_split => false,
13
- :delimiter => ',',
14
- :encapsulation_character => nil,
15
- :verify_ssl => true,
16
- :device_type => DeviceType::UNKNOWN,
17
- :market_type => MarketType::RETAIL
18
- }
19
-
20
- # Fields to convert to/from booleans.
21
- @@boolean_fields = [:tax_exempt, :test_request, :recurring_billing, :allow_partial_auth, :delim_data, :email_customer, :relay_response]
22
-
23
- # Fields to convert to/from BigDecimal.
24
- @@decimal_fields = [:amount]
25
-
26
- # Constructs an AIM transaction. You can use the new AIM transaction object
27
- # to issue a request to the payment gateway and parse the response into a new
28
- # AuthorizeNet::AIM::Response object.
29
- #
30
- # +api_login_id+:: Your API login ID, as a string.
31
- # +api_transaction_key+:: Your API transaction key, as a string.
32
- # +options+:: A hash of options. See below for values.
33
- #
34
- # Options
35
- # +transaction_type+:: The type of transaction to perform. Defaults to AuthorizeNet::Type::AUTHORIZE_AND_CAPTURE. This value is only used if run is called directly.
36
- # +gateway+:: The gateway to submit the transaction to. Can be a URL string, an AuthorizeNet::AIM::Transaction::Gateway constant, or one of the convenience symbols :sandbox, :test, :card_present_test, :card_present_live, :card_present_sandbox, :card_present_production, :production, or :live (:test is an alias for :sandbox, :card_present_test is an alias for :card_present_sandbox, :card_present_production is an alias for :card_present_live, and :live is an alias for :production).
37
- # +test+:: A boolean indicating if the transaction should be run in test mode or not (defaults to false).
38
- # +allow_split+:: A boolean indicating if split transactions should be allowed (defaults to false).
39
- # +delimiter+:: A single character (as a string) that will be used to delimit the response from the gateway. Defaults to ','.
40
- # +encapsulation_character+:: A single character (as a string) that will be used to encapsulate each field in the response from the gateway. Defaults to nil.
41
- # +verify_ssl+:: A boolean indicating if the SSL certificate of the +gateway+ should be verified. Defaults to true.
42
- # +device_type+:: A constant from DeviceType indicating the type of POS device used in a card present transaction. Defaults to DeviceType::UNKNOWN.
43
- # +market_type+:: A constant from MarketType indicating your industry. Used for card present transactions. Defaults to MarketType::RETAIL.
44
- #
45
- def initialize(api_login_id, api_transaction_key, options = {})
46
- super()
47
- options = @@option_defaults.merge(options)
48
- @api_login_id = api_login_id
49
- @api_transaction_key = api_transaction_key
50
- @test_mode = options[:test]
51
- @response ||= nil
52
- @delimiter = options[:delimiter]
53
- @type = options[:transaction_type]
54
- @cp_version = nil
55
- case options[:gateway]
56
- when :sandbox, :test
57
- @gateway = Gateway::TEST
58
- when :production, :live
59
- @gateway = Gateway::LIVE
60
- when :card_present_live, :card_present_production
61
- @gateway = Gateway::CARD_PRESENT_LIVE
62
- @cp_version = '1.0'
63
- when :card_present_test, :card_present_sandbox
64
- @gateway = Gateway::CARD_PRESENT_TEST
65
- @cp_version = '1.0'
66
- else
67
- @gateway = options[:gateway]
68
- end
69
- @allow_split_transaction = options[:allow_split]
70
- @encapsulation_character = options[:encapsulation_character]
71
- @verify_ssl = options[:verify_ssl]
72
- @market_type = options[:market_type]
73
- @device_type = options[:device_type]
74
- @solution_id = options[:solution_id]
75
- end
76
-
77
- # Checks if the transaction has been configured for test mode or not. Return TRUE if the
78
- # transaction is a test transaction, FALSE otherwise. All transactions run against the sandbox
79
- # are considered test transactions.
80
- def test?
81
- super || @gateway == Gateway::TEST
82
- end
83
-
84
- # Returns TRUE if split transactions are allowed, FALSE otherwise.
85
- def split_transaction_allowed?
86
- !!@allow_split_transaction
87
- end
88
-
89
- # Returns the current encapsulation character unless there is none, in which case Nil is returned.
90
- def encapsulation_character
91
- @encapsulation_character
92
- end
93
-
94
- # Returns the gateway to be used for this transaction.
95
- def gateway
96
- @gateway
97
- end
98
-
99
- # Checks to see if the transaction has a response (meaning it has been submitted to the gateway).
100
- # Returns TRUE if a response is present, FALSE otherwise.
101
- def has_response?
102
- !@response.nil?
103
- end
104
-
105
- # Retrieve the response object (or Nil if transaction hasn't been sent to the gateway).
106
- def response
107
- @response
108
- end
109
-
110
- # Returns the current delimiter we are using to parse the fields returned by the
111
- # gateway.
112
- def delimiter
113
- @delimiter
114
- end
115
-
116
- # Sets the delimiter used to parse the response from the gateway.
117
- def delimiter=(delimiter)
118
- @delimiter = delimiter
119
- end
120
-
121
- # Submits the transaction to the gateway for processing. Returns a response object. If the transaction
122
- # has already been run, it will return nil.
123
- def run
124
- make_request
125
- end
126
-
127
- # Returns the current card present API version that we are adhering to.
128
- def cp_version
129
- @cp_version
130
- end
131
-
132
- def solution_id
133
- @solution_id
134
- end
135
-
136
- #:enddoc:
137
- protected
138
-
139
- # An internal method that builds the POST body, submits it to the gateway, and constructs a Response object with the response.
140
- def make_request
141
- if has_response?
142
- return nil
143
- end
144
- url = URI.parse(@gateway)
145
- fields = @fields.merge(:type => @type, :delim_char => @delimiter, :delim_data => "TRUE", :login => @api_login_id, :tran_key => @api_transaction_key, :relay_response => "FALSE")
146
-
147
- if @cp_version.nil?
148
- fields.merge!(:version => @version)
149
- else
150
- fields.merge!(:cp_version => @cp_version, :market_type => @market_type, :device_type => @device_type, :response_format => "1")
151
- end
152
- fields[:test_request] = boolean_to_value(@test_mode)
153
- fields[:allow_partial_auth] = 'TRUE' if @allow_split_transaction
154
- fields[:encap_char] = @encapsulation_character unless @encapsulation_character.nil?
155
- fields[:solution_id] = @solution_id unless @solution_id.nil?
156
- fields.each do |k, v|
157
- if @@boolean_fields.include?(k)
158
- fields[k] = boolean_to_value(v)
159
- elsif @@decimal_fields.include?(k)
160
- fields[k] = decimal_to_value(v)
161
- end
162
- end
163
- data = fields.collect do |key, val|
164
- self.to_param(key, val)
165
- end
166
- custom_field_keys = @custom_fields.keys.collect(&:to_s).sort.collect(&:to_sym)
167
- for key in custom_field_keys
168
- data += [self.to_param(key, @custom_fields[key.to_sym], '')]
169
- end
170
- data.flatten!
171
- request = Net::HTTP::Post.new(url.path)
172
- request.content_type = 'application/x-www-form-urlencoded'
173
- request.body = data.join("&")
174
- connection = Net::HTTP.new(url.host, url.port)
175
- connection.use_ssl = true
176
- if @verify_ssl
177
- connection.verify_mode = OpenSSL::SSL::VERIFY_PEER
178
- else
179
- connection.verify_mode = OpenSSL::SSL::VERIFY_NONE
180
- end
181
- begin
182
- @response = AuthorizeNet::AIM::Response.new((connection.start {|http| http.request(request)}), self)
183
- rescue
184
- @response = AuthorizeNet::AIM::Response.new($!, self)
185
- end
186
- end
187
-
188
- end
189
-
190
- end
1
+ module AuthorizeNet::AIM
2
+
3
+ # The AIM transaction class. Handles building the transaction payload and
4
+ # transmitting it to the gateway.
5
+ class Transaction < AuthorizeNet::KeyValueTransaction
6
+
7
+ # The default options for the constructor.
8
+ @@option_defaults = {
9
+ :transaction_type => Type::AUTHORIZE_AND_CAPTURE,
10
+ :gateway => :production,
11
+ :test => false,
12
+ :allow_split => false,
13
+ :delimiter => ',',
14
+ :encapsulation_character => nil,
15
+ :verify_ssl => true,
16
+ :device_type => DeviceType::UNKNOWN,
17
+ :market_type => MarketType::RETAIL
18
+ }
19
+
20
+ # Fields to convert to/from booleans.
21
+ @@boolean_fields = [:tax_exempt, :test_request, :recurring_billing, :allow_partial_auth, :delim_data, :email_customer, :relay_response]
22
+
23
+ # Fields to convert to/from BigDecimal.
24
+ @@decimal_fields = [:amount]
25
+
26
+ # Constructs an AIM transaction. You can use the new AIM transaction object
27
+ # to issue a request to the payment gateway and parse the response into a new
28
+ # AuthorizeNet::AIM::Response object.
29
+ #
30
+ # +api_login_id+:: Your API login ID, as a string.
31
+ # +api_transaction_key+:: Your API transaction key, as a string.
32
+ # +options+:: A hash of options. See below for values.
33
+ #
34
+ # Options
35
+ # +transaction_type+:: The type of transaction to perform. Defaults to AuthorizeNet::Type::AUTHORIZE_AND_CAPTURE. This value is only used if run is called directly.
36
+ # +gateway+:: The gateway to submit the transaction to. Can be a URL string, an AuthorizeNet::AIM::Transaction::Gateway constant, or one of the convenience symbols :sandbox, :test, :card_present_test, :card_present_live, :card_present_sandbox, :card_present_production, :production, or :live (:test is an alias for :sandbox, :card_present_test is an alias for :card_present_sandbox, :card_present_production is an alias for :card_present_live, and :live is an alias for :production).
37
+ # +test+:: A boolean indicating if the transaction should be run in test mode or not (defaults to false).
38
+ # +allow_split+:: A boolean indicating if split transactions should be allowed (defaults to false).
39
+ # +delimiter+:: A single character (as a string) that will be used to delimit the response from the gateway. Defaults to ','.
40
+ # +encapsulation_character+:: A single character (as a string) that will be used to encapsulate each field in the response from the gateway. Defaults to nil.
41
+ # +verify_ssl+:: A boolean indicating if the SSL certificate of the +gateway+ should be verified. Defaults to true.
42
+ # +device_type+:: A constant from DeviceType indicating the type of POS device used in a card present transaction. Defaults to DeviceType::UNKNOWN.
43
+ # +market_type+:: A constant from MarketType indicating your industry. Used for card present transactions. Defaults to MarketType::RETAIL.
44
+ #
45
+ def initialize(api_login_id, api_transaction_key, options = {})
46
+ super()
47
+ options = @@option_defaults.merge(options)
48
+ @api_login_id = api_login_id
49
+ @api_transaction_key = api_transaction_key
50
+ @test_mode = options[:test]
51
+ @response ||= nil
52
+ @delimiter = options[:delimiter]
53
+ @type = options[:transaction_type]
54
+ @cp_version = nil
55
+ case options[:gateway]
56
+ when :sandbox, :test
57
+ @gateway = Gateway::TEST
58
+ when :production, :live
59
+ @gateway = Gateway::LIVE
60
+ when :card_present_live, :card_present_production
61
+ @gateway = Gateway::CARD_PRESENT_LIVE
62
+ @cp_version = '1.0'
63
+ when :card_present_test, :card_present_sandbox
64
+ @gateway = Gateway::CARD_PRESENT_TEST
65
+ @cp_version = '1.0'
66
+ else
67
+ @gateway = options[:gateway]
68
+ end
69
+ @allow_split_transaction = options[:allow_split]
70
+ @encapsulation_character = options[:encapsulation_character]
71
+ @verify_ssl = options[:verify_ssl]
72
+ @market_type = options[:market_type]
73
+ @device_type = options[:device_type]
74
+ @solution_id = options[:solution_id]
75
+ end
76
+
77
+ # Checks if the transaction has been configured for test mode or not. Return TRUE if the
78
+ # transaction is a test transaction, FALSE otherwise. All transactions run against the sandbox
79
+ # are considered test transactions.
80
+ def test?
81
+ super || @gateway == Gateway::TEST
82
+ end
83
+
84
+ # Returns TRUE if split transactions are allowed, FALSE otherwise.
85
+ def split_transaction_allowed?
86
+ !!@allow_split_transaction
87
+ end
88
+
89
+ # Returns the current encapsulation character unless there is none, in which case Nil is returned.
90
+ def encapsulation_character
91
+ @encapsulation_character
92
+ end
93
+
94
+ # Returns the gateway to be used for this transaction.
95
+ def gateway
96
+ @gateway
97
+ end
98
+
99
+ # Checks to see if the transaction has a response (meaning it has been submitted to the gateway).
100
+ # Returns TRUE if a response is present, FALSE otherwise.
101
+ def has_response?
102
+ !@response.nil?
103
+ end
104
+
105
+ # Retrieve the response object (or Nil if transaction hasn't been sent to the gateway).
106
+ def response
107
+ @response
108
+ end
109
+
110
+ # Returns the current delimiter we are using to parse the fields returned by the
111
+ # gateway.
112
+ def delimiter
113
+ @delimiter
114
+ end
115
+
116
+ # Sets the delimiter used to parse the response from the gateway.
117
+ def delimiter=(delimiter)
118
+ @delimiter = delimiter
119
+ end
120
+
121
+ # Submits the transaction to the gateway for processing. Returns a response object. If the transaction
122
+ # has already been run, it will return nil.
123
+ def run
124
+ make_request
125
+ end
126
+
127
+ # Returns the current card present API version that we are adhering to.
128
+ def cp_version
129
+ @cp_version
130
+ end
131
+
132
+ def solution_id
133
+ @solution_id
134
+ end
135
+
136
+ #:enddoc:
137
+ protected
138
+
139
+ # An internal method that builds the POST body, submits it to the gateway, and constructs a Response object with the response.
140
+ def make_request
141
+ if has_response?
142
+ return nil
143
+ end
144
+ url = URI.parse(@gateway)
145
+ fields = @fields.merge(:type => @type, :delim_char => @delimiter, :delim_data => "TRUE", :login => @api_login_id, :tran_key => @api_transaction_key, :relay_response => "FALSE")
146
+
147
+ if @cp_version.nil?
148
+ fields.merge!(:version => @version)
149
+ else
150
+ fields.merge!(:cp_version => @cp_version, :market_type => @market_type, :device_type => @device_type, :response_format => "1")
151
+ end
152
+ fields[:test_request] = boolean_to_value(@test_mode)
153
+ fields[:allow_partial_auth] = 'TRUE' if @allow_split_transaction
154
+ fields[:encap_char] = @encapsulation_character unless @encapsulation_character.nil?
155
+ fields[:solution_id] = @solution_id unless @solution_id.nil?
156
+ fields.each do |k, v|
157
+ if @@boolean_fields.include?(k)
158
+ fields[k] = boolean_to_value(v)
159
+ elsif @@decimal_fields.include?(k)
160
+ fields[k] = decimal_to_value(v)
161
+ end
162
+ end
163
+ data = fields.collect do |key, val|
164
+ self.to_param(key, val)
165
+ end
166
+ custom_field_keys = @custom_fields.keys.collect(&:to_s).sort.collect(&:to_sym)
167
+ for key in custom_field_keys
168
+ data += [self.to_param(key, @custom_fields[key.to_sym], '')]
169
+ end
170
+ data.flatten!
171
+ request = Net::HTTP::Post.new(url.path)
172
+ request.content_type = 'application/x-www-form-urlencoded'
173
+ request.body = data.join("&")
174
+ connection = Net::HTTP.new(url.host, url.port)
175
+ connection.use_ssl = true
176
+ if @verify_ssl
177
+ connection.verify_mode = OpenSSL::SSL::VERIFY_PEER
178
+ else
179
+ connection.verify_mode = OpenSSL::SSL::VERIFY_NONE
180
+ end
181
+ begin
182
+ @response = AuthorizeNet::AIM::Response.new((connection.start {|http| http.request(request)}), self)
183
+ rescue
184
+ @response = AuthorizeNet::AIM::Response.new($!, self)
185
+ end
186
+ end
187
+
188
+ end
189
+
190
+ end
@@ -1,103 +1,104 @@
1
- module AuthorizeNet::API
2
- class ApiTransaction < AuthorizeNet::XmlTransaction
3
-
4
- module Type
5
- API_CREATE_TRANSACTION = "createTransactionRequest"
6
- API_UPDATE_SPLIT_TENDER_GROUP = "updateSplitTenderGroupRequest"
7
-
8
- API_CREATE_SUBSCRIPTION = "ARBCreateSubscriptionRequest"
9
- API_UPDATE_SUBSCRIPTION = "ARBUpdateSubscriptionRequest"
10
- API_CANCEL_SUBSCRIPTION = "ARBCancelSubscriptionRequest"
11
- API_GET_SUBSCRIPTION_STATUS = "ARBGetSubscriptionStatusRequest"
12
- API_GET_SUBSCRIPTION_LIST = "ARBGetSubscriptionListRequest"
13
-
14
- API_GET_CUSTOMER_PROFILE_IDS = "getCustomerProfileIdsRequest"
15
-
16
- API_CREATE_CUSTOMER_PROFILE = "createCustomerProfileRequest"
17
- API_GET_CUSTOMER_PROFILE = "getCustomerProfileRequest"
18
- API_UPDATE_CUSTOMER_PROFILE = "updateCustomerProfileRequest"
19
- API_DELETE_CUSTOMER_PROFILE = "deleteCustomerProfileRequest"
20
-
21
- API_CREATE_CUSTOMER_PAYMENT_PROFILE = "createCustomerPaymentProfileRequest"
22
- API_GET_CUSTOMER_PAYMENT_PROFILE = "getCustomerPaymentProfileRequest"
23
- API_UPDATE_CUSTOMER_PAYMENT_PROFILE = "updateCustomerPaymentProfileRequest"
24
- API_DELETE_CUSTOMER_PAYMENT_PROFILE = "deleteCustomerPaymentProfileRequest"
25
-
26
- API_CREATE_CUSTOMER_SHIPPING_PROFILE = "createCustomerShippingAddressRequest"
27
- API_GET_CUSTOMER_SHIPPING_PROFILE = "getCustomerShippingAddressRequest"
28
- API_UPDATE_CUSTOMER_SHIPPING_PROFILE = "updateCustomerShippingAddressRequest"
29
- API_DELETE_CUSTOMER_SHIPPING_PROFILE = "deleteCustomerShippingAddressRequest"
30
-
31
- API_CREATE_CUSTOMER_PROFILE_FROM_TRANSACTION = "createCustomerProfileFromTransactionRequest"
32
-
33
- API_GET_SETTLED_BATCH_LIST = "getSettledBatchListRequest"
34
- API_GET_TRANSACTION_LIST = "getTransactionListRequest"
35
- API_GET_TRANSACTION_DETAILS = "getTransactionDetailsRequest"
36
- API_GET_UNSETTLED_TRANSACTION_LIST = "getUnsettledTransactionListRequest"
37
- API_GET_BATCH_STATISTICS = "getBatchStatisticsRequest"
38
-
39
- API_GET_HOSTED_PROFILE_PAGE = "getHostedProfilePageRequest"
40
-
41
-
42
- API_DECRYPT_PAYMENT_DATA = "decryptPaymentDataRequest"
43
- API_AUTHENTICATE_TEST_REQUEST = "authenticateTestRequest"
44
-
45
- API_GET_CUSTOMER_PAYMENT_PROFILE_LIST = "getCustomerPaymentProfileListRequest"
46
-
47
- API_ARB_GET_SUBSCRIPTION_REQUEST = "ARBGetSubscriptionRequest"
48
- end
49
-
50
- def initialize(api_login_id, api_transaction_key, options = {})
51
- super
52
- end
53
-
54
- def make_request(request,responseClass,type)
55
- unless responseClass.nil? or request.nil?
56
- begin
57
- @xml = serialize(request,type)
58
- respXml = send_request(@xml)
59
- @response = deserialize(respXml.body,responseClass)
60
- rescue Exception => ex
61
- ex
62
- end
63
- end
64
- end
65
-
66
- def serialize(object,type)
67
- doc = Nokogiri::XML::Document.new
68
- doc.root = object.to_xml
69
-
70
- builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |x|
71
- x.send(type.to_sym, :xmlns => XML_NAMESPACE) {
72
- x.merchantAuthentication {
73
- x.name @api_login_id
74
- x.transactionKey @api_transaction_key
75
- }
76
- x.send:insert, doc.root.element_children
77
- }
78
- end
79
- builder.to_xml
80
- end
81
-
82
- def send_request(xml)
83
- url = URI.parse(@gateway)
84
-
85
- httpRequest = Net::HTTP::Post.new(url.path)
86
- httpRequest.content_type = 'text/xml'
87
- httpRequest.body = xml
88
- connection = Net::HTTP.new(url.host, url.port)
89
- connection.use_ssl = true
90
- if @verify_ssl
91
- connection.verify_mode = OpenSSL::SSL::VERIFY_PEER
92
- else
93
- connection.verify_mode = OpenSSL::SSL::VERIFY_NONE
94
- end
95
-
96
- response = connection.start {|http| http.request(httpRequest)}
97
- end
98
-
99
- def deserialize(xml,responseClass)
100
- responseClass.from_xml(xml)
101
- end
102
- end
1
+ module AuthorizeNet::API
2
+ class ApiTransaction < AuthorizeNet::XmlTransaction
3
+
4
+ module Type
5
+ API_CREATE_TRANSACTION = "createTransactionRequest"
6
+ API_UPDATE_SPLIT_TENDER_GROUP = "updateSplitTenderGroupRequest"
7
+
8
+ API_CREATE_SUBSCRIPTION = "ARBCreateSubscriptionRequest"
9
+ API_UPDATE_SUBSCRIPTION = "ARBUpdateSubscriptionRequest"
10
+ API_CANCEL_SUBSCRIPTION = "ARBCancelSubscriptionRequest"
11
+ API_GET_SUBSCRIPTION_STATUS = "ARBGetSubscriptionStatusRequest"
12
+ API_GET_SUBSCRIPTION_LIST = "ARBGetSubscriptionListRequest"
13
+
14
+ API_GET_CUSTOMER_PROFILE_IDS = "getCustomerProfileIdsRequest"
15
+
16
+ API_CREATE_CUSTOMER_PROFILE = "createCustomerProfileRequest"
17
+ API_GET_CUSTOMER_PROFILE = "getCustomerProfileRequest"
18
+ API_UPDATE_CUSTOMER_PROFILE = "updateCustomerProfileRequest"
19
+ API_DELETE_CUSTOMER_PROFILE = "deleteCustomerProfileRequest"
20
+
21
+ API_CREATE_CUSTOMER_PAYMENT_PROFILE = "createCustomerPaymentProfileRequest"
22
+ API_GET_CUSTOMER_PAYMENT_PROFILE = "getCustomerPaymentProfileRequest"
23
+ API_UPDATE_CUSTOMER_PAYMENT_PROFILE = "updateCustomerPaymentProfileRequest"
24
+ API_VALIDATE_CUSTOMER_PAYMENT_PROFILE = "validateCustomerPaymentProfileRequest"
25
+ API_DELETE_CUSTOMER_PAYMENT_PROFILE = "deleteCustomerPaymentProfileRequest"
26
+
27
+ API_CREATE_CUSTOMER_SHIPPING_PROFILE = "createCustomerShippingAddressRequest"
28
+ API_GET_CUSTOMER_SHIPPING_PROFILE = "getCustomerShippingAddressRequest"
29
+ API_UPDATE_CUSTOMER_SHIPPING_PROFILE = "updateCustomerShippingAddressRequest"
30
+ API_DELETE_CUSTOMER_SHIPPING_PROFILE = "deleteCustomerShippingAddressRequest"
31
+
32
+ API_CREATE_CUSTOMER_PROFILE_FROM_TRANSACTION = "createCustomerProfileFromTransactionRequest"
33
+
34
+ API_GET_SETTLED_BATCH_LIST = "getSettledBatchListRequest"
35
+ API_GET_TRANSACTION_LIST = "getTransactionListRequest"
36
+ API_GET_TRANSACTION_DETAILS = "getTransactionDetailsRequest"
37
+ API_GET_UNSETTLED_TRANSACTION_LIST = "getUnsettledTransactionListRequest"
38
+ API_GET_BATCH_STATISTICS = "getBatchStatisticsRequest"
39
+
40
+ API_GET_HOSTED_PROFILE_PAGE = "getHostedProfilePageRequest"
41
+
42
+
43
+ API_DECRYPT_PAYMENT_DATA = "decryptPaymentDataRequest"
44
+ API_AUTHENTICATE_TEST_REQUEST = "authenticateTestRequest"
45
+
46
+ API_GET_CUSTOMER_PAYMENT_PROFILE_LIST = "getCustomerPaymentProfileListRequest"
47
+
48
+ API_ARB_GET_SUBSCRIPTION_REQUEST = "ARBGetSubscriptionRequest"
49
+ end
50
+
51
+ def initialize(api_login_id, api_transaction_key, options = {})
52
+ super
53
+ end
54
+
55
+ def make_request(request,responseClass,type)
56
+ unless responseClass.nil? or request.nil?
57
+ begin
58
+ @xml = serialize(request,type)
59
+ respXml = send_request(@xml)
60
+ @response = deserialize(respXml.body,responseClass)
61
+ rescue Exception => ex
62
+ ex
63
+ end
64
+ end
65
+ end
66
+
67
+ def serialize(object,type)
68
+ doc = Nokogiri::XML::Document.new
69
+ doc.root = object.to_xml
70
+
71
+ builder = Nokogiri::XML::Builder.new(:encoding => 'utf-8') do |x|
72
+ x.send(type.to_sym, :xmlns => XML_NAMESPACE) {
73
+ x.merchantAuthentication {
74
+ x.name @api_login_id
75
+ x.transactionKey @api_transaction_key
76
+ }
77
+ x.send:insert, doc.root.element_children
78
+ }
79
+ end
80
+ builder.to_xml
81
+ end
82
+
83
+ def send_request(xml)
84
+ url = URI.parse(@gateway)
85
+
86
+ httpRequest = Net::HTTP::Post.new(url.path)
87
+ httpRequest.content_type = 'text/xml'
88
+ httpRequest.body = xml
89
+ connection = Net::HTTP.new(url.host, url.port)
90
+ connection.use_ssl = true
91
+ if @verify_ssl
92
+ connection.verify_mode = OpenSSL::SSL::VERIFY_PEER
93
+ else
94
+ connection.verify_mode = OpenSSL::SSL::VERIFY_NONE
95
+ end
96
+
97
+ response = connection.start {|http| http.request(httpRequest)}
98
+ end
99
+
100
+ def deserialize(xml,responseClass)
101
+ responseClass.from_xml(xml)
102
+ end
103
+ end
103
104
  end