activemerchant-est 1.4.2.5
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 +480 -0
- data/CONTRIBUTORS +126 -0
- data/MIT-LICENSE +20 -0
- data/README +136 -0
- data/Rakefile +154 -0
- data/gem-public_cert.pem +20 -0
- data/init.rb +3 -0
- data/lib/active_merchant.rb +66 -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 +34 -0
- data/lib/active_merchant/billing/gateway.rb +158 -0
- data/lib/active_merchant/billing/gateways.rb +18 -0
- data/lib/active_merchant/billing/gateways/authorize_net.rb +657 -0
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +736 -0
- data/lib/active_merchant/billing/gateways/beanstream.rb +102 -0
- data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +233 -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/elavon.rb +134 -0
- data/lib/active_merchant/billing/gateways/eway.rb +277 -0
- data/lib/active_merchant/billing/gateways/exact.rb +222 -0
- data/lib/active_merchant/billing/gateways/first_pay.rb +172 -0
- data/lib/active_merchant/billing/gateways/instapay.rb +164 -0
- data/lib/active_merchant/billing/gateways/jetpay.rb +270 -0
- data/lib/active_merchant/billing/gateways/linkpoint.rb +449 -0
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +154 -0
- data/lib/active_merchant/billing/gateways/merchant_ware.rb +283 -0
- data/lib/active_merchant/billing/gateways/modern_payments.rb +36 -0
- data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +220 -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/ogone.rb +279 -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.rb +236 -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_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.rb +121 -0
- data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +326 -0
- data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +38 -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/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.rb +146 -0
- data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +88 -0
- data/lib/active_merchant/billing/gateways/sage/sage_core.rb +116 -0
- data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +97 -0
- data/lib/active_merchant/billing/gateways/sage_pay.rb +308 -0
- data/lib/active_merchant/billing/gateways/sallie_mae.rb +144 -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 +452 -0
- data/lib/active_merchant/billing/gateways/smart_ps.rb +265 -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 +189 -0
- data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
- data/lib/active_merchant/billing/integrations.rb +28 -0
- data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
- data/lib/active_merchant/billing/integrations/adyen.rb +29 -0
- data/lib/active_merchant/billing/integrations/adyen/helper.rb +103 -0
- data/lib/active_merchant/billing/integrations/adyen/notification.rb +91 -0
- data/lib/active_merchant/billing/integrations/adyen/return.rb +52 -0
- data/lib/active_merchant/billing/integrations/bogus.rb +23 -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/chronopay.rb +23 -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/gestpay.rb +25 -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/helper.rb +93 -0
- data/lib/active_merchant/billing/integrations/hi_trust.rb +27 -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/nochex.rb +88 -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/notification.rb +68 -0
- data/lib/active_merchant/billing/integrations/paypal.rb +39 -0
- data/lib/active_merchant/billing/integrations/paypal/helper.rb +119 -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/pizza.rb +116 -0
- data/lib/active_merchant/billing/integrations/pizza/helper.rb +117 -0
- data/lib/active_merchant/billing/integrations/pizza/notification.rb +101 -0
- data/lib/active_merchant/billing/integrations/quickpay.rb +17 -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/return.rb +35 -0
- data/lib/active_merchant/billing/integrations/sampo_est.rb +101 -0
- data/lib/active_merchant/billing/integrations/sampo_est/helper.rb +17 -0
- data/lib/active_merchant/billing/integrations/sampo_est/notification.rb +12 -0
- data/lib/active_merchant/billing/integrations/seb_est.rb +100 -0
- data/lib/active_merchant/billing/integrations/seb_est/helper.rb +16 -0
- data/lib/active_merchant/billing/integrations/seb_est/notification.rb +12 -0
- data/lib/active_merchant/billing/integrations/swedbank_est.rb +99 -0
- data/lib/active_merchant/billing/integrations/swedbank_est/helper.rb +20 -0
- data/lib/active_merchant/billing/integrations/swedbank_est/notification.rb +12 -0
- data/lib/active_merchant/billing/integrations/two_checkout.rb +23 -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/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/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 +355 -0
- data/test/remote/gateways/remote_authorize_net_cim_test.rb +460 -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_elavon_test.rb +66 -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_first_pay_test.rb +87 -0
- data/test/remote/gateways/remote_instapay_test.rb +61 -0
- data/test/remote/gateways/remote_jetpay_test.rb +103 -0
- data/test/remote/gateways/remote_linkpoint_test.rb +121 -0
- data/test/remote/gateways/remote_merchant_e_solutions_test.rb +173 -0
- data/test/remote/gateways/remote_merchant_ware_test.rb +113 -0
- data/test/remote/gateways/remote_modern_payments_cim_test.rb +58 -0
- data/test/remote/gateways/remote_modern_payments_test.rb +57 -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_ogone_test.rb +115 -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 +191 -0
- data/test/remote/gateways/remote_plugnpay_test.rb +72 -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_pay_test.rb +219 -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_sallie_mae_test.rb +51 -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 +179 -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 +32 -0
- data/test/unit/gateways/authorize_net_cim_test.rb +676 -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/elavon_test.rb +139 -0
- data/test/unit/gateways/eway_test.rb +118 -0
- data/test/unit/gateways/exact_test.rb +156 -0
- data/test/unit/gateways/first_pay_test.rb +125 -0
- data/test/unit/gateways/gateway_test.rb +48 -0
- data/test/unit/gateways/instapay_test.rb +102 -0
- data/test/unit/gateways/jetpay_test.rb +185 -0
- data/test/unit/gateways/linkpoint_test.rb +197 -0
- data/test/unit/gateways/merchant_e_solutions_test.rb +169 -0
- data/test/unit/gateways/merchant_ware_test.rb +188 -0
- data/test/unit/gateways/modern_payments_cim_test.rb +162 -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/ogone_test.rb +319 -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 +569 -0
- data/test/unit/gateways/plugnpay_test.rb +86 -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 +196 -0
- data/test/unit/gateways/sage_pay_test.rb +139 -0
- data/test/unit/gateways/sage_virtual_check_test.rb +71 -0
- data/test/unit/gateways/sallie_mae_test.rb +53 -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 +213 -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/adyen_module_test.rb +9 -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/adyen_helper_test.rb +35 -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 +171 -0
- data/test/unit/integrations/helpers/quickpay_helper_test.rb +40 -0
- data/test/unit/integrations/helpers/seb_est_helper_test.rb +69 -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/adyen_notification_test.rb +25 -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/seb_est_notification_test.rb +87 -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/adyen_return_test.rb +26 -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/sampo_est_module_test.rb +9 -0
- data/test/unit/integrations/seb_est_module_test.rb +9 -0
- data/test/unit/integrations/swedbank_est_module_test.rb +9 -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 +392 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
require 'base64'
|
|
2
|
+
require 'stringio'
|
|
3
|
+
require 'zlib'
|
|
4
|
+
require 'openssl'
|
|
5
|
+
|
|
6
|
+
module ActiveMerchant #:nodoc:
|
|
7
|
+
module Billing #:nodoc:
|
|
8
|
+
module Integrations #:nodoc:
|
|
9
|
+
module Adyen
|
|
10
|
+
class Helper < ActiveMerchant::Billing::Integrations::Helper
|
|
11
|
+
|
|
12
|
+
# the values of these fields are concatenated, HMAC digested, Base64 encoded, and sent along with the POST data to make hoodwinkery difficult
|
|
13
|
+
SIGNATURE_FIELDS = [
|
|
14
|
+
:paymentAmount,
|
|
15
|
+
:currencyCode,
|
|
16
|
+
:shipBeforeDate,
|
|
17
|
+
:merchantReference,
|
|
18
|
+
:skinCode,
|
|
19
|
+
:merchantAccount,
|
|
20
|
+
:sessionValidity,
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
# same as above but for the customer's street address, which is to be separately hashed, as specified by Adyen
|
|
24
|
+
# country should be ISO 3166-1 alpha-2 format, see http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 )
|
|
25
|
+
ADDRESS_SIGNATURE_FIELDS = %w( billingAddress.street billingAddress.houseNumberOrName billingAddress.city billingAddress.postalCode billingAddress.stateOrProvince billingAddress.country )
|
|
26
|
+
|
|
27
|
+
def initialize(order, account, options = {})
|
|
28
|
+
super
|
|
29
|
+
add_field('currencyCode', 'USD')
|
|
30
|
+
add_field('shipBeforeDate', Date.today + 10)
|
|
31
|
+
add_field('skinCode', 'notavalidskincode')
|
|
32
|
+
add_field('shopperLocale', 'en_GB')
|
|
33
|
+
add_field('orderData', 'orderData')
|
|
34
|
+
add_field('sessionValidity', "#{ (Date.today + 10).to_s }T11:00:00Z" )
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# orderData is a string of HTML which is displayed along with the CC form
|
|
38
|
+
# it is GZipped, Base64 encoded, and sent along with the POST data
|
|
39
|
+
def set_order_data(value)
|
|
40
|
+
str = StringIO.new
|
|
41
|
+
gz = Zlib::GzipWriter.new str
|
|
42
|
+
gz.write value
|
|
43
|
+
gz.close
|
|
44
|
+
@order_data = Base64.encode64(str.string()).gsub("\n","")
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def shared_secret(value)
|
|
48
|
+
@shared_secret = value
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def form_fields
|
|
52
|
+
@fields.merge!('merchantSig' => generate_signature)
|
|
53
|
+
@fields.merge!('billingAddressSig' => generate_address_signature) if @billing_address
|
|
54
|
+
@fields.merge!('orderData' => @order_data) if @order_data
|
|
55
|
+
@fields
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def generate_signature_string
|
|
59
|
+
SIGNATURE_FIELDS.map {|key| @fields[key.to_s]} * ""
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def generate_signature
|
|
63
|
+
digest = OpenSSL::HMAC.digest(OpenSSL::Digest::SHA1.new, @shared_secret, generate_signature_string)
|
|
64
|
+
return Base64.encode64(digest).strip
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def generate_address_signature_string
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Replace with the real mapping
|
|
71
|
+
mapping :account, 'merchantAccount'
|
|
72
|
+
mapping :amount, 'paymentAmount'
|
|
73
|
+
mapping :order, 'merchantReference'
|
|
74
|
+
|
|
75
|
+
mapping :currencyCode, 'currencyCode'
|
|
76
|
+
mapping :shipBeforeDate, 'shipBeforeDate'
|
|
77
|
+
mapping :skinCode, 'skinCode'
|
|
78
|
+
mapping :shopperLocale, 'shopperLocale'
|
|
79
|
+
mapping :orderData, 'orderData'
|
|
80
|
+
mapping :sessionValidity, 'sessionValidity'
|
|
81
|
+
|
|
82
|
+
# FIXME: shopperEmail seems to be a signature field
|
|
83
|
+
# mapping :customer, :email => 'shopperEmail'
|
|
84
|
+
|
|
85
|
+
mapping :billing_address, :city => 'billingAddress.city',
|
|
86
|
+
:address1 => 'billingAddress.street',
|
|
87
|
+
#:address2 => 'billingAddress.????',
|
|
88
|
+
:state => 'billingAddress.stateOrProvince',
|
|
89
|
+
:zip => 'billingAddress.postalCode',
|
|
90
|
+
:country => 'billingAddress.country'
|
|
91
|
+
|
|
92
|
+
mapping :notify_url, ''
|
|
93
|
+
mapping :return_url, ''
|
|
94
|
+
mapping :cancel_return_url, ''
|
|
95
|
+
mapping :description, ''
|
|
96
|
+
mapping :tax, ''
|
|
97
|
+
mapping :shipping, ''
|
|
98
|
+
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
require 'net/http'
|
|
2
|
+
|
|
3
|
+
module ActiveMerchant #:nodoc:
|
|
4
|
+
module Billing #:nodoc:
|
|
5
|
+
module Integrations #:nodoc:
|
|
6
|
+
module Adyen
|
|
7
|
+
class Notification < ActiveMerchant::Billing::Integrations::Notification
|
|
8
|
+
def complete?
|
|
9
|
+
((params['eventCode'] == 'AUTHORISATION') and (params['success'] == 'true'))
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def event_code
|
|
13
|
+
params['eventCode']
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def item_id
|
|
17
|
+
params['merchantReference']
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def transaction_id
|
|
21
|
+
params['pspReference']
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# When was this payment received by the client.
|
|
25
|
+
def received_at
|
|
26
|
+
params['eventDate']
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def payer_email
|
|
30
|
+
''#params['']
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def receiver_email
|
|
34
|
+
''#params['']
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def security_key
|
|
38
|
+
''#params['']
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# the money amount we received in X.2 decimal.
|
|
42
|
+
def gross
|
|
43
|
+
params['value']
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Was this a test transaction?
|
|
47
|
+
def test?
|
|
48
|
+
params['live'] == 'false'
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def status
|
|
52
|
+
params['success']
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def currency
|
|
56
|
+
params['currency']
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Acknowledge the transaction to Adyen. This method has to be called after a new
|
|
60
|
+
# apc arrives. Adyen will verify that all the information we received are correct and will return a
|
|
61
|
+
# ok or a fail.
|
|
62
|
+
#
|
|
63
|
+
# Example:
|
|
64
|
+
#
|
|
65
|
+
# def ipn
|
|
66
|
+
# notify = AdyenNotification.new(request.raw_post)
|
|
67
|
+
#
|
|
68
|
+
# if notify.acknowledge
|
|
69
|
+
# ... process order ... if notify.complete?
|
|
70
|
+
# else
|
|
71
|
+
# ... log possible hacking attempt ...
|
|
72
|
+
# end
|
|
73
|
+
def acknowledge
|
|
74
|
+
# this is a stub because Adyen does not support this feature, as of 2009-10-12
|
|
75
|
+
true
|
|
76
|
+
end
|
|
77
|
+
private
|
|
78
|
+
|
|
79
|
+
# Take the posted data and move the relevant data into a hash
|
|
80
|
+
def parse(post)
|
|
81
|
+
@raw = post
|
|
82
|
+
for line in post.split('&')
|
|
83
|
+
key, value = *line.scan( %r{^(\w+)\=(.*)$} ).flatten
|
|
84
|
+
@params[key] = value
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require 'base64'
|
|
2
|
+
require 'stringio'
|
|
3
|
+
require 'zlib'
|
|
4
|
+
require 'openssl'
|
|
5
|
+
|
|
6
|
+
module ActiveMerchant #:nodoc:
|
|
7
|
+
module Billing #:nodoc:
|
|
8
|
+
module Integrations #:nodoc:
|
|
9
|
+
module Adyen
|
|
10
|
+
class Return < ActiveMerchant::Billing::Integrations::Return
|
|
11
|
+
|
|
12
|
+
attr_accessor :shared_secret
|
|
13
|
+
|
|
14
|
+
# for verifying the signature of the URL parameters returned by Adyen after the payment process
|
|
15
|
+
PAYMENT_RESULT_SIGNATURE_FIELDS = [
|
|
16
|
+
:authResult,
|
|
17
|
+
:pspReference,
|
|
18
|
+
:merchantReference,
|
|
19
|
+
:skinCode
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
def generate_signature_string
|
|
23
|
+
::ActiveMerchant::Billing::Integrations::Adyen::Return::PAYMENT_RESULT_SIGNATURE_FIELDS.map {|key| @params[key.to_s]} * ""
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def generate_signature
|
|
27
|
+
digest = OpenSSL::HMAC.digest(OpenSSL::Digest::SHA1.new, @shared_secret, generate_signature_string)
|
|
28
|
+
return Base64.encode64(digest).strip
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def signature_is_valid?
|
|
32
|
+
generate_signature.to_s == params['merchantSig'].to_s
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def payment_authorized?
|
|
36
|
+
params['authResult'] == 'AUTHORISED'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def success?
|
|
40
|
+
signature_is_valid? and payment_authorized?
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def message
|
|
44
|
+
params['authResult']
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
|
|
2
|
+
module ActiveMerchant #:nodoc:
|
|
3
|
+
module Billing #:nodoc:
|
|
4
|
+
module Integrations #:nodoc:
|
|
5
|
+
module Bogus
|
|
6
|
+
autoload :Return, 'active_merchant/billing/integrations/bogus/return.rb'
|
|
7
|
+
autoload :Helper, 'active_merchant/billing/integrations/bogus/helper.rb'
|
|
8
|
+
autoload :Notification, 'active_merchant/billing/integrations/bogus/notification.rb'
|
|
9
|
+
|
|
10
|
+
mattr_accessor :service_url
|
|
11
|
+
self.service_url = 'http://www.bogus.com'
|
|
12
|
+
|
|
13
|
+
def self.notification(post)
|
|
14
|
+
Notification.new(post)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.return(query_string)
|
|
18
|
+
Return.new(query_string)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
module Bogus
|
|
5
|
+
class Helper < ActiveMerchant::Billing::Integrations::Helper
|
|
6
|
+
mapping :account, 'account'
|
|
7
|
+
mapping :order, 'order'
|
|
8
|
+
mapping :amount, 'amount'
|
|
9
|
+
mapping :currency, 'currency'
|
|
10
|
+
mapping :customer, :first_name => 'first_name',
|
|
11
|
+
:last_name => 'last_name'
|
|
12
|
+
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
|
|
2
|
+
module ActiveMerchant #:nodoc:
|
|
3
|
+
module Billing #:nodoc:
|
|
4
|
+
module Integrations #:nodoc:
|
|
5
|
+
module Chronopay
|
|
6
|
+
autoload :Return, 'active_merchant/billing/integrations/chronopay/return.rb'
|
|
7
|
+
autoload :Helper, 'active_merchant/billing/integrations/chronopay/helper.rb'
|
|
8
|
+
autoload :Notification, 'active_merchant/billing/integrations/chronopay/notification.rb'
|
|
9
|
+
|
|
10
|
+
mattr_accessor :service_url
|
|
11
|
+
self.service_url = 'https://secure.chronopay.com/index_shop.cgi'
|
|
12
|
+
|
|
13
|
+
def self.notification(post)
|
|
14
|
+
Notification.new(post)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.return(query_string)
|
|
18
|
+
Return.new(query_string)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
module Chronopay
|
|
5
|
+
class Helper < ActiveMerchant::Billing::Integrations::Helper
|
|
6
|
+
self.country_format = :alpha3
|
|
7
|
+
|
|
8
|
+
def initialize(order, account, options = {})
|
|
9
|
+
super
|
|
10
|
+
add_field('cb_type', 'p')
|
|
11
|
+
add_field('language', 'EN')
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# product_id
|
|
15
|
+
mapping :account, 'product_id'
|
|
16
|
+
# product_name
|
|
17
|
+
mapping :invoice, 'product_name'
|
|
18
|
+
# product_price
|
|
19
|
+
mapping :amount, 'product_price'
|
|
20
|
+
# product_price_currency
|
|
21
|
+
mapping :currency, 'product_price_currency'
|
|
22
|
+
|
|
23
|
+
# f_name
|
|
24
|
+
# s_name
|
|
25
|
+
# email
|
|
26
|
+
mapping :customer, :first_name => 'f_name',
|
|
27
|
+
:last_name => 's_name',
|
|
28
|
+
:phone => 'phone',
|
|
29
|
+
:email => 'email'
|
|
30
|
+
|
|
31
|
+
# city
|
|
32
|
+
# street
|
|
33
|
+
# state
|
|
34
|
+
# zip
|
|
35
|
+
# country - The country must be a 3 digit country code
|
|
36
|
+
# phone
|
|
37
|
+
|
|
38
|
+
mapping :billing_address, :city => 'city',
|
|
39
|
+
:address1 => 'street',
|
|
40
|
+
:state => 'state',
|
|
41
|
+
:zip => 'zip',
|
|
42
|
+
:country => 'country'
|
|
43
|
+
|
|
44
|
+
def billing_address(mapping = {})
|
|
45
|
+
# Gets the country code in the appropriate format or returns what we were given
|
|
46
|
+
# The appropriate format for Chronopay is the alpha 3 country code
|
|
47
|
+
country_code = lookup_country_code(mapping.delete(:country))
|
|
48
|
+
add_field(mappings[:billing_address][:country], country_code)
|
|
49
|
+
|
|
50
|
+
countries_with_supported_states = ['USA', 'CAN']
|
|
51
|
+
if !countries_with_supported_states.include?(country_code)
|
|
52
|
+
mapping.delete(:state)
|
|
53
|
+
add_field(mappings[:billing_address][:state], 'XX')
|
|
54
|
+
end
|
|
55
|
+
mapping.each do |k, v|
|
|
56
|
+
field = mappings[:billing_address][k]
|
|
57
|
+
add_field(field, v) unless field.nil?
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# card_no
|
|
62
|
+
# exp_month
|
|
63
|
+
# exp_year
|
|
64
|
+
mapping :credit_card, :number => 'card_no',
|
|
65
|
+
:expiry_month => 'exp_month',
|
|
66
|
+
:expiry_year => 'exp_year'
|
|
67
|
+
|
|
68
|
+
# cb_url
|
|
69
|
+
mapping :notify_url, 'cb_url'
|
|
70
|
+
|
|
71
|
+
# cs1
|
|
72
|
+
mapping :order, 'cs1'
|
|
73
|
+
|
|
74
|
+
# cs2
|
|
75
|
+
# cs3
|
|
76
|
+
# decline_url
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
module Chronopay
|
|
5
|
+
class Notification < ActiveMerchant::Billing::Integrations::Notification
|
|
6
|
+
def complete?
|
|
7
|
+
status == 'Completed'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# Status of transaction. List of possible values:
|
|
11
|
+
# <tt>onetime – one time payment has been made, no repayment required;</tt>::
|
|
12
|
+
# <tt>initial – first payment has been made, repayment required in corresponding period;</tt>::
|
|
13
|
+
# <tt>decline – charge request has been rejected;</tt>::
|
|
14
|
+
# <tt>rebill – repayment has been made together with initial transaction;</ttt>::
|
|
15
|
+
# <tt>cancel – repayments has been disabled;</tt>::
|
|
16
|
+
# <tt>expire – customer’s access to restricted zone membership has been expired;</tt>::
|
|
17
|
+
# <tt>refund – request to refund has been received;</tt>::
|
|
18
|
+
# <tt>chargeback – request to chargeback has been received.</tt>::
|
|
19
|
+
#
|
|
20
|
+
# This implementation of Chronopay does not support subscriptions.
|
|
21
|
+
# The status codes used are matched to the status codes that Paypal
|
|
22
|
+
# sends. See Paypal::Notification#status for more details
|
|
23
|
+
def status
|
|
24
|
+
case params['transaction_type']
|
|
25
|
+
when 'onetime'
|
|
26
|
+
'Completed'
|
|
27
|
+
when 'refund'
|
|
28
|
+
'Refunded'
|
|
29
|
+
when 'chargeback'
|
|
30
|
+
'Reversed'
|
|
31
|
+
else
|
|
32
|
+
'Failed'
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Unique ID of transaction
|
|
37
|
+
def transaction_id
|
|
38
|
+
params['transaction_id']
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Unique ID of customer
|
|
42
|
+
def customer_id
|
|
43
|
+
params['customer_id']
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Unique ID of Merchant’s web-site
|
|
47
|
+
def site_id
|
|
48
|
+
params['site_id']
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# ID of a product that was purchased
|
|
52
|
+
def product_id
|
|
53
|
+
params['product_id']
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Language
|
|
57
|
+
def language
|
|
58
|
+
params['language']
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def received_at
|
|
62
|
+
Time.parse("#{date} #{time}") unless date.blank? || time.blank?
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Date of transaction in MM/DD/YYYY format
|
|
66
|
+
def date
|
|
67
|
+
params['date']
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Time of transaction in HH:MM:SS format
|
|
71
|
+
def time
|
|
72
|
+
params['time']
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# The customer's full name
|
|
76
|
+
def name
|
|
77
|
+
params['name']
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# The customer's email address
|
|
81
|
+
def email
|
|
82
|
+
params['email']
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# The customer's street address
|
|
86
|
+
def street
|
|
87
|
+
params['street']
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# The customer's country - 3 digit country code
|
|
91
|
+
def country
|
|
92
|
+
params['country']
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# The customer's city
|
|
96
|
+
def city
|
|
97
|
+
params['city']
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# The customer's zip
|
|
101
|
+
def zip
|
|
102
|
+
params['zip']
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# The customer's state. Only useful for US Customers
|
|
106
|
+
def state
|
|
107
|
+
params['state']
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Customer’s login for restricted access zone of Merchant’s Web-site
|
|
111
|
+
def username
|
|
112
|
+
params['username']
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# Customer's password for restricted access zone of Merchant’s Web-site, as chosen
|
|
116
|
+
def password
|
|
117
|
+
params['password']
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# The item id passed in the first custom parameter
|
|
121
|
+
def item_id
|
|
122
|
+
params['cs1']
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# Additional parameter
|
|
126
|
+
def custom2
|
|
127
|
+
params['cs2']
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
# Additional parameter
|
|
131
|
+
def custom3
|
|
132
|
+
params['cs3']
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# The currency the purchase was made in
|
|
136
|
+
def currency
|
|
137
|
+
params['currency']
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# the money amount we received in X.2 decimal.
|
|
141
|
+
def gross
|
|
142
|
+
params['total']
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def test?
|
|
146
|
+
date.blank? && time.blank? && transaction_id.blank?
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def acknowledge
|
|
150
|
+
true
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|