activemerchant 1.2.1 → 1.3.0
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.tar.gz.sig +0 -0
- data/CHANGELOG +310 -294
- data/CONTRIBUTERS +13 -0
- data/README +55 -31
- data/Rakefile +21 -13
- data/lib/active_merchant.rb +7 -0
- data/lib/active_merchant/billing/avs_result.rb +95 -0
- data/lib/active_merchant/billing/base.rb +8 -3
- data/lib/active_merchant/billing/check.rb +61 -0
- data/lib/active_merchant/billing/credit_card.rb +104 -80
- data/lib/active_merchant/billing/credit_card_formatting.rb +11 -8
- data/lib/active_merchant/billing/credit_card_methods.rb +76 -32
- 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 +47 -111
- data/lib/active_merchant/billing/gateways/authorize_net.rb +508 -121
- data/lib/active_merchant/billing/gateways/bogus.rb +26 -32
- data/lib/active_merchant/billing/gateways/brain_tree.rb +82 -70
- data/lib/active_merchant/billing/gateways/card_stream.rb +43 -15
- data/lib/active_merchant/billing/gateways/cyber_source.rb +9 -29
- data/lib/active_merchant/billing/gateways/data_cash.rb +18 -38
- data/lib/active_merchant/billing/gateways/efsnet.rb +23 -50
- data/lib/active_merchant/billing/gateways/eway.rb +8 -19
- data/lib/active_merchant/billing/gateways/exact.rb +17 -25
- data/lib/active_merchant/billing/gateways/linkpoint.rb +18 -25
- data/lib/active_merchant/billing/gateways/moneris.rb +9 -39
- data/lib/active_merchant/billing/gateways/net_registry.rb +113 -182
- data/lib/active_merchant/billing/gateways/netbilling.rb +168 -0
- data/lib/active_merchant/billing/gateways/pay_junction.rb +52 -73
- data/lib/active_merchant/billing/gateways/pay_secure.rb +120 -0
- data/lib/active_merchant/billing/gateways/payflow.rb +13 -14
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +55 -37
- data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +4 -0
- data/lib/active_merchant/billing/gateways/payflow_express.rb +2 -4
- data/lib/active_merchant/billing/gateways/payment_express.rb +11 -30
- data/lib/active_merchant/billing/gateways/paypal.rb +3 -14
- data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +36 -16
- data/lib/active_merchant/billing/gateways/paypal_express.rb +1 -2
- data/lib/active_merchant/billing/gateways/plugnpay.rb +7 -15
- data/lib/active_merchant/billing/gateways/protx.rb +24 -25
- data/lib/active_merchant/billing/gateways/psigate.rb +34 -71
- data/lib/active_merchant/billing/gateways/psl_card.rb +24 -19
- data/lib/active_merchant/billing/gateways/quickpay.rb +10 -24
- data/lib/active_merchant/billing/gateways/realex.rb +7 -19
- data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
- data/lib/active_merchant/billing/gateways/skip_jack.rb +437 -0
- data/lib/active_merchant/billing/gateways/trans_first.rb +5 -14
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +100 -39
- data/lib/active_merchant/billing/gateways/usa_epay.rb +60 -55
- data/lib/active_merchant/billing/gateways/verifi.rb +32 -39
- data/lib/active_merchant/billing/gateways/viaklix.rb +31 -37
- data/lib/active_merchant/billing/integrations.rb +2 -0
- data/lib/active_merchant/billing/integrations/bogus.rb +5 -0
- data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/chronopay.rb +5 -0
- data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/gestpay.rb +5 -0
- data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/hi_trust.rb +26 -0
- data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
- data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +57 -0
- data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
- data/lib/active_merchant/billing/integrations/nochex.rb +5 -0
- data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/paypal.rb +5 -0
- data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/return.rb +35 -0
- data/lib/active_merchant/billing/integrations/two_checkout.rb +5 -0
- data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
- data/lib/active_merchant/billing/response.rb +12 -8
- data/lib/active_merchant/lib/posts_data.rb +39 -7
- data/lib/active_merchant/lib/requires_parameters.rb +2 -3
- data/lib/active_merchant/lib/utils.rb +18 -0
- data/lib/active_merchant/lib/validateable.rb +3 -3
- data/lib/support/gateway_support.rb +22 -9
- data/script/destroy +14 -0
- data/script/generate +7 -7
- data/test/fixtures.yml +25 -3
- data/test/remote/gateways/remote_authorize_net_test.rb +145 -0
- data/test/remote/gateways/remote_brain_tree_test.rb +118 -0
- data/test/{remote_tests → remote/gateways}/remote_card_stream_test.rb +56 -68
- data/test/{remote_tests → remote/gateways}/remote_cyber_source_test.rb +21 -32
- data/test/{remote_tests → remote/gateways}/remote_data_cash_test.rb +2 -2
- data/test/{remote_tests → remote/gateways}/remote_efsnet_test.rb +22 -34
- data/test/{remote_tests → remote/gateways}/remote_eway_test.rb +18 -15
- data/test/{remote_tests → remote/gateways}/remote_exact_test.rb +20 -19
- data/test/{remote_tests → remote/gateways}/remote_linkpoint_test.rb +31 -63
- data/test/remote/gateways/remote_moneris_test.rb +82 -0
- data/test/{remote_tests → remote/gateways}/remote_net_registry_test.rb +19 -54
- data/test/remote/gateways/remote_netbilling_test.rb +70 -0
- data/test/{remote_tests → remote/gateways}/remote_pay_junction_test.rb +41 -60
- data/test/remote/gateways/remote_pay_secure_test.rb +39 -0
- data/test/{remote_tests → remote/gateways}/remote_payflow_express_test.rb +2 -2
- data/test/{remote_tests → remote/gateways}/remote_payflow_test.rb +34 -38
- data/test/{remote_tests → remote/gateways}/remote_payflow_uk_test.rb +13 -12
- data/test/{remote_tests → remote/gateways}/remote_payment_express_test.rb +26 -36
- data/test/{remote_tests → remote/gateways}/remote_paypal_express_test.rb +3 -3
- data/test/{remote_tests → remote/gateways}/remote_paypal_test.rb +25 -21
- data/test/{remote_tests → remote/gateways}/remote_plugnpay_test.rb +18 -16
- data/test/{remote_tests → remote/gateways}/remote_protx_test.rb +33 -33
- data/test/remote/gateways/remote_psigate_test.rb +50 -0
- data/test/{remote_tests → remote/gateways}/remote_psl_card_test.rb +27 -26
- data/test/{remote_tests → remote/gateways}/remote_quickpay_test.rb +48 -48
- data/test/{remote_tests → remote/gateways}/remote_realex_test.rb +30 -33
- 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_tests → remote/gateways}/remote_trans_first_test.rb +7 -10
- data/test/remote/gateways/remote_trust_commerce_test.rb +152 -0
- data/test/{remote_tests → remote/gateways}/remote_usa_epay_test.rb +11 -22
- data/test/{remote_tests → remote/gateways}/remote_verifi_test.rb +27 -27
- data/test/{remote_tests → remote/gateways}/remote_viaklix_test.rb +8 -18
- data/test/{remote_tests → remote/integrations}/remote_gestpay_integration_test.rb +1 -1
- data/test/{remote_tests → remote/integrations}/remote_paypal_integration_test.rb +1 -1
- data/test/test_helper.rb +102 -61
- data/test/unit/avs_result_test.rb +59 -0
- data/test/unit/base_test.rb +33 -39
- data/test/unit/check_test.rb +76 -0
- data/test/unit/credit_card_formatting_test.rb +10 -15
- data/test/unit/credit_card_methods_test.rb +132 -17
- data/test/unit/credit_card_test.rb +157 -228
- data/test/unit/cvv_result_test.rb +33 -0
- data/test/unit/expiry_date_test.rb +21 -0
- data/test/unit/gateways/authorize_net_test.rb +180 -40
- data/test/unit/gateways/bogus_test.rb +2 -3
- data/test/unit/gateways/brain_tree_test.rb +63 -29
- data/test/unit/gateways/card_stream_test.rb +59 -6
- data/test/unit/gateways/cyber_source_test.rb +59 -40
- data/test/unit/gateways/data_cash_test.rb +82 -1
- data/test/unit/gateways/efsnet_test.rb +97 -44
- data/test/unit/gateways/eway_test.rb +55 -42
- data/test/unit/gateways/exact_test.rb +93 -55
- data/test/unit/gateways/gateway_test.rb +7 -0
- data/test/unit/gateways/linkpoint_test.rb +60 -58
- data/test/unit/gateways/moneris_test.rb +67 -76
- data/test/unit/gateways/net_registry_test.rb +351 -419
- data/test/unit/gateways/netbilling_test.rb +54 -0
- data/test/unit/gateways/pay_junction_test.rb +108 -46
- data/test/unit/gateways/pay_secure_test.rb +71 -0
- data/test/unit/gateways/payflow_express_test.rb +0 -8
- data/test/unit/gateways/payflow_test.rb +136 -65
- data/test/unit/gateways/payflow_uk_test.rb +0 -38
- data/test/unit/gateways/payment_express_test.rb +31 -51
- data/test/unit/gateways/paypal_express_test.rb +8 -2
- data/test/unit/gateways/paypal_test.rb +213 -54
- data/test/unit/gateways/plugnpay_test.rb +39 -32
- data/test/unit/gateways/protx_test.rb +45 -33
- data/test/unit/gateways/psigate_test.rb +146 -87
- data/test/unit/gateways/psl_card_test.rb +37 -24
- data/test/unit/gateways/quickpay_test.rb +33 -46
- data/test/unit/gateways/realex_test.rb +32 -31
- data/test/unit/gateways/secure_pay_tech_test.rb +44 -0
- data/test/unit/gateways/secure_pay_test.rb +35 -26
- data/test/unit/gateways/skip_jack_test.rb +125 -0
- data/test/unit/gateways/trans_first_test.rb +24 -37
- data/test/unit/gateways/trust_commerce_test.rb +47 -26
- data/test/unit/gateways/usa_epay_test.rb +52 -41
- data/test/unit/gateways/verifi_test.rb +41 -35
- data/test/unit/gateways/viaklix_test.rb +38 -32
- 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 +7 -14
- data/test/unit/integrations/bogus_module_test.rb +4 -0
- data/test/unit/integrations/chronopay_module_test.rb +4 -0
- data/test/unit/integrations/gestpay_module_test.rb +4 -0
- data/test/unit/integrations/helpers/hi_trust_helper_test.rb +16 -0
- data/test/unit/integrations/hi_trust_module_test.rb +13 -0
- data/test/unit/integrations/nochex_module_test.rb +4 -0
- data/test/unit/integrations/notifications/hi_trust_notification_test.rb +38 -0
- data/test/unit/integrations/paypal_module_test.rb +4 -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 +4 -0
- data/test/unit/posts_data_test.rb +86 -0
- data/test/unit/response_test.rb +15 -1
- data/test/unit/utils_test.rb +7 -0
- data/test/unit/validateable_test.rb +10 -6
- metadata +180 -142
- metadata.gz.sig +0 -0
- data/lib/active_merchant/billing/gateways/paypal/api_cert_chain.crt +0 -35
- data/script/generator/base.rb +0 -45
- data/script/generator/generator.rb +0 -24
- data/script/generator/generators/gateway/gateway_generator.rb +0 -14
- data/script/generator/generators/gateway/templates/gateway.rb +0 -73
- data/script/generator/generators/gateway/templates/gateway_test.rb +0 -41
- data/script/generator/generators/gateway/templates/remote_gateway_test.rb +0 -56
- data/script/generator/generators/integration/integration_generator.rb +0 -25
- data/script/generator/generators/integration/templates/helper.rb +0 -34
- data/script/generator/generators/integration/templates/helper_test.rb +0 -54
- data/script/generator/generators/integration/templates/integration.rb +0 -18
- data/script/generator/generators/integration/templates/module_test.rb +0 -9
- data/script/generator/generators/integration/templates/notification.rb +0 -100
- data/script/generator/generators/integration/templates/notification_test.rb +0 -41
- data/script/generator/manifest.rb +0 -20
- data/test/remote_tests/remote_authorize_net_test.rb +0 -113
- data/test/remote_tests/remote_brain_tree_test.rb +0 -78
- data/test/remote_tests/remote_moneris_test.rb +0 -110
- data/test/remote_tests/remote_psigate_test.rb +0 -87
- data/test/remote_tests/remote_secure_pay_test.rb +0 -36
- data/test/remote_tests/remote_trust_commerce_test.rb +0 -136
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
|
2
|
+
|
|
3
|
+
class NetbillingTest < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@gateway = NetbillingGateway.new(
|
|
6
|
+
:login => 'login',
|
|
7
|
+
:password => 'password'
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
@credit_card = credit_card('4242424242424242')
|
|
11
|
+
@amount = 100
|
|
12
|
+
@options = { :billing_address => address }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_successful_request
|
|
16
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
17
|
+
|
|
18
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
19
|
+
assert_success response
|
|
20
|
+
assert_equal '110270311543', response.authorization
|
|
21
|
+
assert response.test?
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_unsuccessful_request
|
|
25
|
+
@gateway.expects(:ssl_post).returns(unsuccessful_purchase_response)
|
|
26
|
+
|
|
27
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
28
|
+
assert_failure response
|
|
29
|
+
assert response.test?
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_avs_result
|
|
33
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
34
|
+
|
|
35
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
36
|
+
assert_equal 'X', response.avs_result['code']
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_cvv_result
|
|
40
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
41
|
+
|
|
42
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
43
|
+
assert_equal 'M', response.cvv_result['code']
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
def successful_purchase_response
|
|
48
|
+
"avs_code=X&cvv2_code=M&status_code=1&auth_code=999999&trans_id=110270311543&auth_msg=TEST+APPROVED&auth_date=2008-01-25+16:43:54"
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def unsuccessful_purchase_response
|
|
52
|
+
"status_code=0&auth_msg=CARD+EXPIRED&trans_id=110492608613&auth_date=2008-01-25+17:47:44"
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -2,60 +2,122 @@ require 'test/unit'
|
|
|
2
2
|
require File.dirname(__FILE__) + '/../../test_helper'
|
|
3
3
|
|
|
4
4
|
class PayJunctionTest < Test::Unit::TestCase
|
|
5
|
-
include ActiveMerchant::Billing
|
|
6
|
-
|
|
7
5
|
def setup
|
|
8
|
-
|
|
9
|
-
ActiveMerchant::Billing::Base.gateway_mode = :test
|
|
6
|
+
Base.gateway_mode = :test
|
|
10
7
|
|
|
11
|
-
@gateway = PayJunctionGateway.new(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
@gateway = PayJunctionGateway.new(
|
|
9
|
+
:login => "pj-ql-01",
|
|
10
|
+
:password => "pj-ql-01p"
|
|
11
|
+
)
|
|
15
12
|
|
|
16
|
-
@
|
|
17
|
-
|
|
18
|
-
:
|
|
19
|
-
:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
13
|
+
@credit_card = credit_card
|
|
14
|
+
@options = {
|
|
15
|
+
:billing_address => address,
|
|
16
|
+
:description => 'Test purchase'
|
|
17
|
+
}
|
|
18
|
+
@amount = 100
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_detect_test_credentials_when_in_production
|
|
23
|
+
Base.mode = :production
|
|
24
|
+
|
|
25
|
+
live_gw = PayJunctionGateway.new(
|
|
26
|
+
:login => "l",
|
|
27
|
+
:password => "p"
|
|
28
|
+
)
|
|
29
|
+
assert_false live_gw.test?
|
|
23
30
|
|
|
31
|
+
test_gw = PayJunctionGateway.new(
|
|
32
|
+
:login => "pj-ql-01",
|
|
33
|
+
:password => "pj-ql-01p"
|
|
34
|
+
)
|
|
35
|
+
assert test_gw.test?
|
|
24
36
|
end
|
|
25
|
-
|
|
26
|
-
def
|
|
27
|
-
@
|
|
37
|
+
|
|
38
|
+
def test_successful_authorization
|
|
39
|
+
@gateway.expects(:ssl_post).returns(successful_authorization_response)
|
|
40
|
+
response = @gateway.authorize(@amount, @credit_card, @options)
|
|
41
|
+
assert_success response
|
|
42
|
+
assert_equal PayJunctionGateway::SUCCESS_MESSAGE, response.message
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_failed_authorization
|
|
46
|
+
@gateway.expects(:ssl_post).returns(failed_authorization_response)
|
|
47
|
+
response = @gateway.authorize(@amount, @credit_card, @options)
|
|
48
|
+
assert_failure response
|
|
49
|
+
assert_equal PayJunctionGateway::DECLINE_CODES['FE'], response.message
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def test_avs_result_not_supported
|
|
53
|
+
@gateway.expects(:ssl_post).returns(successful_authorization_response)
|
|
28
54
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
assert_equal '#0001', response.params['receiptid']
|
|
32
|
-
assert_equal true, response.success?
|
|
55
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
56
|
+
assert_nil response.avs_result['code']
|
|
33
57
|
end
|
|
34
|
-
|
|
35
|
-
def
|
|
36
|
-
@
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
assert_equal '#0001', response.params['receiptid']
|
|
41
|
-
assert_equal false, response.success?
|
|
42
|
-
|
|
58
|
+
|
|
59
|
+
def test_cvv_result_not_supported
|
|
60
|
+
@gateway.expects(:ssl_post).returns(successful_authorization_response)
|
|
61
|
+
|
|
62
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
63
|
+
assert_nil response.cvv_result['code']
|
|
43
64
|
end
|
|
65
|
+
|
|
66
|
+
private
|
|
67
|
+
def successful_authorization_response
|
|
68
|
+
<<-RESPONSE
|
|
69
|
+
dc_merchant_name=PayJunction - (demo)dc_merchant_address=3 W. Carrillodc_merchant_city=Santa Barbaradc_merchant_state=CAdc_merchant_zip=93101dc_merchant_phone=800-601-0230dc_device_id=1174dc_transaction_date=2007-11-28 19:22:33.791634dc_transaction_action=chargedc_approval_code=TAS193dc_response_code=00dc_response_message=APPROVAL TAS193 dc_transaction_id=3144302dc_posture=holddc_invoice_number=9f76c4e4bd66a36dc5aeb4bd7b3a02fadc_notes=--START QUICK-LINK DEBUG--
|
|
70
|
+
----Vars Received----
|
|
71
|
+
dc_expiration_month => *
|
|
72
|
+
dc_expiration_year => *
|
|
73
|
+
dc_invoice => 9f76c4e4bd66a36dc5aeb4bd7b3a02fa
|
|
74
|
+
dc_logon => pj-ql-01
|
|
75
|
+
dc_name => Cody Fauser
|
|
76
|
+
dc_number => *
|
|
77
|
+
dc_password => *
|
|
78
|
+
dc_transaction_amount => 4.00
|
|
79
|
+
dc_transaction_type => AUTHORIZATION
|
|
80
|
+
dc_verification_number => *
|
|
81
|
+
dc_version => 1.2
|
|
82
|
+
----End Vars----
|
|
44
83
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
84
|
+
----Start Response Sent----
|
|
85
|
+
dc_merchant_name=PayJunction - (demo)
|
|
86
|
+
dc_merchant_address=3 W. Carrillo
|
|
87
|
+
dc_merchant_city=Santa Barbara
|
|
88
|
+
dc_merchant_state=CA
|
|
89
|
+
dc_merchant_zip=93101
|
|
90
|
+
dc_merchant_phone=800-601-0230
|
|
91
|
+
dc_device_id=1174
|
|
92
|
+
dc_transaction_date=2007-11-28 19:22:33.791634
|
|
93
|
+
dc_transaction_action=charge
|
|
94
|
+
dc_approval_code=TAS193
|
|
95
|
+
dc_response_code=00
|
|
96
|
+
dc_response_message=APPROVAL TAS193
|
|
97
|
+
dc_transaction_id=3144302
|
|
98
|
+
dc_posture=hold
|
|
99
|
+
dc_invoice_number=9f76c4e4bd66a36dc5aeb4bd7b3a02fa
|
|
100
|
+
dc_notes=null
|
|
101
|
+
dc_card_name=cody fauser
|
|
102
|
+
dc_card_brand=VSA
|
|
103
|
+
dc_card_exp=XX/XX
|
|
104
|
+
dc_card_number=XXXX-XXXX-XXXX-3344
|
|
105
|
+
dc_card_address=
|
|
106
|
+
dc_card_city=
|
|
107
|
+
dc_card_zipcode=
|
|
108
|
+
dc_card_state=
|
|
109
|
+
dc_card_country=
|
|
110
|
+
dc_base_amount=4.00
|
|
111
|
+
dc_tax_amount=0.00
|
|
112
|
+
dc_capture_amount=4.00
|
|
113
|
+
dc_cashback_amount=0.00
|
|
114
|
+
dc_shipping_amount=0.00
|
|
115
|
+
----End Response Sent----
|
|
116
|
+
dc_card_name=cody fauserdc_card_brand=VSAdc_card_exp=XX/XXdc_card_number=XXXX-XXXX-XXXX-3344dc_card_address=dc_card_city=dc_card_zipcode=dc_card_state=dc_card_country=dc_base_amount=4.00dc_tax_amount=0.00dc_capture_amount=4.00dc_cashback_amount=0.00dc_shipping_amount=0.00
|
|
117
|
+
RESPONSE
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def failed_authorization_response
|
|
121
|
+
'dc_merchant_name=dc_merchant_address=dc_merchant_city=dc_merchant_state=dc_merchant_zip=dc_merchant_phone=dc_device_id=dc_transaction_date=dc_transaction_action=dc_approval_code=dc_response_code=FEdc_response_message=dc_number [Input is invalid. The credit card number is bad.], System [error.System], dc_transaction_id=dc_posture=dc_invoice_number=dc_notes=dc_card_name=dc_card_brand=dc_card_exp=dc_card_number=dc_card_address=dc_card_city=dc_card_zipcode=dc_card_state=dc_card_country=dc_base_amount=dc_tax_amount=dc_capture_amount=dc_cashback_amount=dc_shipping_amount='
|
|
60
122
|
end
|
|
61
123
|
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
|
2
|
+
|
|
3
|
+
class PaySecureTest < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@gateway = PaySecureGateway.new(
|
|
7
|
+
:login => 'login',
|
|
8
|
+
:password => 'password'
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
@credit_card = credit_card
|
|
12
|
+
@options = {
|
|
13
|
+
:order_id => '1000',
|
|
14
|
+
:billing_address => address,
|
|
15
|
+
:description => 'Test purchase'
|
|
16
|
+
}
|
|
17
|
+
@amount = 100
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_successful_purchase
|
|
21
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
22
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
23
|
+
assert_instance_of Response, response
|
|
24
|
+
assert_success response
|
|
25
|
+
assert_equal '2778;SimProxy 54041670', response.authorization
|
|
26
|
+
assert response.test?
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_failed_purchase
|
|
30
|
+
@gateway.expects(:ssl_post).returns(failure_response)
|
|
31
|
+
assert response = @gateway.purchase(@amount, @credit_card, @options)
|
|
32
|
+
assert_instance_of Response, response
|
|
33
|
+
assert_equal "Field value '8f796cb29a1be32af5ce12d4ca7425c2' does not match required format.", response.message
|
|
34
|
+
assert_failure response
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_avs_result_not_supported
|
|
38
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
39
|
+
|
|
40
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
41
|
+
assert_nil response.avs_result['code']
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_cvv_result_not_supported
|
|
45
|
+
@gateway.expects(:ssl_post).returns(successful_purchase_response)
|
|
46
|
+
|
|
47
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
48
|
+
assert_nil response.cvv_result['code']
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
private
|
|
52
|
+
def successful_purchase_response
|
|
53
|
+
<<-RESPONSE
|
|
54
|
+
Status: Accepted
|
|
55
|
+
SettlementDate: 2007-10-09
|
|
56
|
+
AUTHNUM: 2778
|
|
57
|
+
ErrorString: No Error
|
|
58
|
+
CardBin: 1
|
|
59
|
+
ERROR: 0
|
|
60
|
+
TransID: SimProxy 54041670
|
|
61
|
+
RESPONSE
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def failure_response
|
|
65
|
+
<<-RESPONSE
|
|
66
|
+
Status: Declined
|
|
67
|
+
ErrorString: Field value '8f796cb29a1be32af5ce12d4ca7425c2' does not match required format.
|
|
68
|
+
ERROR: 1
|
|
69
|
+
RESPONSE
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -51,14 +51,6 @@ class PayflowExpressTest < Test::Unit::TestCase
|
|
|
51
51
|
assert !gateway.test?
|
|
52
52
|
end
|
|
53
53
|
|
|
54
|
-
def test_class_certification_id
|
|
55
|
-
assert_equal '55d64dfec398cbbe66c1bf843cbad9', PayflowExpressGateway.certification_id
|
|
56
|
-
PayflowExpressGateway.certification_id = 'test'
|
|
57
|
-
assert_equal 'test', PayflowExpressGateway.certification_id
|
|
58
|
-
gateway = PayflowExpressGateway.new(:login => 'test', :password => 'test')
|
|
59
|
-
assert_equal 'test', gateway.certification_id
|
|
60
|
-
end
|
|
61
|
-
|
|
62
54
|
def test_live_redirect_url
|
|
63
55
|
Base.gateway_mode = :production
|
|
64
56
|
assert_equal 'https://www.paypal.com/cgibin/webscr?cmd=_express-checkout&token=1234567890', @gateway.redirect_url_for('1234567890')
|
|
@@ -2,49 +2,60 @@ require File.dirname(__FILE__) + '/../../test_helper'
|
|
|
2
2
|
|
|
3
3
|
class PayflowTest < Test::Unit::TestCase
|
|
4
4
|
def setup
|
|
5
|
-
Base.
|
|
5
|
+
Base.mode = :test
|
|
6
6
|
|
|
7
7
|
@gateway = PayflowGateway.new(
|
|
8
8
|
:login => 'LOGIN',
|
|
9
9
|
:password => 'PASSWORD'
|
|
10
10
|
)
|
|
11
|
-
|
|
12
|
-
@
|
|
13
|
-
|
|
14
|
-
@
|
|
15
|
-
:address2 => 'Apt 1',
|
|
16
|
-
:company => 'Widgets Inc',
|
|
17
|
-
:city => 'Ottawa',
|
|
18
|
-
:state => 'ON',
|
|
19
|
-
:zip => 'K1C2N6',
|
|
20
|
-
:country => 'Canada',
|
|
21
|
-
:phone => '(555)555-5555'
|
|
22
|
-
}
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def teardown
|
|
26
|
-
Base.gateway_mode = :test
|
|
27
|
-
PayflowGateway.certification_id = nil
|
|
11
|
+
|
|
12
|
+
@amount = 100
|
|
13
|
+
@credit_card = credit_card('4242424242424242')
|
|
14
|
+
@options = { :billing_address => address }
|
|
28
15
|
end
|
|
29
16
|
|
|
30
|
-
def
|
|
31
|
-
@
|
|
32
|
-
|
|
17
|
+
def test_successful_authorization
|
|
18
|
+
@gateway.stubs(:ssl_post).returns(successful_authorization_response)
|
|
19
|
+
|
|
20
|
+
assert response = @gateway.authorize(@amount, @credit_card, @options)
|
|
21
|
+
assert_equal "Approved", response.message
|
|
33
22
|
assert_success response
|
|
34
|
-
assert_equal '5555', response.authorization
|
|
35
23
|
assert response.test?
|
|
24
|
+
assert_equal "VUJN1A6E11D9", response.authorization
|
|
36
25
|
end
|
|
37
|
-
|
|
38
|
-
def
|
|
39
|
-
@
|
|
40
|
-
|
|
26
|
+
|
|
27
|
+
def test_failed_authorization
|
|
28
|
+
@gateway.stubs(:ssl_post).returns(failed_authorization_response)
|
|
29
|
+
|
|
30
|
+
assert response = @gateway.authorize(@amount, @credit_card, @options)
|
|
31
|
+
assert_equal "Declined", response.message
|
|
41
32
|
assert_failure response
|
|
42
33
|
assert response.test?
|
|
43
34
|
end
|
|
44
|
-
|
|
45
|
-
def
|
|
46
|
-
@
|
|
47
|
-
|
|
35
|
+
|
|
36
|
+
def test_avs_result
|
|
37
|
+
@gateway.expects(:ssl_post).returns(successful_authorization_response)
|
|
38
|
+
|
|
39
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
40
|
+
assert_equal 'Y', response.avs_result['code']
|
|
41
|
+
assert_equal 'Y', response.avs_result['street_match']
|
|
42
|
+
assert_equal 'Y', response.avs_result['postal_match']
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_partial_avs_match
|
|
46
|
+
@gateway.expects(:ssl_post).returns(successful_duplicate_response)
|
|
47
|
+
|
|
48
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
49
|
+
assert_equal 'A', response.avs_result['code']
|
|
50
|
+
assert_equal 'Y', response.avs_result['street_match']
|
|
51
|
+
assert_equal 'N', response.avs_result['postal_match']
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_cvv_result
|
|
55
|
+
@gateway.expects(:ssl_post).returns(successful_authorization_response)
|
|
56
|
+
|
|
57
|
+
response = @gateway.purchase(@amount, @credit_card, @options)
|
|
58
|
+
assert_equal 'M', response.cvv_result['code']
|
|
48
59
|
end
|
|
49
60
|
|
|
50
61
|
def test_using_test_mode
|
|
@@ -74,19 +85,6 @@ class PayflowTest < Test::Unit::TestCase
|
|
|
74
85
|
assert !gateway.test?
|
|
75
86
|
end
|
|
76
87
|
|
|
77
|
-
def test_certification_id_class_accessor
|
|
78
|
-
PayflowGateway.certification_id = 'test'
|
|
79
|
-
assert_equal 'test', PayflowGateway.certification_id
|
|
80
|
-
gateway = PayflowGateway.new(:login => 'test', :password => 'test')
|
|
81
|
-
assert_equal 'test', gateway.options[:certification_id]
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def test_passed_in_certificate_overrides_class_accessor
|
|
85
|
-
PayflowGateway.certification_id = 'test'
|
|
86
|
-
gateway = PayflowGateway.new(:login => 'test', :password => 'test', :certification_id => 'Clobber')
|
|
87
|
-
assert_equal 'Clobber', gateway.options[:certification_id]
|
|
88
|
-
end
|
|
89
|
-
|
|
90
88
|
def test_partner_class_accessor
|
|
91
89
|
assert_equal 'PayPal', PayflowGateway.partner
|
|
92
90
|
gateway = PayflowGateway.new(:login => 'test', :password => 'test')
|
|
@@ -127,7 +125,7 @@ class PayflowTest < Test::Unit::TestCase
|
|
|
127
125
|
|
|
128
126
|
def test_initial_recurring_transaction_missing_parameters
|
|
129
127
|
assert_raises ArgumentError do
|
|
130
|
-
response = @gateway.recurring(
|
|
128
|
+
response = @gateway.recurring(@amount, @credit_card,
|
|
131
129
|
:periodicity => :monthly,
|
|
132
130
|
:initial_transaction => { }
|
|
133
131
|
)
|
|
@@ -136,7 +134,7 @@ class PayflowTest < Test::Unit::TestCase
|
|
|
136
134
|
|
|
137
135
|
def test_initial_purchase_missing_amount
|
|
138
136
|
assert_raises ArgumentError do
|
|
139
|
-
response = @gateway.recurring(
|
|
137
|
+
response = @gateway.recurring(@amount, @credit_card,
|
|
140
138
|
:periodicity => :monthly,
|
|
141
139
|
:initial_transaction => { :amount => :purchase }
|
|
142
140
|
)
|
|
@@ -146,7 +144,7 @@ class PayflowTest < Test::Unit::TestCase
|
|
|
146
144
|
def test_successful_recurring_action
|
|
147
145
|
@gateway.stubs(:ssl_post).returns(successful_recurring_response)
|
|
148
146
|
|
|
149
|
-
response = @gateway.recurring(
|
|
147
|
+
response = @gateway.recurring(@amount, @credit_card, :periodicity => :monthly)
|
|
150
148
|
|
|
151
149
|
assert_instance_of PayflowResponse, response
|
|
152
150
|
assert_success response
|
|
@@ -155,14 +153,18 @@ class PayflowTest < Test::Unit::TestCase
|
|
|
155
153
|
assert_equal "R7960E739F80", response.authorization
|
|
156
154
|
end
|
|
157
155
|
|
|
158
|
-
def
|
|
159
|
-
@gateway.stubs(:ssl_post).returns(
|
|
156
|
+
def test_recurring_profile_payment_history_inquiry
|
|
157
|
+
@gateway.stubs(:ssl_post).returns(successful_payment_history_recurring_response)
|
|
160
158
|
|
|
161
|
-
|
|
162
|
-
assert_equal
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
159
|
+
response = @gateway.recurring_inquiry('RT0000000009', :history => true)
|
|
160
|
+
assert_equal 1, response.payment_history.size
|
|
161
|
+
assert_equal '1', response.payment_history.first['payment_num']
|
|
162
|
+
assert_equal '7.25', response.payment_history.first['amt']
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def test_recurring_profile_payment_history_inquiry_contains_the_proper_xml
|
|
166
|
+
request = @gateway.send( :build_recurring_request, :inquiry, nil, :profile_id => 'RT0000000009', :history => true)
|
|
167
|
+
assert_match %r(<PaymentHistory>Y</PaymentHistory), request
|
|
166
168
|
end
|
|
167
169
|
|
|
168
170
|
def test_format_issue_number
|
|
@@ -178,20 +180,16 @@ class PayflowTest < Test::Unit::TestCase
|
|
|
178
180
|
assert_equal '01', node.attributes['Value']
|
|
179
181
|
end
|
|
180
182
|
|
|
181
|
-
def
|
|
182
|
-
|
|
183
|
+
def test_duplicate_response_flag
|
|
184
|
+
@gateway.expects(:ssl_post).returns(successful_duplicate_response)
|
|
183
185
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
186
|
+
response = @gateway.authorize(@amount, @credit_card, @options)
|
|
187
|
+
assert_success response
|
|
188
|
+
assert response.params['duplicate']
|
|
187
189
|
end
|
|
188
190
|
|
|
189
|
-
def
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
assert_raises(ActiveMerchant::ConnectionError) do
|
|
193
|
-
@gateway.purchase(100, @creditcard, {})
|
|
194
|
-
end
|
|
191
|
+
def test_ensure_gateway_uses_safe_retry
|
|
192
|
+
assert @gateway.retry_safe
|
|
195
193
|
end
|
|
196
194
|
|
|
197
195
|
private
|
|
@@ -201,9 +199,30 @@ class PayflowTest < Test::Unit::TestCase
|
|
|
201
199
|
<Result>0</Result>
|
|
202
200
|
<Message>Approved</Message>
|
|
203
201
|
<Partner>paypal</Partner>
|
|
204
|
-
<
|
|
202
|
+
<RPRef>R7960E739F80</RPRef>
|
|
203
|
+
<Vendor>ActiveMerchant</Vendor>
|
|
204
|
+
<ProfileId>RT0000000009</ProfileId>
|
|
205
|
+
</ResponseData>
|
|
206
|
+
XML
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
def successful_payment_history_recurring_response
|
|
210
|
+
<<-XML
|
|
211
|
+
<ResponseData>
|
|
212
|
+
<Result>0</Result>
|
|
213
|
+
<Partner>paypal</Partner>
|
|
214
|
+
<RPRef>R7960E739F80</RPRef>
|
|
205
215
|
<Vendor>ActiveMerchant</Vendor>
|
|
206
216
|
<ProfileId>RT0000000009</ProfileId>
|
|
217
|
+
<RPPaymentResult>
|
|
218
|
+
<PaymentNum>1</PaymentNum>
|
|
219
|
+
<PNRef>V18A0D3048AF</PNRef>
|
|
220
|
+
<TransTime>12-Jan-08 04:30 AM</TransTime>
|
|
221
|
+
<Result>0</Result>
|
|
222
|
+
<Tender>C</Tender>
|
|
223
|
+
<Amt Currency="7.25"></Amt>
|
|
224
|
+
<TransState>6</TransState>
|
|
225
|
+
</RPPaymentResult>
|
|
207
226
|
</ResponseData>
|
|
208
227
|
XML
|
|
209
228
|
end
|
|
@@ -227,4 +246,56 @@ class PayflowTest < Test::Unit::TestCase
|
|
|
227
246
|
</ResponseData>
|
|
228
247
|
XML
|
|
229
248
|
end
|
|
249
|
+
|
|
250
|
+
def failed_authorization_response
|
|
251
|
+
<<-XML
|
|
252
|
+
<ResponseData>
|
|
253
|
+
<Result>12</Result>
|
|
254
|
+
<Message>Declined</Message>
|
|
255
|
+
<Partner>verisign</Partner>
|
|
256
|
+
<HostCode>000</HostCode>
|
|
257
|
+
<ResponseText>AP</ResponseText>
|
|
258
|
+
<PnRef>VUJN1A6E11D9</PnRef>
|
|
259
|
+
<IavsResult>N</IavsResult>
|
|
260
|
+
<ZipMatch>Match</ZipMatch>
|
|
261
|
+
<AuthCode>094016</AuthCode>
|
|
262
|
+
<Vendor>ActiveMerchant</Vendor>
|
|
263
|
+
<AvsResult>Y</AvsResult>
|
|
264
|
+
<StreetMatch>Match</StreetMatch>
|
|
265
|
+
<CvResult>Match</CvResult>
|
|
266
|
+
</ResponseData>
|
|
267
|
+
XML
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
def successful_duplicate_response
|
|
271
|
+
<<-XML
|
|
272
|
+
<?xml version="1.0"?>
|
|
273
|
+
<XMLPayResponse xmlns="http://www.verisign.com/XMLPay">
|
|
274
|
+
<ResponseData>
|
|
275
|
+
<Vendor>ActiveMerchant</Vendor>
|
|
276
|
+
<Partner>paypal</Partner>
|
|
277
|
+
<TransactionResults>
|
|
278
|
+
<TransactionResult Duplicate="true">
|
|
279
|
+
<Result>0</Result>
|
|
280
|
+
<ProcessorResult>
|
|
281
|
+
<AVSResult>A</AVSResult>
|
|
282
|
+
<CVResult>M</CVResult>
|
|
283
|
+
<HostCode>A</HostCode>
|
|
284
|
+
</ProcessorResult>
|
|
285
|
+
<IAVSResult>N</IAVSResult>
|
|
286
|
+
<AVSResult>
|
|
287
|
+
<StreetMatch>Match</StreetMatch>
|
|
288
|
+
<ZipMatch>No Match</ZipMatch>
|
|
289
|
+
</AVSResult>
|
|
290
|
+
<CVResult>Match</CVResult>
|
|
291
|
+
<Message>Approved</Message>
|
|
292
|
+
<PNRef>V18A0CBB04CF</PNRef>
|
|
293
|
+
<AuthCode>692PNI</AuthCode>
|
|
294
|
+
<ExtData Name="DATE_TO_SETTLE" Value="2007-11-28 10:53:50"/>
|
|
295
|
+
</TransactionResult>
|
|
296
|
+
</TransactionResults>
|
|
297
|
+
</ResponseData>
|
|
298
|
+
</XMLPayResponse>
|
|
299
|
+
XML
|
|
300
|
+
end
|
|
230
301
|
end
|