activemerchant 1.3.2 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. data.tar.gz.sig +0 -0
  2. data/CHANGELOG +58 -0
  3. data/CONTRIBUTERS +25 -0
  4. data/MIT-LICENSE +3 -3
  5. data/README +16 -10
  6. data/Rakefile +4 -3
  7. data/lib/active_merchant.rb +7 -1
  8. data/lib/active_merchant/billing/check.rb +16 -9
  9. data/lib/active_merchant/billing/gateway.rb +1 -1
  10. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +702 -0
  11. data/lib/active_merchant/billing/gateways/beanstream.rb +102 -0
  12. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +233 -0
  13. data/lib/active_merchant/billing/gateways/beanstream_interac.rb +54 -0
  14. data/lib/active_merchant/billing/gateways/braintree.rb +10 -1
  15. data/lib/active_merchant/billing/gateways/cyber_source.rb +26 -2
  16. data/lib/active_merchant/billing/gateways/data_cash.rb +255 -59
  17. data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
  18. data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +214 -0
  19. data/lib/active_merchant/billing/gateways/net_registry.rb +1 -0
  20. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +2 -2
  21. data/lib/active_merchant/billing/gateways/payflow_express.rb +3 -11
  22. data/lib/active_merchant/billing/gateways/payment_express.rb +2 -2
  23. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +39 -21
  24. data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
  25. data/lib/active_merchant/billing/gateways/paypal_express.rb +3 -12
  26. data/lib/active_merchant/billing/gateways/paypal_express_common.rb +20 -0
  27. data/lib/active_merchant/billing/gateways/protx.rb +25 -25
  28. data/lib/active_merchant/billing/gateways/sage.rb +145 -0
  29. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
  30. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +110 -0
  31. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
  32. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +3 -1
  33. data/lib/active_merchant/billing/gateways/skip_jack.rb +2 -0
  34. data/lib/active_merchant/billing/gateways/trust_commerce.rb +1 -1
  35. data/lib/active_merchant/billing/gateways/wirecard.rb +304 -0
  36. data/lib/active_merchant/billing/integrations.rb +8 -2
  37. data/lib/active_merchant/billing/integrations/action_view_helper.rb +18 -4
  38. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +4 -2
  39. data/lib/active_merchant/billing/integrations/notification.rb +10 -1
  40. data/lib/active_merchant/lib/posts_data.rb +12 -3
  41. data/script/destroy +0 -0
  42. data/script/generate +0 -0
  43. data/test/extra/binding_of_caller.rb +0 -0
  44. data/test/extra/breakpoint.rb +0 -0
  45. data/test/fixtures.yml +24 -0
  46. data/test/remote/gateways/remote_authorize_net_cim_test.rb +459 -0
  47. data/test/remote/gateways/remote_beanstream_interac_test.rb +53 -0
  48. data/test/remote/gateways/remote_beanstream_test.rb +150 -0
  49. data/test/remote/gateways/remote_braintree_test.rb +22 -0
  50. data/test/remote/gateways/remote_cyber_source_test.rb +28 -3
  51. data/test/remote/gateways/remote_data_cash_test.rb +250 -48
  52. data/test/remote/gateways/remote_modern_payments_cim_test.rb +58 -0
  53. data/test/remote/gateways/remote_modern_payments_test.rb +43 -0
  54. data/test/remote/gateways/remote_sage_bankcard_test.rb +109 -0
  55. data/test/remote/gateways/remote_sage_test.rb +87 -0
  56. data/test/remote/gateways/remote_sage_virtual_check_test.rb +62 -0
  57. data/test/remote/gateways/remote_wirecard_test.rb +76 -0
  58. data/test/remote/integrations/remote_paypal_integration_test.rb +15 -3
  59. data/test/test_helper.rb +31 -13
  60. data/test/unit/check_test.rb +14 -2
  61. data/test/unit/credit_card_methods_test.rb +18 -0
  62. data/test/unit/gateways/authorize_net_cim_test.rb +641 -0
  63. data/test/unit/gateways/beanstream_interac_test.rb +51 -0
  64. data/test/unit/gateways/beanstream_test.rb +108 -0
  65. data/test/unit/gateways/braintree_test.rb +2 -5
  66. data/test/unit/gateways/cyber_source_test.rb +18 -0
  67. data/test/unit/gateways/data_cash_test.rb +32 -4
  68. data/test/unit/gateways/gateway_test.rb +8 -1
  69. data/test/unit/gateways/modern_payments_cim_test.rb +171 -0
  70. data/test/unit/gateways/net_registry_test.rb +6 -0
  71. data/test/unit/gateways/payflow_express_test.rb +18 -2
  72. data/test/unit/gateways/paypal_express_test.rb +154 -0
  73. data/test/unit/gateways/paypal_test.rb +140 -0
  74. data/test/unit/gateways/sage_bankcard_test.rb +162 -0
  75. data/test/unit/gateways/sage_virtual_check_test.rb +71 -0
  76. data/test/unit/gateways/secure_pay_au_test.rb +58 -1
  77. data/test/unit/gateways/skip_jack_test.rb +8 -0
  78. data/test/unit/gateways/verifi_test.rb +0 -1
  79. data/test/unit/gateways/wirecard_test.rb +232 -0
  80. data/test/unit/integrations/action_view_helper_test.rb +3 -0
  81. data/test/unit/integrations/notifications/hi_trust_notification_test.rb +23 -2
  82. data/test/unit/integrations/notifications/notification_test.rb +13 -0
  83. data/test/unit/posts_data_test.rb +20 -6
  84. metadata +40 -5
  85. metadata.gz.sig +0 -0
