tomriley-active_merchant 1.4.2.3
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.
- data/CHANGELOG +442 -0
- data/CONTRIBUTERS +102 -0
- data/MIT-LICENSE +20 -0
- data/README +134 -0
- data/Rakefile +153 -0
- data/active_merchant.gemspec +15 -0
- data/gem-public_cert.pem +20 -0
- data/init.rb +4 -0
- data/lib/active_merchant/billing/avs_result.rb +98 -0
- data/lib/active_merchant/billing/base.rb +57 -0
- data/lib/active_merchant/billing/check.rb +68 -0
- data/lib/active_merchant/billing/credit_card.rb +159 -0
- data/lib/active_merchant/billing/credit_card_formatting.rb +21 -0
- data/lib/active_merchant/billing/credit_card_methods.rb +125 -0
- data/lib/active_merchant/billing/cvv_result.rb +38 -0
- data/lib/active_merchant/billing/expiry_date.rb +28 -0
- data/lib/active_merchant/billing/gateway.rb +158 -0
- data/lib/active_merchant/billing/gateways/authorize_net.rb +646 -0
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +702 -0
- data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +233 -0
- data/lib/active_merchant/billing/gateways/beanstream.rb +102 -0
- data/lib/active_merchant/billing/gateways/beanstream_interac.rb +54 -0
- data/lib/active_merchant/billing/gateways/bogus.rb +98 -0
- data/lib/active_merchant/billing/gateways/braintree.rb +17 -0
- data/lib/active_merchant/billing/gateways/card_stream.rb +230 -0
- data/lib/active_merchant/billing/gateways/cyber_source.rb +406 -0
- data/lib/active_merchant/billing/gateways/data_cash.rb +595 -0
- data/lib/active_merchant/billing/gateways/efsnet.rb +229 -0
- data/lib/active_merchant/billing/gateways/eway.rb +272 -0
- data/lib/active_merchant/billing/gateways/exact.rb +222 -0
- data/lib/active_merchant/billing/gateways/instapay.rb +164 -0
- data/lib/active_merchant/billing/gateways/linkpoint.rb +396 -0
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +154 -0
- data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
- data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +214 -0
- data/lib/active_merchant/billing/gateways/moneris.rb +205 -0
- data/lib/active_merchant/billing/gateways/net_registry.rb +189 -0
- data/lib/active_merchant/billing/gateways/netbilling.rb +168 -0
- data/lib/active_merchant/billing/gateways/pay_junction.rb +392 -0
- data/lib/active_merchant/billing/gateways/pay_secure.rb +120 -0
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +207 -0
- data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +39 -0
- data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +13 -0
- data/lib/active_merchant/billing/gateways/payflow.rb +236 -0
- data/lib/active_merchant/billing/gateways/payflow_express.rb +138 -0
- data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +15 -0
- data/lib/active_merchant/billing/gateways/payflow_uk.rb +21 -0
- data/lib/active_merchant/billing/gateways/payment_express.rb +230 -0
- data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +325 -0
- data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +38 -0
- data/lib/active_merchant/billing/gateways/paypal.rb +108 -0
- data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
- data/lib/active_merchant/billing/gateways/paypal_express.rb +130 -0
- data/lib/active_merchant/billing/gateways/paypal_express_common.rb +20 -0
- data/lib/active_merchant/billing/gateways/plugnpay.rb +292 -0
- data/lib/active_merchant/billing/gateways/protx.rb +349 -0
- data/lib/active_merchant/billing/gateways/psigate.rb +214 -0
- data/lib/active_merchant/billing/gateways/psl_card.rb +306 -0
- data/lib/active_merchant/billing/gateways/quickpay.rb +213 -0
- data/lib/active_merchant/billing/gateways/realex.rb +200 -0
- data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
- data/lib/active_merchant/billing/gateways/sage/sage_core.rb +110 -0
- data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
- data/lib/active_merchant/billing/gateways/sage.rb +146 -0
- data/lib/active_merchant/billing/gateways/secure_pay.rb +31 -0
- data/lib/active_merchant/billing/gateways/secure_pay_au.rb +157 -0
- data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
- data/lib/active_merchant/billing/gateways/skip_jack.rb +442 -0
- data/lib/active_merchant/billing/gateways/smart_ps.rb +254 -0
- data/lib/active_merchant/billing/gateways/trans_first.rb +127 -0
- data/lib/active_merchant/billing/gateways/transax.rb +26 -0
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +418 -0
- data/lib/active_merchant/billing/gateways/usa_epay.rb +194 -0
- data/lib/active_merchant/billing/gateways/verifi.rb +228 -0
- data/lib/active_merchant/billing/gateways/viaklix.rb +165 -0
- data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
- data/lib/active_merchant/billing/gateways.rb +3 -0
- data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
- data/lib/active_merchant/billing/integrations/bogus/helper.rb +17 -0
- data/lib/active_merchant/billing/integrations/bogus/notification.rb +11 -0
- data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/bogus.rb +22 -0
- data/lib/active_merchant/billing/integrations/chronopay/helper.rb +81 -0
- data/lib/active_merchant/billing/integrations/chronopay/notification.rb +156 -0
- data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/chronopay.rb +22 -0
- data/lib/active_merchant/billing/integrations/gestpay/common.rb +42 -0
- data/lib/active_merchant/billing/integrations/gestpay/helper.rb +70 -0
- data/lib/active_merchant/billing/integrations/gestpay/notification.rb +83 -0
- data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/gestpay.rb +26 -0
- data/lib/active_merchant/billing/integrations/helper.rb +93 -0
- data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
- data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +59 -0
- data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
- data/lib/active_merchant/billing/integrations/hi_trust.rb +26 -0
- data/lib/active_merchant/billing/integrations/nochex/helper.rb +68 -0
- data/lib/active_merchant/billing/integrations/nochex/notification.rb +94 -0
- data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/nochex.rb +87 -0
- data/lib/active_merchant/billing/integrations/notification.rb +62 -0
- data/lib/active_merchant/billing/integrations/paypal/helper.rb +118 -0
- data/lib/active_merchant/billing/integrations/paypal/notification.rb +154 -0
- data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/paypal.rb +40 -0
- data/lib/active_merchant/billing/integrations/quickpay/helper.rb +72 -0
- data/lib/active_merchant/billing/integrations/quickpay/notification.rb +74 -0
- data/lib/active_merchant/billing/integrations/quickpay.rb +18 -0
- data/lib/active_merchant/billing/integrations/return.rb +35 -0
- data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +59 -0
- data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +114 -0
- data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
- data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -0
- data/lib/active_merchant/billing/integrations.rb +22 -0
- data/lib/active_merchant/billing/response.rb +32 -0
- data/lib/active_merchant/lib/connection.rb +170 -0
- data/lib/active_merchant/lib/country.rb +319 -0
- data/lib/active_merchant/lib/error.rb +4 -0
- data/lib/active_merchant/lib/post_data.rb +22 -0
- data/lib/active_merchant/lib/posts_data.rb +47 -0
- data/lib/active_merchant/lib/requires_parameters.rb +16 -0
- data/lib/active_merchant/lib/utils.rb +18 -0
- data/lib/active_merchant/lib/validateable.rb +76 -0
- data/lib/active_merchant.rb +60 -0
- data/lib/certs/cacert.pem +7815 -0
- data/lib/support/gateway_support.rb +58 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/test/fixtures.yml +330 -0
- data/test/remote/gateways/remote_authorize_net_cim_test.rb +459 -0
- data/test/remote/gateways/remote_authorize_net_test.rb +145 -0
- data/test/remote/gateways/remote_beanstream_interac_test.rb +53 -0
- data/test/remote/gateways/remote_beanstream_test.rb +150 -0
- data/test/remote/gateways/remote_braintree_test.rb +154 -0
- data/test/remote/gateways/remote_card_stream_test.rb +148 -0
- data/test/remote/gateways/remote_cyber_source_test.rb +144 -0
- data/test/remote/gateways/remote_data_cash_test.rb +357 -0
- data/test/remote/gateways/remote_efsnet_test.rb +81 -0
- data/test/remote/gateways/remote_eway_test.rb +74 -0
- data/test/remote/gateways/remote_exact_test.rb +60 -0
- data/test/remote/gateways/remote_instapay_test.rb +61 -0
- data/test/remote/gateways/remote_linkpoint_test.rb +112 -0
- data/test/remote/gateways/remote_merchant_e_solutions_test.rb +173 -0
- data/test/remote/gateways/remote_modern_payments_cim_test.rb +58 -0
- data/test/remote/gateways/remote_modern_payments_test.rb +43 -0
- data/test/remote/gateways/remote_moneris_test.rb +82 -0
- data/test/remote/gateways/remote_net_registry_test.rb +85 -0
- data/test/remote/gateways/remote_netbilling_test.rb +70 -0
- data/test/remote/gateways/remote_pay_junction_test.rb +143 -0
- data/test/remote/gateways/remote_pay_secure_test.rb +39 -0
- data/test/remote/gateways/remote_payflow_express_test.rb +50 -0
- data/test/remote/gateways/remote_payflow_test.rb +237 -0
- data/test/remote/gateways/remote_payflow_uk_test.rb +173 -0
- data/test/remote/gateways/remote_payment_express_test.rb +136 -0
- data/test/remote/gateways/remote_paypal_express_test.rb +49 -0
- data/test/remote/gateways/remote_paypal_test.rb +167 -0
- data/test/remote/gateways/remote_plugnpay_test.rb +72 -0
- data/test/remote/gateways/remote_protx_test.rb +219 -0
- data/test/remote/gateways/remote_psigate_test.rb +50 -0
- data/test/remote/gateways/remote_psl_card_test.rb +125 -0
- data/test/remote/gateways/remote_quickpay_test.rb +190 -0
- data/test/remote/gateways/remote_realex_test.rb +224 -0
- data/test/remote/gateways/remote_sage_bankcard_test.rb +109 -0
- data/test/remote/gateways/remote_sage_test.rb +87 -0
- data/test/remote/gateways/remote_sage_virtual_check_test.rb +62 -0
- data/test/remote/gateways/remote_secure_pay_au_test.rb +40 -0
- data/test/remote/gateways/remote_secure_pay_tech_test.rb +37 -0
- data/test/remote/gateways/remote_secure_pay_test.rb +28 -0
- data/test/remote/gateways/remote_skipjack_test.rb +105 -0
- data/test/remote/gateways/remote_trans_first_test.rb +34 -0
- data/test/remote/gateways/remote_transax_test.rb +112 -0
- data/test/remote/gateways/remote_trust_commerce_test.rb +152 -0
- data/test/remote/gateways/remote_usa_epay_test.rb +46 -0
- data/test/remote/gateways/remote_verifi_test.rb +107 -0
- data/test/remote/gateways/remote_viaklix_test.rb +43 -0
- data/test/remote/gateways/remote_wirecard_test.rb +111 -0
- data/test/remote/integrations/remote_gestpay_integration_test.rb +37 -0
- data/test/remote/integrations/remote_paypal_integration_test.rb +26 -0
- data/test/test_helper.rb +182 -0
- data/test/unit/avs_result_test.rb +59 -0
- data/test/unit/base_test.rb +55 -0
- data/test/unit/check_test.rb +88 -0
- data/test/unit/connection_test.rb +129 -0
- data/test/unit/country_code_test.rb +33 -0
- data/test/unit/country_test.rb +64 -0
- data/test/unit/credit_card_formatting_test.rb +19 -0
- data/test/unit/credit_card_methods_test.rb +170 -0
- data/test/unit/credit_card_test.rb +318 -0
- data/test/unit/cvv_result_test.rb +33 -0
- data/test/unit/expiry_date_test.rb +21 -0
- data/test/unit/gateways/authorize_net_cim_test.rb +638 -0
- data/test/unit/gateways/authorize_net_test.rb +290 -0
- data/test/unit/gateways/beanstream_interac_test.rb +51 -0
- data/test/unit/gateways/beanstream_test.rb +108 -0
- data/test/unit/gateways/bogus_test.rb +46 -0
- data/test/unit/gateways/braintree_test.rb +126 -0
- data/test/unit/gateways/card_stream_test.rb +90 -0
- data/test/unit/gateways/cyber_source_test.rb +188 -0
- data/test/unit/gateways/data_cash_test.rb +133 -0
- data/test/unit/gateways/efsnet_test.rb +123 -0
- data/test/unit/gateways/eway_test.rb +118 -0
- data/test/unit/gateways/exact_test.rb +156 -0
- data/test/unit/gateways/gateway_test.rb +48 -0
- data/test/unit/gateways/instapay_test.rb +102 -0
- data/test/unit/gateways/linkpoint_test.rb +167 -0
- data/test/unit/gateways/merchant_e_solutions_test.rb +169 -0
- data/test/unit/gateways/modern_payments_cim_test.rb +171 -0
- data/test/unit/gateways/moneris_test.rb +158 -0
- data/test/unit/gateways/net_registry_test.rb +416 -0
- data/test/unit/gateways/netbilling_test.rb +54 -0
- data/test/unit/gateways/pay_junction_test.rb +123 -0
- data/test/unit/gateways/pay_secure_test.rb +71 -0
- data/test/unit/gateways/payflow_express_test.rb +173 -0
- data/test/unit/gateways/payflow_express_uk_test.rb +86 -0
- data/test/unit/gateways/payflow_test.rb +305 -0
- data/test/unit/gateways/payflow_uk_test.rb +30 -0
- data/test/unit/gateways/payment_express_test.rb +195 -0
- data/test/unit/gateways/paypal_express_test.rb +382 -0
- data/test/unit/gateways/paypal_test.rb +520 -0
- data/test/unit/gateways/plugnpay_test.rb +86 -0
- data/test/unit/gateways/protx_test.rb +139 -0
- data/test/unit/gateways/psigate_test.rb +169 -0
- data/test/unit/gateways/psl_card_test.rb +64 -0
- data/test/unit/gateways/quickpay_test.rb +112 -0
- data/test/unit/gateways/realex_test.rb +151 -0
- data/test/unit/gateways/sage_bankcard_test.rb +162 -0
- data/test/unit/gateways/sage_virtual_check_test.rb +71 -0
- data/test/unit/gateways/secure_pay_au_test.rb +207 -0
- data/test/unit/gateways/secure_pay_tech_test.rb +44 -0
- data/test/unit/gateways/secure_pay_test.rb +87 -0
- data/test/unit/gateways/skip_jack_test.rb +133 -0
- data/test/unit/gateways/trans_first_test.rb +112 -0
- data/test/unit/gateways/trust_commerce_test.rb +90 -0
- data/test/unit/gateways/usa_epay_test.rb +128 -0
- data/test/unit/gateways/verifi_test.rb +96 -0
- data/test/unit/gateways/viaklix_test.rb +78 -0
- data/test/unit/gateways/wirecard_test.rb +250 -0
- data/test/unit/generators/test_gateway_generator.rb +46 -0
- data/test/unit/generators/test_generator_helper.rb +20 -0
- data/test/unit/generators/test_integration_generator.rb +53 -0
- data/test/unit/integrations/action_view_helper_test.rb +50 -0
- data/test/unit/integrations/bogus_module_test.rb +20 -0
- data/test/unit/integrations/chronopay_module_test.rb +13 -0
- data/test/unit/integrations/gestpay_module_test.rb +14 -0
- data/test/unit/integrations/helpers/bogus_helper_test.rb +28 -0
- data/test/unit/integrations/helpers/chronopay_helper_test.rb +67 -0
- data/test/unit/integrations/helpers/gestpay_helper_test.rb +100 -0
- data/test/unit/integrations/helpers/hi_trust_helper_test.rb +16 -0
- data/test/unit/integrations/helpers/nochex_helper_test.rb +53 -0
- data/test/unit/integrations/helpers/paypal_helper_test.rb +162 -0
- data/test/unit/integrations/helpers/quickpay_helper_test.rb +40 -0
- data/test/unit/integrations/helpers/two_checkout_helper_test.rb +92 -0
- data/test/unit/integrations/hi_trust_module_test.rb +13 -0
- data/test/unit/integrations/nochex_module_test.rb +13 -0
- data/test/unit/integrations/notifications/chronopay_notification_test.rb +66 -0
- data/test/unit/integrations/notifications/gestpay_notification_test.rb +60 -0
- data/test/unit/integrations/notifications/hi_trust_notification_test.rb +59 -0
- data/test/unit/integrations/notifications/nochex_notification_test.rb +51 -0
- data/test/unit/integrations/notifications/notification_test.rb +54 -0
- data/test/unit/integrations/notifications/paypal_notification_test.rb +85 -0
- data/test/unit/integrations/notifications/quickpay_notification_test.rb +69 -0
- data/test/unit/integrations/notifications/two_checkout_notification_test.rb +55 -0
- data/test/unit/integrations/paypal_module_test.rb +28 -0
- data/test/unit/integrations/quickpay_module_test.rb +9 -0
- data/test/unit/integrations/returns/chronopay_return_test.rb +11 -0
- data/test/unit/integrations/returns/gestpay_return_test.rb +10 -0
- data/test/unit/integrations/returns/hi_trust_return_test.rb +24 -0
- data/test/unit/integrations/returns/nochex_return_test.rb +10 -0
- data/test/unit/integrations/returns/paypal_return_test.rb +10 -0
- data/test/unit/integrations/returns/return_test.rb +11 -0
- data/test/unit/integrations/returns/two_checkout_return_test.rb +24 -0
- data/test/unit/integrations/two_checkout_module_test.rb +13 -0
- data/test/unit/post_data_test.rb +55 -0
- data/test/unit/posts_data_test.rb +48 -0
- data/test/unit/response_test.rb +28 -0
- data/test/unit/utils_test.rb +7 -0
- data/test/unit/validateable_test.rb +60 -0
- metadata +364 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class ExactTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@gateway = ExactGateway.new( :login => "A00427-01",
|
|
6
|
+
:password => "testus" )
|
|
7
|
+
|
|
8
|
+
@credit_card = credit_card
|
|
9
|
+
@amount = 100
|
|
10
|
+
@options = {
|
|
11
|
+
:order_id => '1',
|
|
12
|
+
:billing_address => address,
|
|
13
|
+
:description => 'Store Purchase'
|
|
14
|
+
}
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_successful_purchase
|
|
18
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
19
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
20
|
+
assert_success response
|
|
21
|
+
assert_equal 'ET1700;106625152', response.authorization
|
|
22
|
+
assert response.test?
|
|
23
|
+
assert_equal 'Transaction Normal - VER UNAVAILABLE', response.message
|
|
24
|
+
|
|
25
|
+
ExactGateway::SENSITIVE_FIELDS.each{ |f| assert !response.params.has_key?(f.to_s) }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_failed_purchase
|
|
29
|
+
@gateway.expects(:ssl_post).returns(failed_purchase_response)
|
|
30
|
+
|
|
31
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
32
|
+
assert_instance_of Response, response
|
|
33
|
+
assert_failure response
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def test_expdate
|
|
38
|
+
assert_equal( "%02d%s" % [ @credit_card.month,
|
|
39
|
+
@credit_card.year.to_s[-2..-1] ],
|
|
40
|
+
@gateway.send(:expdate, @credit_card) )
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_soap_fault
|
|
44
|
+
@gateway.expects(:ssl_post).returns(soap_fault_response)
|
|
45
|
+
assert response = @gateway.purchase(100, @credit_card, {})
|
|
46
|
+
assert_failure response
|
|
47
|
+
assert response.test?
|
|
48
|
+
assert_equal 'Unable to handle request without a valid action parameter. Please supply a valid soap action.', response.message
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_supported_countries
|
|
52
|
+
assert_equal ['CA', 'US'], ExactGateway.supported_countries
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_supported_card_types
|
|
56
|
+
assert_equal [:visa, :master, :american_express, :jcb, :discover], ExactGateway.supported_cardtypes
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_avs_result
|
|
60
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
61
|
+
|
|
62
|
+
response = @gateway.purchase(@amount, @credit_card)
|
|
63
|
+
assert_equal 'U', response.avs_result['code']
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def test_cvv_result
|
|
67
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
68
|
+
|
|
69
|
+
response = @gateway.purchase(@amount, @credit_card)
|
|
70
|
+
assert_equal 'M', response.cvv_result['code']
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
private
|
|
75
|
+
def successful_purchase_response
|
|
76
|
+
<<-RESPONSE
|
|
77
|
+
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/" xmlns:types="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/encodedTypes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><q1:SendAndCommitResponse xmlns:q1="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/Response"><SendAndCommitResult href="#id1" /></q1:SendAndCommitResponse><types:TransactionResult id="id1" xsi:type="types:TransactionResult"><ExactID xsi:type="xsd:string">A00427-01</ExactID><Password xsi:type="xsd:string">#######</Password><Transaction_Type xsi:type="xsd:string">00</Transaction_Type><DollarAmount xsi:type="xsd:string">1</DollarAmount><SurchargeAmount xsi:type="xsd:string">0</SurchargeAmount><Card_Number xsi:type="xsd:string">4242424242424242</Card_Number><Transaction_Tag xsi:type="xsd:string">106625152</Transaction_Tag><Authorization_Num xsi:type="xsd:string">ET1700</Authorization_Num><Expiry_Date xsi:type="xsd:string">0909</Expiry_Date><CardHoldersName xsi:type="xsd:string">Longbob Longsen</CardHoldersName><VerificationStr2 xsi:type="xsd:string">123</VerificationStr2><CVD_Presence_Ind xsi:type="xsd:string">1</CVD_Presence_Ind><Secure_AuthRequired xsi:type="xsd:string">0</Secure_AuthRequired><Secure_AuthResult xsi:type="xsd:string">0</Secure_AuthResult><Ecommerce_Flag xsi:type="xsd:string">0</Ecommerce_Flag><CAVV_Algorithm xsi:type="xsd:string">0</CAVV_Algorithm><Reference_No xsi:type="xsd:string">1</Reference_No><Reference_3 xsi:type="xsd:string">Store Purchase</Reference_3><Language xsi:type="xsd:string">0</Language><LogonMessage xsi:type="xsd:string">Processed by:
|
|
78
|
+
E-xact Transaction Gateway :- Version 8.4.0 B19b
|
|
79
|
+
Copyright 2006
|
|
80
|
+
{34:2652}</LogonMessage><Error_Number xsi:type="xsd:string">0</Error_Number><Error_Description xsi:type="xsd:string" /><Transaction_Error xsi:type="xsd:boolean">false</Transaction_Error><Transaction_Approved xsi:type="xsd:boolean">true</Transaction_Approved><EXact_Resp_Code xsi:type="xsd:string">00</EXact_Resp_Code><EXact_Message xsi:type="xsd:string">Transaction Normal</EXact_Message><Bank_Resp_Code xsi:type="xsd:string">00</Bank_Resp_Code><Bank_Message xsi:type="xsd:string">VER UNAVAILABLE </Bank_Message><SequenceNo xsi:type="xsd:string">377</SequenceNo><AVS xsi:type="xsd:string">U</AVS><CVV2 xsi:type="xsd:string">M</CVV2><Retrieval_Ref_No xsi:type="xsd:string">200801181700</Retrieval_Ref_No><MerchantName xsi:type="xsd:string">E-xact ConnectionShop</MerchantName><MerchantAddress xsi:type="xsd:string">Suite 400 - 1152 Mainland St.</MerchantAddress><MerchantCity xsi:type="xsd:string">Vancouver</MerchantCity><MerchantProvince xsi:type="xsd:string">BC</MerchantProvince><MerchantCountry xsi:type="xsd:string">Canada</MerchantCountry><MerchantPostal xsi:type="xsd:string">V6B 4X2</MerchantPostal><MerchantURL xsi:type="xsd:string">www.e-xact.com</MerchantURL><CTR xsi:type="xsd:string">========== TRANSACTION RECORD =========
|
|
81
|
+
|
|
82
|
+
E-xact ConnectionShop
|
|
83
|
+
Suite 400 - 1152 Mainland St.
|
|
84
|
+
Vancouver, BC V6B 4X2
|
|
85
|
+
www.e-xact.com
|
|
86
|
+
|
|
87
|
+
TYPE: Purchase
|
|
88
|
+
|
|
89
|
+
ACCT: Visa $1.00 USD
|
|
90
|
+
|
|
91
|
+
CARD NUMBER : ############4242
|
|
92
|
+
TRANS. REF. : 1
|
|
93
|
+
CARD HOLDER : Longbob Longsen
|
|
94
|
+
EXPIRY DATE : xx/xx
|
|
95
|
+
DATE/TIME : 18 Jan 08 14:17:00
|
|
96
|
+
REFERENCE # : 5999 377 M
|
|
97
|
+
AUTHOR.# : ET1700
|
|
98
|
+
|
|
99
|
+
Approved - Thank You 00
|
|
100
|
+
|
|
101
|
+
SIGNATURE
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
_______________________________________
|
|
106
|
+
|
|
107
|
+
</CTR></types:TransactionResult></soap:Body></soap:Envelope>
|
|
108
|
+
RESPONSE
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def failed_purchase_response
|
|
112
|
+
<<-RESPONSE
|
|
113
|
+
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/" xmlns:types="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/encodedTypes" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><q1:SendAndCommitResponse xmlns:q1="http://secure2.e-xact.com/vplug-in/transaction/rpc-enc/Response"><SendAndCommitResult href="#id1" /></q1:SendAndCommitResponse><types:TransactionResult id="id1" xsi:type="types:TransactionResult"><ExactID xsi:type="xsd:string">A00427-01</ExactID><Password xsi:type="xsd:string">#######</Password><Transaction_Type xsi:type="xsd:string">00</Transaction_Type><DollarAmount xsi:type="xsd:string">5013</DollarAmount><SurchargeAmount xsi:type="xsd:string">0</SurchargeAmount><Card_Number xsi:type="xsd:string">4111111111111111</Card_Number><Transaction_Tag xsi:type="xsd:string">106624668</Transaction_Tag><Expiry_Date xsi:type="xsd:string">0909</Expiry_Date><CardHoldersName xsi:type="xsd:string">Longbob Longsen</CardHoldersName><VerificationStr2 xsi:type="xsd:string">123</VerificationStr2><CVD_Presence_Ind xsi:type="xsd:string">1</CVD_Presence_Ind><Secure_AuthRequired xsi:type="xsd:string">0</Secure_AuthRequired><Secure_AuthResult xsi:type="xsd:string">0</Secure_AuthResult><Ecommerce_Flag xsi:type="xsd:string">0</Ecommerce_Flag><CAVV_Algorithm xsi:type="xsd:string">0</CAVV_Algorithm><Reference_No xsi:type="xsd:string">1</Reference_No><Reference_3 xsi:type="xsd:string">Store Purchase</Reference_3><Language xsi:type="xsd:string">0</Language><LogonMessage xsi:type="xsd:string">Processed by:
|
|
114
|
+
E-xact Transaction Gateway :- Version 8.4.0 B19b
|
|
115
|
+
Copyright 2006
|
|
116
|
+
{34:2652}</LogonMessage><Error_Number xsi:type="xsd:string">0</Error_Number><Error_Description xsi:type="xsd:string" /><Transaction_Error xsi:type="xsd:boolean">false</Transaction_Error><Transaction_Approved xsi:type="xsd:boolean">false</Transaction_Approved><EXact_Resp_Code xsi:type="xsd:string">00</EXact_Resp_Code><EXact_Message xsi:type="xsd:string">Transaction Normal</EXact_Message><Bank_Resp_Code xsi:type="xsd:string">13</Bank_Resp_Code><Bank_Message xsi:type="xsd:string">AMOUNT ERR</Bank_Message><SequenceNo xsi:type="xsd:string">376</SequenceNo><AVS xsi:type="xsd:string">U</AVS><CVV2 xsi:type="xsd:string">M</CVV2><MerchantName xsi:type="xsd:string">E-xact ConnectionShop</MerchantName><MerchantAddress xsi:type="xsd:string">Suite 400 - 1152 Mainland St.</MerchantAddress><MerchantCity xsi:type="xsd:string">Vancouver</MerchantCity><MerchantProvince xsi:type="xsd:string">BC</MerchantProvince><MerchantCountry xsi:type="xsd:string">Canada</MerchantCountry><MerchantPostal xsi:type="xsd:string">V6B 4X2</MerchantPostal><MerchantURL xsi:type="xsd:string">www.e-xact.com</MerchantURL><CTR xsi:type="xsd:string">========== TRANSACTION RECORD =========
|
|
117
|
+
|
|
118
|
+
E-xact ConnectionShop
|
|
119
|
+
Suite 400 - 1152 Mainland St.
|
|
120
|
+
Vancouver, BC V6B 4X2
|
|
121
|
+
www.e-xact.com
|
|
122
|
+
|
|
123
|
+
TYPE: Purchase
|
|
124
|
+
|
|
125
|
+
ACCT: Visa $5,013.00 USD
|
|
126
|
+
|
|
127
|
+
CARD NUMBER : ############1111
|
|
128
|
+
TRANS. REF. : 1
|
|
129
|
+
CARD HOLDER : Longbob Longsen
|
|
130
|
+
EXPIRY DATE : xx/xx
|
|
131
|
+
DATE/TIME : 18 Jan 08 14:11:09
|
|
132
|
+
REFERENCE # : 5999 376 M
|
|
133
|
+
AUTHOR.# :
|
|
134
|
+
|
|
135
|
+
Transaction not Approved 13
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
</CTR></types:TransactionResult></soap:Body></soap:Envelope>
|
|
139
|
+
RESPONSE
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def soap_fault_response
|
|
143
|
+
<<-RESPONSE
|
|
144
|
+
<?xml version='1.0' encoding='UTF-8'?>
|
|
145
|
+
<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
|
|
146
|
+
<soap:Body>
|
|
147
|
+
<soap:Fault>
|
|
148
|
+
<faultcode>soap:Client</faultcode>
|
|
149
|
+
<faultstring>Unable to handle request without a valid action parameter. Please supply a valid soap action.</faultstring>
|
|
150
|
+
<detail/>
|
|
151
|
+
</soap:Fault>
|
|
152
|
+
</soap:Body>
|
|
153
|
+
</soap:Envelope>
|
|
154
|
+
RESPONSE
|
|
155
|
+
end
|
|
156
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class GatewayTest < Test::Unit::TestCase
|
|
4
|
+
def test_should_detect_if_a_card_is_supported
|
|
5
|
+
Gateway.supported_cardtypes = [:visa, :bogus]
|
|
6
|
+
assert [:visa, :bogus].all? { |supported_cardtype| Gateway.supports?(supported_cardtype) }
|
|
7
|
+
|
|
8
|
+
Gateway.supported_cardtypes = []
|
|
9
|
+
assert_false [:visa, :bogus].all? { |invalid_cardtype| Gateway.supports?(invalid_cardtype) }
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_should_gateway_uses_ssl_strict_checking_by_default
|
|
13
|
+
assert Gateway.ssl_strict
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_should_be_able_to_look_for_test_mode
|
|
17
|
+
Base.gateway_mode = :test
|
|
18
|
+
assert Gateway.new.test?
|
|
19
|
+
|
|
20
|
+
Base.gateway_mode = :production
|
|
21
|
+
assert_false Gateway.new.test?
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_amount_style
|
|
25
|
+
assert_equal '10.34', Gateway.new.send(:amount, 1034)
|
|
26
|
+
|
|
27
|
+
assert_raise(ArgumentError) do
|
|
28
|
+
Gateway.new.send(:amount, '10.34')
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_invalid_type
|
|
33
|
+
credit_card = stub(:type => "visa")
|
|
34
|
+
assert_equal "visa", Gateway.card_brand(credit_card)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_invalid_type
|
|
38
|
+
credit_card = stub(:type => "String", :brand => "visa")
|
|
39
|
+
assert_equal "visa", Gateway.card_brand(credit_card)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_setting_application_id_outside_the_class_definition
|
|
43
|
+
assert_equal SimpleTestGateway.application_id, SubclassGateway.application_id
|
|
44
|
+
SimpleTestGateway.application_id = "New Application ID"
|
|
45
|
+
|
|
46
|
+
assert_equal SimpleTestGateway.application_id, SubclassGateway.application_id
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class InstapayTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@gateway = InstapayGateway.new(:login => 'TEST0')
|
|
6
|
+
@credit_card = credit_card
|
|
7
|
+
@amount = 100
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_successful_purchase
|
|
11
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
12
|
+
|
|
13
|
+
assert response = @gateway.purchase(@amount, @credit_card)
|
|
14
|
+
assert_instance_of Response, response
|
|
15
|
+
assert_success response
|
|
16
|
+
assert_equal "118583850", response.authorization
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_unsuccessful_purchase
|
|
20
|
+
@gateway.expects(:ssl_post).returns(failed_purchase_response)
|
|
21
|
+
|
|
22
|
+
assert response = @gateway.purchase(@amount, @credit_card)
|
|
23
|
+
assert_instance_of Response, response
|
|
24
|
+
assert_failure response
|
|
25
|
+
assert_nil response.authorization
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_successful_auth
|
|
29
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
30
|
+
|
|
31
|
+
assert response = @gateway.authorize(@amount, @credit_card)
|
|
32
|
+
assert_instance_of Response, response
|
|
33
|
+
assert_success response
|
|
34
|
+
assert_equal "118583850", response.authorization
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_unsuccessful_auth
|
|
38
|
+
@gateway.expects(:ssl_post).returns(failed_purchase_response)
|
|
39
|
+
|
|
40
|
+
assert response = @gateway.authorize(@amount, @credit_card)
|
|
41
|
+
assert_instance_of Response, response
|
|
42
|
+
assert_failure response
|
|
43
|
+
assert_nil response.authorization
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_avs_result
|
|
47
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
48
|
+
|
|
49
|
+
response = @gateway.purchase(@amount, @credit_card)
|
|
50
|
+
assert_equal 'X', response.avs_result['code']
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_cvv_result
|
|
54
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
55
|
+
|
|
56
|
+
response = @gateway.purchase(@amount, @credit_card)
|
|
57
|
+
assert_equal 'M', response.cvv_result['code']
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_successful_capture
|
|
61
|
+
@gateway.expects(:ssl_post).returns(successful_capture_response)
|
|
62
|
+
|
|
63
|
+
response = @gateway.capture(100, "123456")
|
|
64
|
+
assert_equal InstapayGateway::SUCCESS_MESSAGE, response.message
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_failed_capture
|
|
68
|
+
@gateway.expects(:ssl_post).returns(failed_capture_response)
|
|
69
|
+
|
|
70
|
+
response = @gateway.capture(100, "123456")
|
|
71
|
+
assert_equal "Post amount exceeds Auth amount", response.message
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
private
|
|
75
|
+
|
|
76
|
+
# Place raw successful response from gateway here
|
|
77
|
+
def successful_purchase_response
|
|
78
|
+
"<html><body><plaintext>\r\nAccepted=SALE:TEST:::118583850:X::M\r\nhistoryid=118583850\r\norderid=92886714\r\nAccepted=SALE:TEST:::118583850:::\r\nACCOUNTNUMBER=************5454\r\nauthcode=TEST\r\nAuthNo=SALE:TEST:::118583850:::\r\nhistoryid=118583850\r\norderid=92886714\r\nrecurid=0\r\nrefcode=118583850-TEST\r\nresult=1\r\nStatus=Accepted\r\ntransid=0\r\n"
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Place raw failed response from gateway here
|
|
82
|
+
def failed_purchase_response
|
|
83
|
+
"<html><body><plaintext>\r\nDeclined=DECLINED:0720930009:CVV2 MISMATCH:N7\r\nhistoryid=118583848\r\norderid=92886713\r\nACCOUNTNUMBER=************2220\r\nDeclined=DECLINED:0720930009:CVV2 MISMATCH:N7\r\nhistoryid=118583848\r\norderid=92886713\r\nrcode=0720930009\r\nReason=DECLINED:0720930009:CVV2 MISMATCH:N7\r\nrecurid=0\r\nresult=0\r\nStatus=Declined\r\ntransid=80410586\r\n"
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def successful_auth_response
|
|
87
|
+
"<html><body><plaintext>\r\nAccepted=AUTH:TEST:::118585994:::\r\nhistoryid=118585994\r\norderid=92888143\r\nAccepted=AUTH:TEST:::118585994:::\r\nACCOUNTNUMBER=************5454\r\nauthcode=TEST\r\nAuthNo=AUTH:TEST:::118585994:::\r\nhistoryid=118585994\r\norderid=92888143\r\nrecurid=0\r\nrefcode=118585994-TEST\r\nresult=1\r\nStatus=Accepted\r\ntransid=0\r\n"
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def failed_auth_response
|
|
91
|
+
"<html><body><plaintext>\r\nDeclined=DECLINED:0720930009:CVV2 MISMATCH:N7\r\nhistoryid=118585991\r\norderid=92888142\r\nACCOUNTNUMBER=************2220\r\nDeclined=DECLINED:0720930009:CVV2 MISMATCH:N7\r\nhistoryid=118585991\r\norderid=92888142\r\nrcode=0720930009\r\nReason=DECLINED:0720930009:CVV2 MISMATCH:N7\r\nrecurid=0\r\nresult=0\r\nStatus=Declined\r\ntransid=80412271\r\n"
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def successful_capture_response
|
|
95
|
+
"<html><body><plaintext>\r\nAccepted=AVSAUTH:TEST:::121609962::::DUPLICATE\r\nhistoryid=121609962\r\norderid=95009583\r\nAccepted=AVSAUTH:TEST:::121609962::::DUPLICATE\r\nACCOUNTNUMBER=************5454\r\nauthcode=TEST\r\nAuthNo=AVSAUTH:TEST:::121609962::::DUPLICATE\r\nDUPLICATE=1\r\nhistoryid=121609962\r\norderid=95009583\r\nrecurid=0\r\nrefcode=121609962-TEST\r\nresult=1\r\nStatus=Accepted\r\ntransid=0\r\n"
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def failed_capture_response
|
|
99
|
+
"<html><body><plaintext>\r\nDeclined=DECLINED:1101450002:Post amount exceeds Auth amount:\r\nhistoryid=\r\norderid=\r\nDeclined=DECLINED:1101450002:Post amount exceeds Auth amount:\r\nrcode=1101450002\r\nReason=DECLINED:1101450002:Post amount exceeds Auth amount:\r\nresult=0\r\nStatus=Declined\r\ntransid=0\r\n"
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class LinkpointTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
Base.mode = :test
|
|
6
|
+
|
|
7
|
+
@gateway = LinkpointGateway.new(
|
|
8
|
+
:login => 123123,
|
|
9
|
+
:pem => 'PEM'
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
@credit_card = credit_card('4111111111111111')
|
|
13
|
+
@options = { :order_id => 1000, :billing_address => address }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_credit_card_formatting
|
|
17
|
+
assert_equal '04', @gateway.send(:format_creditcard_expiry_year, 2004)
|
|
18
|
+
assert_equal '04', @gateway.send(:format_creditcard_expiry_year, '2004')
|
|
19
|
+
assert_equal '04', @gateway.send(:format_creditcard_expiry_year, 4)
|
|
20
|
+
assert_equal '04', @gateway.send(:format_creditcard_expiry_year, '04')
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_successful_authorization
|
|
24
|
+
@gateway.expects(:ssl_post).returns(successful_authorization_response)
|
|
25
|
+
|
|
26
|
+
assert response = @gateway.authorize(@amount, @credit_card, @options)
|
|
27
|
+
assert_instance_of Response, response
|
|
28
|
+
assert_success response
|
|
29
|
+
assert_equal '1000', response.authorization
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_successful_purchase
|
|
33
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
34
|
+
|
|
35
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
36
|
+
assert_instance_of Response, response
|
|
37
|
+
assert_success response
|
|
38
|
+
assert_equal '1000', response.authorization
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_failed_purchase
|
|
42
|
+
@gateway.expects(:ssl_post).returns(failed_purchase_response)
|
|
43
|
+
|
|
44
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
45
|
+
assert_failure response
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_recurring
|
|
49
|
+
@gateway.expects(:ssl_post).returns(successful_recurring_response)
|
|
50
|
+
|
|
51
|
+
assert response = @gateway.recurring(2400, @credit_card, :order_id => 1003, :installments => 12, :startdate => "immediate", :periodicity => :monthly)
|
|
52
|
+
assert_success response
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_amount_style
|
|
56
|
+
assert_equal '10.34', @gateway.send(:amount, 1034)
|
|
57
|
+
|
|
58
|
+
assert_raise(ArgumentError) do
|
|
59
|
+
@gateway.send(:amount, '10.34')
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_purchase_is_valid_xml
|
|
64
|
+
parameters = @gateway.send(:parameters, 1000, @credit_card, :ordertype => "SALE", :order_id => 1004,
|
|
65
|
+
:billing_address => {
|
|
66
|
+
:address1 => '1313 lucky lane',
|
|
67
|
+
:city => 'Lost Angeles',
|
|
68
|
+
:state => 'CA',
|
|
69
|
+
:zip => '90210'
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
assert data = @gateway.send(:post_data, @amount, @credit_card, @options)
|
|
74
|
+
assert REXML::Document.new(data)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def test_recurring_is_valid_xml
|
|
78
|
+
parameters = @gateway.send(:parameters, 1000, @credit_card, :ordertype => "SALE", :action => "SUBMIT", :installments => 12, :startdate => "immediate", :periodicity => "monthly", :order_id => 1006,
|
|
79
|
+
:billing_address => {
|
|
80
|
+
:address1 => '1313 lucky lane',
|
|
81
|
+
:city => 'Lost Angeles',
|
|
82
|
+
:state => 'CA',
|
|
83
|
+
:zip => '90210'
|
|
84
|
+
}
|
|
85
|
+
)
|
|
86
|
+
assert data = @gateway.send(:post_data, @amount, @credit_card, @options)
|
|
87
|
+
assert REXML::Document.new(data)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def test_declined_purchase_is_valid_xml
|
|
91
|
+
@gateway = LinkpointGateway.new(:login => 123123, :pem => 'PEM')
|
|
92
|
+
|
|
93
|
+
parameters = @gateway.send(:parameters, 1000, @credit_card, :ordertype => "SALE", :order_id => 1005,
|
|
94
|
+
:billing_address => {
|
|
95
|
+
:address1 => '1313 lucky lane',
|
|
96
|
+
:city => 'Lost Angeles',
|
|
97
|
+
:state => 'CA',
|
|
98
|
+
:zip => '90210'
|
|
99
|
+
}
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
assert data = @gateway.send(:post_data, @amount, @credit_card, @options)
|
|
103
|
+
assert REXML::Document.new(data)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def test_overriding_test_mode
|
|
107
|
+
Base.gateway_mode = :production
|
|
108
|
+
|
|
109
|
+
gateway = LinkpointGateway.new(
|
|
110
|
+
:login => 'LOGIN',
|
|
111
|
+
:pem => 'PEM',
|
|
112
|
+
:test => true
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
assert gateway.test?
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def test_using_production_mode
|
|
119
|
+
Base.gateway_mode = :production
|
|
120
|
+
|
|
121
|
+
gateway = LinkpointGateway.new(
|
|
122
|
+
:login => 'LOGIN',
|
|
123
|
+
:pem => 'PEM'
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
assert !gateway.test?
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def test_supported_countries
|
|
130
|
+
assert_equal ['US'], LinkpointGateway.supported_countries
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def test_supported_card_types
|
|
134
|
+
assert_equal [:visa, :master, :american_express, :discover], LinkpointGateway.supported_cardtypes
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def test_avs_result
|
|
138
|
+
@gateway.expects(:ssl_post).returns(successful_authorization_response)
|
|
139
|
+
|
|
140
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
141
|
+
assert_equal 'N', response.avs_result['code']
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def test_cvv_result
|
|
145
|
+
@gateway.expects(:ssl_post).returns(successful_authorization_response)
|
|
146
|
+
|
|
147
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
148
|
+
assert_equal 'M', response.cvv_result['code']
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
private
|
|
152
|
+
def successful_authorization_response
|
|
153
|
+
'<r_csp>CSI</r_csp><r_time>Sun Jan 6 21:41:31 2008</r_time><r_ref>0004486182</r_ref><r_error/><r_ordernum>1000</r_ordernum><r_message>APPROVED</r_message><r_code>1234560004486182:NNNM:100018312899:</r_code><r_tdate>1199680890</r_tdate><r_score/><r_authresponse/><r_approved>APPROVED</r_approved><r_avs>NNNM</r_avs>'
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def successful_purchase_response
|
|
157
|
+
'<r_csp>CSI</r_csp><r_time>Sun Jan 6 21:45:22 2008</r_time><r_ref>0004486195</r_ref><r_error></r_error><r_ordernum>1000</r_ordernum><r_message>APPROVED</r_message><r_code>1234560004486195:NNNM:100018312912:</r_code><r_tdate>1199681121</r_tdate><r_score></r_score><r_authresponse></r_authresponse><r_approved>APPROVED</r_approved><r_avs>NNNM</r_avs>'
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def failed_purchase_response
|
|
161
|
+
'<r_csp></r_csp><r_time>Sun Jan 6 21:50:51 2008</r_time><r_ref></r_ref><r_error>SGS-002300: Invalid credit card type.</r_error><r_ordernum>2aec6babe076111deb2c94c21181d9fe</r_ordernum><r_message></r_message><r_code></r_code><r_tdate></r_tdate><r_score></r_score><r_authresponse></r_authresponse><r_approved>DECLINED</r_approved><r_avs></r_avs>'
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def successful_recurring_response
|
|
165
|
+
'<r_csp>CSI</r_csp><r_time>Sun Jan 6 21:49:00 2008</r_time><r_ref>0004486198</r_ref><r_error></r_error><r_ordernum>2206b7c9a31de5fb077913134011059d</r_ordernum><r_message>APPROVED</r_message><r_code>1234560004486198:NNNM:100018312915:</r_code><r_tdate>1199681339</r_tdate><r_score></r_score><r_authresponse></r_authresponse><r_approved>APPROVED</r_approved><r_avs>NNN</r_avs>'
|
|
166
|
+
end
|
|
167
|
+
end
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class MerchantESolutionsTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
Base.gateway_mode = :test
|
|
6
|
+
|
|
7
|
+
@gateway = MerchantESolutionsGateway.new(
|
|
8
|
+
:login => 'login',
|
|
9
|
+
:password => 'password'
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
@credit_card = credit_card
|
|
13
|
+
@amount = 100
|
|
14
|
+
|
|
15
|
+
@options = {
|
|
16
|
+
:order_id => '1',
|
|
17
|
+
:billing_address => address,
|
|
18
|
+
:description => 'Store Purchase'
|
|
19
|
+
}
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_successful_purchase
|
|
23
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
24
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
25
|
+
assert_instance_of Response, response
|
|
26
|
+
assert_success response
|
|
27
|
+
assert_equal '5547cc97dae23ea6ad1a4abd33445c91', response.authorization
|
|
28
|
+
assert response.test?
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_unsuccessful_purchase
|
|
32
|
+
@gateway.expects(:ssl_post).returns(failed_purchase_response)
|
|
33
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
34
|
+
assert_failure response
|
|
35
|
+
assert response.test?
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def test_authorization
|
|
39
|
+
@gateway.expects(:ssl_post).returns(successful_authorization_response)
|
|
40
|
+
assert response = @gateway.authorize(@amount, @credit_card, @options)
|
|
41
|
+
assert response.success?
|
|
42
|
+
assert_equal '42e52603e4c83a55890fbbcfb92b8de1', response.authorization
|
|
43
|
+
assert response.test?
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_capture
|
|
47
|
+
@gateway.expects(:ssl_post).returns(successful_capture_response)
|
|
48
|
+
assert response = @gateway.capture(@amount, '42e52603e4c83a55890fbbcfb92b8de1', @options)
|
|
49
|
+
assert response.success?
|
|
50
|
+
assert_equal '42e52603e4c83a55890fbbcfb92b8de1', response.authorization
|
|
51
|
+
assert response.test?
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_credit
|
|
55
|
+
@gateway.expects(:ssl_post).returns(successful_credit_response)
|
|
56
|
+
assert response = @gateway.authorize(@amount, @credit_card, @options)
|
|
57
|
+
assert response.success?
|
|
58
|
+
assert_equal '0a5ca4662ac034a59595acb61e8da025', response.authorization
|
|
59
|
+
assert response.test?
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def test_void
|
|
63
|
+
@gateway.expects(:ssl_post).returns(successful_void_response)
|
|
64
|
+
assert response = @gateway.void('42e52603e4c83a55890fbbcfb92b8de1')
|
|
65
|
+
assert response.success?
|
|
66
|
+
assert_equal '1b08845c6dee3fa1a73fee2a009d33a7', response.authorization
|
|
67
|
+
assert response.test?
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def test_store
|
|
71
|
+
@gateway.expects(:ssl_post).returns(successful_store_response)
|
|
72
|
+
assert response = @gateway.store(@credit_card)
|
|
73
|
+
assert response.success?
|
|
74
|
+
assert_equal 'ae641b57b19b3bb89faab44191479872', response.authorization
|
|
75
|
+
assert response.test?
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def test_unstore
|
|
79
|
+
@gateway.expects(:ssl_post).returns(successful_unstore_response)
|
|
80
|
+
assert response = @gateway.unstore('ae641b57b19b3bb89faab44191479872')
|
|
81
|
+
assert response.success?
|
|
82
|
+
assert_equal 'd79410c91b4b31ba99f5a90558565df9', response.authorization
|
|
83
|
+
assert response.test?
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def test_successful_avs_check
|
|
87
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response + '&avs_result=Y')
|
|
88
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
89
|
+
assert_equal response.avs_result['code'], "Y"
|
|
90
|
+
assert_equal response.avs_result['message'], "Street address and 5-digit postal code match."
|
|
91
|
+
assert_equal response.avs_result['street_match'], "Y"
|
|
92
|
+
assert_equal response.avs_result['postal_match'], "Y"
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def test_unsuccessful_avs_check_with_bad_street_address
|
|
96
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response + '&avs_result=Z')
|
|
97
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
98
|
+
assert_equal response.avs_result['code'], "Z"
|
|
99
|
+
assert_equal response.avs_result['message'], "Street address does not match, but 5-digit postal code matches."
|
|
100
|
+
assert_equal response.avs_result['street_match'], "N"
|
|
101
|
+
assert_equal response.avs_result['postal_match'], "Y"
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def test_unsuccessful_avs_check_with_bad_zip
|
|
105
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response + '&avs_result=A')
|
|
106
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
107
|
+
assert_equal response.avs_result['code'], "A"
|
|
108
|
+
assert_equal response.avs_result['message'], "Street address matches, but 5-digit and 9-digit postal code do not match."
|
|
109
|
+
assert_equal response.avs_result['street_match'], "Y"
|
|
110
|
+
assert_equal response.avs_result['postal_match'], "N"
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def test_successful_cvv_check
|
|
114
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response + '&cvv2_result=M')
|
|
115
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
116
|
+
assert_equal response.cvv_result['code'], "M"
|
|
117
|
+
assert_equal response.cvv_result['message'], "Match"
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def test_unsuccessful_cvv_check
|
|
121
|
+
@gateway.expects(:ssl_post).returns(failed_purchase_response + '&cvv2_result=N')
|
|
122
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
123
|
+
assert_equal response.cvv_result['code'], "N"
|
|
124
|
+
assert_equal response.cvv_result['message'], "No Match"
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def test_supported_countries
|
|
128
|
+
assert_equal ['US'], MerchantESolutionsGateway.supported_countries
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def test_supported_card_types
|
|
132
|
+
assert_equal [:visa, :master, :american_express, :discover, :jcb], MerchantESolutionsGateway.supported_cardtypes
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
private
|
|
136
|
+
|
|
137
|
+
def successful_purchase_response
|
|
138
|
+
'transaction_id=5547cc97dae23ea6ad1a4abd33445c91&error_code=000&auth_response_text=Exact Match&auth_code=12345A'
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def successful_authorization_response
|
|
142
|
+
'transaction_id=42e52603e4c83a55890fbbcfb92b8de1&error_code=000&auth_response_text=Exact Match&auth_code=12345A'
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def successful_credit_response
|
|
146
|
+
'transaction_id=0a5ca4662ac034a59595acb61e8da025&error_code=000&auth_response_text=Credit Approved'
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def successful_void_response
|
|
150
|
+
'transaction_id=1b08845c6dee3fa1a73fee2a009d33a7&error_code=000&auth_response_text=Void Request Accepted'
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def successful_capture_response
|
|
154
|
+
'transaction_id=42e52603e4c83a55890fbbcfb92b8de1&error_code=000&auth_response_text=Settle Request Accepted'
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def successful_store_response
|
|
158
|
+
'transaction_id=ae641b57b19b3bb89faab44191479872&error_code=000&auth_response_text=Card Data Stored'
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def successful_unstore_response
|
|
162
|
+
'transaction_id=d79410c91b4b31ba99f5a90558565df9&error_code=000&auth_response_text=Stored Card Data Deleted'
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def failed_purchase_response
|
|
166
|
+
'transaction_id=error&error_code=101&auth_response_text=Invalid%20I%20or%20Key%20Incomplete%20Request'
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
end
|