@@ -18,11 +18,7 @@ require 'digest/md5'
18
18
  require File.dirname(__FILE__) + '/../lib/active_merchant'
19
19
 
20
20
  begin
21
- if respond_to? :gem
22
- gem 'actionpack'
23
- else
24
- require_gem 'actionpack'
25
- end
21
+ gem 'actionpack'
26
22
  rescue LoadError
27
23
  raise StandardError, "The view tests need ActionPack installed as gem to run"
28
24
  end
@@ -33,6 +29,14 @@ require 'active_merchant/billing/integrations/action_view_helper'
33
29
 
34
30
  ActiveMerchant::Billing::Base.mode = :test
35
31
 
32
+ # Test gateways
33
+ class SimpleTestGateway < ActiveMerchant::Billing::Gateway
34
+ end
35
+
36
+ class SubclassGateway < SimpleTestGateway
37
+ end
38
+
39
+
36
40
  module ActiveMerchant
37
41
  module Assertions
38
42
  def assert_field(field, value)
@@ -127,20 +131,34 @@ module Test
127
131
  :type => 'visa'
128
132
  }.update(options)
129
133
 
130
- ActiveMerchant::Billing::CreditCard.new(defaults)
134
+ CreditCard.new(defaults)
135
+ end
136
+
137
+ def check(options = {})
138
+ defaults = {
139
+ :name => 'Jim Smith',
140
+ :routing_number => '244183602',
141
+ :account_number => '15378535',
142
+ :account_holder_type => 'personal',
143
+ :account_type => 'checking',
144
+ :number => '1'
145
+ }.update(options)
146
+
147
+ Check.new(defaults)
131
148
  end
132
149
 
133
150
  def address(options = {})
134
151
  {
135
- :name => 'Jim Smith',
152
+ :name => 'Jim Smith',
136
153
  :address1 => '1234 My Street',
137
154
  :address2 => 'Apt 1',
138
- :company => 'Widgets Inc',
139
- :city => 'Ottawa',
140
- :state => 'ON',
141
- :zip => 'K1C2N6',
142
- :country => 'CA',
143
- :phone => '(555)555-5555'
155
+ :company => 'Widgets Inc',
156
+ :city => 'Ottawa',
157
+ :state => 'ON',
158
+ :zip => 'K1C2N6',
159
+ :country => 'CA',
160
+ :phone => '(555)555-5555',
161
+ :fax => '(555)555-6666'
144
162
  }.update(options)
145
163
  end
146
164
 
@@ -1,8 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
3
  class CheckTest < Test::Unit::TestCase
4
- include ActiveMerchant::Billing
5
-
6
4
  VALID_ABA = '111000025'
7
5
  INVALID_ABA = '999999999'
8
6
  MALFORMED_ABA = 'I like fish'
@@ -15,6 +13,20 @@ class CheckTest < Test::Unit::TestCase
15
13
  assert !c.errors.empty?
16
14
  end
17
15
 
16
+ def test_first_name_last_name
17
+ check = Check.new(:name => 'Fred Bloggs')
18
+ assert_equal 'Fred', check.first_name
19
+ assert_equal 'Bloggs', check.last_name
20
+ assert_equal 'Fred Bloggs', check.name
21
+ end
22
+
23
+ def test_nil_name
24
+ check = Check.new(:name => nil)
25
+ assert_nil check.first_name
26
+ assert_nil check.last_name
27
+ assert_equal "", check.name
28
+ end
29
+
18
30
  def test_valid
19
31
  c = Check.new(:name => 'Fred Bloggs',
20
32
  :routing_number => VALID_ABA,
@@ -149,4 +149,22 @@ class CreditCardMethodsTest < Test::Unit::TestCase
149
149
  assert_false CreditCard.matching_type?('6010000000000000', 'discover')
150
150
  assert_false CreditCard.matching_type?('6600000000000000', 'discover')
151
151
  end
152
+
153
+ def test_16_digit_maestro_uk
154
+ number = '6759000000000000'
155
+ assert_equal 16, number.length
156
+ assert_equal 'switch', CreditCard.type?(number)
157
+ end
158
+
159
+ def test_18_digit_maestro_uk
160
+ number = '675900000000000000'
161
+ assert_equal 18, number.length
162
+ assert_equal 'switch', CreditCard.type?(number)
163
+ end
164
+
165
+ def test_19_digit_maestro_uk
166
+ number = '6759000000000000000'
167
+ assert_equal 19, number.length
168
+ assert_equal 'switch', CreditCard.type?(number)
169
+ end
152
170
  end
@@ -0,0 +1,641 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper'
2
+
3
+ class AuthorizeNetCimTest < Test::Unit::TestCase
4
+ def setup
5
+ @gateway = AuthorizeNetCimGateway.new(
6
+ :login => 'X',
7
+ :password => 'Y'
8
+ )
9
+ @amount = 100
10
+ @credit_card = credit_card
11
+ @address = address
12
+ @customer_profile_id = '3187'
13
+ @customer_payment_profile_id = '7813'
14
+ @customer_address_id = '4321'
15
+ @payment = {
16
+ :credit_card => @credit_card
17
+ }
18
+ @profile = {
19
+ :merchant_customer_id => 'Up to 20 chars', # Optional
20
+ :description => 'Up to 255 Characters', # Optional
21
+ :email => 'Up to 255 Characters', # Optional
22
+ :payment_profiles => { # Optional
23
+ :customer_type => 'individual or business', # Optional
24
+ :bill_to => @address,
25
+ :payment => @payment
26
+ },
27
+ :ship_to_list => {
28
+ :first_name => 'John',
29
+ :last_name => 'Doe',
30
+ :company => 'Widgets, Inc',
31
+ :address1 => '1234 Fake Street',
32
+ :city => 'Anytown',
33
+ :state => 'MD',
34
+ :zip => '12345',
35
+ :country => 'USA',
36
+ :phone_number => '(123)123-1234', # Optional - Up to 25 digits (no letters)
37
+ :fax_number => '(123)123-1234' # Optional - Up to 25 digits (no letters)
38
+ }
39
+ }
40
+ @options = {
41
+ :ref_id => '1234', # Optional
42
+ :profile => @profile
43
+ }
44
+ end
45
+
46
+ def test_expdate_formatting
47
+ assert_equal '2009-09', @gateway.send(:expdate, @credit_card)
48
+
49
+ assert_equal '2013-11', @gateway.send(:expdate, credit_card('4111111111111111',
50
+ :month => 11,
51
+ :year => 2013))
52
+ end
53
+
54
+ def test_should_create_customer_profile_request
55
+ @gateway.expects(:ssl_post).returns(successful_create_customer_profile_response)
56
+
57
+ assert response = @gateway.create_customer_profile(@options)
58
+ assert_instance_of Response, response
59
+ assert_success response
60
+ assert_equal @customer_profile_id, response.authorization
61
+ assert_equal "Successful.", response.message
62
+ end
63
+
64
+ def test_should_create_customer_payment_profile_request
65
+ @gateway.expects(:ssl_post).returns(successful_create_customer_payment_profile_response)
66
+
67
+ assert response = @gateway.create_customer_payment_profile(
68
+ :customer_profile_id => @customer_profile_id,
69
+ :payment_profile => {
70
+ :customer_type => 'individual',
71
+ :bill_to => @address,
72
+ :payment => @payment
73
+ },
74
+ :validation_mode => :test
75
+ )
76
+ assert_instance_of Response, response
77
+ assert_success response
78
+ assert_equal @customer_payment_profile_id, response.params['customer_payment_profile_id']
79
+ assert_equal "This output is only present if the ValidationMode input parameter is passed with a value of testMode or liveMode", response.params['validation_direct_response']
80
+ end
81
+
82
+ def test_should_create_customer_shipping_address_request
83
+ @gateway.expects(:ssl_post).returns(successful_create_customer_shipping_address_response)
84
+
85
+ assert response = @gateway.create_customer_shipping_address(
86
+ :customer_profile_id => @customer_profile_id,
87
+ :address => {
88
+ :first_name => 'John',
89
+ :last_name => 'Doe',
90
+ :company => 'Widgets, Inc',
91
+ :address1 => '1234 Fake Street',
92
+ :city => 'Anytown',
93
+ :state => 'MD',
94
+ :country => 'USA',
95
+ :phone_number => '(123)123-1234',
96
+ :fax_number => '(123)123-1234'
97
+ }
98
+ )
99
+ assert_instance_of Response, response
100
+ assert_success response
101
+ assert_nil response.authorization
102
+ assert_equal 'customerAddressId', response.params['customer_address_id']
103
+ end
104
+
105
+ def test_should_create_customer_profile_transaction_auth_only_and_then_capture_only_requests
106
+ @gateway.expects(:ssl_post).returns(successful_create_customer_profile_transaction_response(:auth_only))
107
+
108
+ assert response = @gateway.create_customer_profile_transaction(
109
+ :transaction => {
110
+ :customer_profile_id => @customer_profile_id,
111
+ :customer_payment_profile_id => @customer_payment_profile_id,
112
+ :type => :auth_only,
113
+ :amount => @amount
114
+ }
115
+ )
116
+ assert_instance_of Response, response
117
+ assert_success response
118
+ assert_nil response.authorization
119
+ assert_equal 'This transaction has been approved.', response.params['direct_response']['message']
120
+ assert_equal 'auth_only', response.params['direct_response']['transaction_type']
121
+ assert_equal 'Gw4NGI', approval_code = response.params['direct_response']['approval_code']
122
+
123
+ @gateway.expects(:ssl_post).returns(successful_create_customer_profile_transaction_response(:capture_only))
124
+
125
+ assert response = @gateway.create_customer_profile_transaction(
126
+ :transaction => {
127
+ :customer_profile_id => @customer_profile_id,
128
+ :customer_payment_profile_id => @customer_payment_profile_id,
129
+ :type => :capture_only,
130
+ :amount => @amount,
131
+ :approval_code => approval_code
132
+ }
133
+ )
134
+ assert_instance_of Response, response
135
+ assert_success response
136
+ assert_nil response.authorization
137
+ assert_equal 'This transaction has been approved.', response.params['direct_response']['message']
138
+ end
139
+
140
+ def test_should_create_customer_profile_transaction_auth_capture_request
141
+ @gateway.expects(:ssl_post).returns(successful_create_customer_profile_transaction_response(:auth_capture))
142
+
143
+ assert response = @gateway.create_customer_profile_transaction(
144
+ :transaction => {
145
+ :customer_profile_id => @customer_profile_id,
146
+ :customer_payment_profile_id => @customer_payment_profile_id,
147
+ :type => :auth_capture,
148
+ :order => {
149
+ :invoice_number => '1234',
150
+ :description => 'Test Order Description',
151
+ :purchase_order_number => '4321'
152
+ },
153
+ :amount => @amount
154
+ }
155
+ )
156
+ assert_instance_of Response, response
157
+ assert_success response
158
+ assert_nil response.authorization
159
+ assert_equal 'This transaction has been approved.', response.params['direct_response']['message']
160
+ end
161
+
162
+ def test_should_delete_customer_profile_request
163
+ @gateway.expects(:ssl_post).returns(successful_delete_customer_profile_response)
164
+
165
+ assert response = @gateway.delete_customer_profile(:customer_profile_id => @customer_profile_id)
166
+ assert_instance_of Response, response
167
+ assert_success response
168
+ assert_equal @customer_profile_id, response.authorization
169
+ end
170
+
171
+ def test_should_delete_customer_payment_profile_request
172
+ @gateway.expects(:ssl_post).returns(successful_delete_customer_payment_profile_response)
173
+
174
+ assert response = @gateway.delete_customer_payment_profile(:customer_profile_id => @customer_profile_id, :customer_payment_profile_id => @customer_payment_profile_id)
175
+ assert_instance_of Response, response
176
+ assert_success response
177
+ assert_nil response.authorization
178
+ end
179
+
180
+ def test_should_delete_customer_shipping_address_request
181
+ @gateway.expects(:ssl_post).returns(successful_delete_customer_shipping_address_response)
182
+
183
+ assert response = @gateway.delete_customer_shipping_address(:customer_profile_id => @customer_profile_id, :customer_address_id => @customer_address_id)
184
+ assert_instance_of Response, response
185
+ assert_success response
186
+ assert_nil response.authorization
187
+ end
188
+
189
+ def test_should_get_customer_profile_request
190
+ @gateway.expects(:ssl_post).returns(successful_get_customer_profile_response)
191
+
192
+ assert response = @gateway.get_customer_profile(:customer_profile_id => @customer_profile_id)
193
+ assert_instance_of Response, response
194
+ assert_success response
195
+ assert_equal @customer_profile_id, response.authorization
196
+ end
197
+
198
+ def test_should_get_customer_profile_request_with_multiple_payment_profiles
199
+ @gateway.expects(:ssl_post).returns(successful_get_customer_profile_response_with_multiple_payment_profiles)
200
+
201
+ assert response = @gateway.get_customer_profile(:customer_profile_id => @customer_profile_id)
202
+ assert_instance_of Response, response
203
+ assert_success response
204
+
205
+ assert_equal @customer_profile_id, response.authorization
206
+ assert_equal 2, response.params['profile']['payment_profiles'].size
207
+ end
208
+
209
+ def test_should_get_customer_payment_profile_request
210
+ @gateway.expects(:ssl_post).returns(successful_get_customer_payment_profile_response)
211
+
212
+ assert response = @gateway.get_customer_payment_profile(
213
+ :customer_profile_id => @customer_profile_id,
214
+ :customer_payment_profile_id => @customer_payment_profile_id
215
+ )
216
+ assert_instance_of Response, response
217
+ assert_success response
218
+ assert_nil response.authorization
219
+ assert_equal @customer_payment_profile_id, response.params['profile']['payment_profiles']['customer_payment_profile_id']
220
+ end
221
+
222
+ def test_should_get_customer_shipping_address_request
223
+ @gateway.expects(:ssl_post).returns(successful_get_customer_shipping_address_response)
224
+
225
+ assert response = @gateway.get_customer_shipping_address(
226
+ :customer_profile_id => @customer_profile_id,
227
+ :customer_address_id => @customer_address_id
228
+ )
229
+ assert_instance_of Response, response
230
+ assert_success response
231
+ assert_nil response.authorization
232
+ end
233
+
234
+ def test_should_update_customer_profile_request
235
+ @gateway.expects(:ssl_post).returns(successful_update_customer_profile_response)
236
+
237
+ assert response = @gateway.update_customer_profile(
238
+ :profile => {
239
+ :customer_profile_id => @customer_profile_id,
240
+ :email => 'new email address'
241
+ }
242
+ )
243
+ assert_instance_of Response, response
244
+ assert_success response
245
+ assert_equal @customer_profile_id, response.authorization
246
+ end
247
+
248
+ def test_should_update_customer_payment_profile_request
249
+ @gateway.expects(:ssl_post).returns(successful_update_customer_payment_profile_response)
250
+
251
+ assert response = @gateway.update_customer_payment_profile(
252
+ :customer_profile_id => @customer_profile_id,
253
+ :payment_profile => {
254
+ :customer_payment_profile_id => @customer_payment_profile_id,
255
+ :customer_type => 'business'
256
+ }
257
+ )
258
+ assert_instance_of Response, response
259
+ assert_success response
260
+ assert_nil response.authorization
261
+ end
262
+
263
+ def test_should_update_customer_shipping_address_request
264
+ @gateway.expects(:ssl_post).returns(successful_update_customer_shipping_address_response)
265
+
266
+ assert response = @gateway.update_customer_shipping_address(
267
+ :customer_profile_id => @customer_profile_id,
268
+ :address => {
269
+ :customer_address_id => @customer_address_id,
270
+ :city => 'New City'
271
+ }
272
+ )
273
+ assert_instance_of Response, response
274
+ assert_success response
275
+ assert_nil response.authorization
276
+ end
277
+
278
+ def test_should_validate_customer_payment_profile_request
279
+ @gateway.expects(:ssl_post).returns(successful_validate_customer_payment_profile_response)
280
+
281
+ assert response = @gateway.validate_customer_payment_profile(
282
+ :customer_profile_id => @customer_profile_id,
283
+ :customer_payment_profile_id => @customer_payment_profile_id,
284
+ :customer_address_id => @customer_address_id,
285
+ :validation_mode => :live
286
+ )
287
+ assert_instance_of Response, response
288
+ assert_success response
289
+ assert_nil response.authorization
290
+ assert_equal 'This transaction has been approved.', response.params['direct_response']['message']
291
+ end
292
+
293
+ private
294
+
295
+ def successful_create_customer_profile_response
296
+ <<-XML
297
+ <?xml version="1.0" encoding="utf-8" ?>
298
+ <createCustomerProfileResponse
299
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
300
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
301
+ xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
302
+ <refId>refid1</refId>
303
+ <messages>
304
+ <resultCode>Ok</resultCode>
305
+ <message>
306
+ <code>I00001</code>
307
+ <text>Successful.</text>
308
+ </message>
309
+ </messages>
310
+ <customerProfileId>#{@customer_profile_id}</customerProfileId>
311
+ </createCustomerProfileResponse>
312
+ XML
313
+ end
314
+
315
+ def successful_create_customer_payment_profile_response
316
+ <<-XML
317
+ <?xml version="1.0" encoding="utf-8" ?>
318
+ <createCustomerPaymentProfileResponse
319
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
320
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
321
+ xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
322
+ <refId>refid1</refId>
323
+ <messages>
324
+ <resultCode>Ok</resultCode>
325
+ <message>
326
+ <code>I00001</code>
327
+ <text>Successful.</text>
328
+ </message>
329
+ </messages>
330
+ <customerPaymentProfileId>#{@customer_payment_profile_id}</customerPaymentProfileId>
331
+ <validationDirectResponse>This output is only present if the ValidationMode input parameter is passed with a value of testMode or liveMode</validationDirectResponse>
332
+ </createCustomerPaymentProfileResponse>
333
+ XML
334
+ end
335
+
336
+ def successful_create_customer_shipping_address_response
337
+ <<-XML
338
+ <?xml version="1.0" encoding="utf-8" ?>
339
+ <createCustomerShippingAddressResponse
340
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
341
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
342
+ xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
343
+ <refId>refid1</refId>
344
+ <messages>
345
+ <resultCode>Ok</resultCode>
346
+ <message>
347
+ <code>I00001</code>
348
+ <text>Successful.</text>
349
+ </message>
350
+ </messages>
351
+ <customerAddressId>customerAddressId</customerAddressId>
352
+ </createCustomerShippingAddressResponse>
353
+ XML
354
+ end
355
+
356
+ def successful_delete_customer_profile_response
357
+ <<-XML
358
+ <?xml version="1.0" encoding="utf-8" ?>
359
+ <deleteCustomerProfileResponse
360
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
361
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
362
+ xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
363
+ <refId>refid1</refId>
364
+ <messages>
365
+ <resultCode>Ok</resultCode>
366
+ <message>
367
+ <code>I00001</code>
368
+ <text>Successful.</text>
369
+ </message>
370
+ </messages>
371
+ <customerProfileId>#{@customer_profile_id}</customerProfileId>
372
+ </deleteCustomerProfileResponse>
373
+ XML
374
+ end
375
+
376
+ def successful_delete_customer_payment_profile_response
377
+ <<-XML
378
+ <?xml version="1.0" encoding="utf-8" ?>
379
+ <deleteCustomerPaymentProfileResponse
380
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
381
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
382
+ xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
383
+ <refId>refid1</refId>
384
+ <messages>
385
+ <resultCode>Ok</resultCode>
386
+ <message>
387
+ <code>I00001</code>
388
+ <text>Successful.</text>
389
+ </message>
390
+ </messages>
391
+ </deleteCustomerPaymentProfileResponse>
392
+ XML
393
+ end
394
+
395
+ def successful_delete_customer_shipping_address_response
396
+ <<-XML
397
+ <?xml version="1.0" encoding="utf-8" ?>
398
+ <deleteCustomerShippingAddressResponse
399
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
400
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
401
+ xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
402
+ <refId>refid1</refId>
403
+ <messages>
404
+ <resultCode>Ok</resultCode>
405
+ <message>
406
+ <code>I00001</code>
407
+ <text>Successful.</text>
408
+ </message>
409
+ </messages>
410
+ </deleteCustomerShippingAddressResponse>
411
+ XML
412
+ end
413
+
414
+ def successful_get_customer_profile_response
415
+ <<-XML
416
+ <?xml version="1.0" encoding="utf-8" ?>
417
+ <getCustomerProfileResponse
418
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
419
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
420
+ xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
421
+ <refId>refid1</refId>
422
+ <messages>
423
+ <resultCode>Ok</resultCode>
424
+ <message>
425
+ <code>I00001</code>
426
+ <text>Successful.</text>
427
+ </message>
428
+ </messages>
429
+ <customerProfileId>#{@customer_profile_id}</customerProfileId>
430
+ <profile>
431
+ <paymentProfiles>
432
+ <customerPaymentProfileId>123456</customerPaymentProfileId>
433
+ <payment>
434
+ <creditCard>
435
+ <cardNumber>#{@credit_card.number}</cardNumber>
436
+ <expirationDate>#{@gateway.send(:expdate, @credit_card)}</expirationDate>
437
+ </creditCard>
438
+ </payment>
439
+ </paymentProfiles>
440
+ </profile>
441
+ </getCustomerProfileResponse>
442
+ XML
443
+ end
444
+
445
+ def successful_get_customer_profile_response_with_multiple_payment_profiles
446
+ <<-XML
447
+ <?xml version="1.0" encoding="utf-8"?>
448
+ <getCustomerProfileResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
449
+ <messages>
450
+ <resultCode>Ok</resultCode>
451
+ <message>
452
+ <code>I00001</code>
453
+ <text>Successful.</text>
454
+ </message>
455
+ </messages>
456
+ <profile>
457
+ <merchantCustomerId>Up to 20 chars</merchantCustomerId>
458
+ <description>Up to 255 Characters</description>
459
+ <email>Up to 255 Characters</email>
460
+ <customerProfileId>#{@customer_profile_id}</customerProfileId>
461
+ <paymentProfiles>
462
+ <customerPaymentProfileId>1000</customerPaymentProfileId>
463
+ <payment>
464
+ <creditCard>
465
+ <cardNumber>#{@credit_card.number}</cardNumber>
466
+ <expirationDate>#{@gateway.send(:expdate, @credit_card)}</expirationDate>
467
+ </creditCard>
468
+ </payment>
469
+ </paymentProfiles>
470
+ <paymentProfiles>
471
+ <customerType>individual</customerType>
472
+ <customerPaymentProfileId>1001</customerPaymentProfileId>
473
+ <payment>
474
+ <creditCard>
475
+ <cardNumber>XXXX1234</cardNumber>
476
+ <expirationDate>XXXX</expirationDate>
477
+ </creditCard>
478
+ </payment>
479
+ </paymentProfiles>
480
+ </profile>
481
+ </getCustomerProfileResponse>
482
+ XML
483
+ end
484
+
485
+ def successful_get_customer_payment_profile_response
486
+ <<-XML
487
+ <?xml version="1.0" encoding="utf-8" ?>
488
+ <getCustomerPaymentProfileResponse
489
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
490
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
491
+ xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
492
+ <refId>refid1</refId>
493
+ <messages>
494
+ <resultCode>Ok</resultCode>
495
+ <message>
496
+ <code>I00001</code>
497
+ <text>Successful.</text>
498
+ </message>
499
+ </messages>
500
+ <profile>
501
+ <paymentProfiles>
502
+ <customerPaymentProfileId>#{@customer_payment_profile_id}</customerPaymentProfileId>
503
+ <payment>
504
+ <creditCard>
505
+ <cardNumber>#{@credit_card.number}</cardNumber>
506
+ <expirationDate>#{@gateway.send(:expdate, @credit_card)}</expirationDate>
507
+ </creditCard>
508
+ </payment>
509
+ </paymentProfiles>
510
+ </profile>
511
+ </getCustomerPaymentProfileResponse>
512
+ XML
513
+ end
514
+
515
+ def successful_get_customer_shipping_address_response
516
+ <<-XML
517
+ <?xml version="1.0" encoding="utf-8" ?>
518
+ <getCustomerShippingAddressResponse
519
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
520
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
521
+ xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
522
+ <refId>refid1</refId>
523
+ <messages>
524
+ <resultCode>Ok</resultCode>
525
+ <message>
526
+ <code>I00001</code>
527
+ <text>Successful.</text>
528
+ </message>
529
+ </messages>
530
+ <address>
531
+ <customerAddressId>#{@customer_address_id}</customerAddressId>
532
+ </address>
533
+ </getCustomerShippingAddressResponse>
534
+ XML
535
+ end
536
+
537
+ def successful_update_customer_profile_response
538
+ <<-XML
539
+ <?xml version="1.0" encoding="utf-8" ?>
540
+ <updateCustomerProfileResponse
541
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
542
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
543
+ xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
544
+ <refId>refid1</refId>
545
+ <messages>
546
+ <resultCode>Ok</resultCode>
547
+ <message>
548
+ <code>I00001</code>
549
+ <text>Successful.</text>
550
+ </message>
551
+ </messages>
552
+ <customerProfileId>#{@customer_profile_id}</customerProfileId>
553
+ </updateCustomerProfileResponse>
554
+ XML
555
+ end
556
+
557
+ def successful_update_customer_payment_profile_response
558
+ <<-XML
559
+ <?xml version="1.0" encoding="utf-8" ?>
560
+ <updateCustomerPaymentProfileResponse
561
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
562
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
563
+ xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
564
+ <refId>refid1</refId>
565
+ <messages>
566
+ <resultCode>Ok</resultCode>
567
+ <message>
568
+ <code>I00001</code>
569
+ <text>Successful.</text>
570
+ </message>
571
+ </messages>
572
+ </updateCustomerPaymentProfileResponse>
573
+ XML
574
+ end
575
+
576
+ def successful_update_customer_shipping_address_response
577
+ <<-XML
578
+ <?xml version="1.0" encoding="utf-8" ?>
579
+ <updateCustomerShippingAddressResponse
580
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
581
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
582
+ xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
583
+ <refId>refid1</refId>
584
+ <messages>
585
+ <resultCode>Ok</resultCode>
586
+ <message>
587
+ <code>I00001</code>
588
+ <text>Successful.</text>
589
+ </message>
590
+ </messages>
591
+ </updateCustomerShippingAddressResponse>
592
+ XML
593
+ end
594
+
595
+ SUCCESSFUL_DIRECT_RESPONSE = {
596
+ :auth_only => '1,1,1,This transaction has been approved.,Gw4NGI,Y,508223659,,,100.00,CC,auth_only,Up to 20 chars,,,,,,,,,,,Up to 255 Characters,,,,,,,,,,,,,,6E5334C13C78EA078173565FD67318E4,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,',
597
+ :capture_only => '1,1,1,This transaction has been approved.,,Y,508223660,,,100.00,CC,capture_only,Up to 20 chars,,,,,,,,,,,Up to 255 Characters,,,,,,,,,,,,,,6E5334C13C78EA078173565FD67318E4,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,',
598
+ :auth_capture => '1,1,1,This transaction has been approved.,d1GENk,Y,508223661,32968c18334f16525227,Store purchase,1.00,CC,auth_capture,,Longbob,Longsen,,,,,,,,,,,,,,,,,,,,,,,269862C030129C1173727CC10B1935ED,P,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,'
599
+ }
600
+
601
+ def successful_create_customer_profile_transaction_response(transaction_type)
602
+ <<-XML
603
+ <?xml version="1.0" encoding="utf-8" ?>
604
+ <createCustomerProfileTransactionResponse
605
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
606
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
607
+ xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
608
+ <refId>refid1</refId>
609
+ <messages>
610
+ <resultCode>Ok</resultCode>
611
+ <message>
612
+ <code>I00001</code>
613
+ <text>Successful.</text>
614
+ </message>
615
+ </messages>
616
+ <directResponse>#{SUCCESSFUL_DIRECT_RESPONSE[transaction_type]}</directResponse>
617
+ </createCustomerProfileTransactionResponse>
618
+ XML
619
+ end
620
+
621
+ def successful_validate_customer_payment_profile_response
622
+ <<-XML
623
+ <?xml version="1.0" encoding="utf-8" ?>
624
+ <validateCustomerPaymentProfileResponse
625
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
626
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
627
+ xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
628
+ <refId>refid1</refId>
629
+ <messages>
630
+ <resultCode>Ok</resultCode>
631
+ <message>
632
+ <code>I00001</code>
633
+ <text>Successful.</text>
634
+ </message>
635
+ </messages>
636
+ <directResponse>1,1,1,This transaction has been approved.,DEsVh8,Y,508276300,none,Test transaction for ValidateCustomerPaymentProfile.,0.01,CC,auth_only,Up to 20 chars,,,,,,,,,,,Up to 255 Characters,John,Doe,Widgets, Inc,1234 Fake Street,Anytown,MD,12345,USA,0.0000,0.0000,0.0000,TRUE,none,7EB3A44624C0C10FAAE47E276B48BF17,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,</directResponse>
637
+ </validateCustomerPaymentProfileResponse>
638
+ XML
639
+ end
640
+
641
+ end