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,17 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
module Quickpay
|
|
5
|
+
autoload :Helper, File.dirname(__FILE__) + '/quickpay/helper.rb'
|
|
6
|
+
autoload :Notification, File.dirname(__FILE__) + '/quickpay/notification.rb'
|
|
7
|
+
|
|
8
|
+
mattr_accessor :service_url
|
|
9
|
+
self.service_url = 'https://secure.quickpay.dk/form/'
|
|
10
|
+
|
|
11
|
+
def self.notification(post)
|
|
12
|
+
Notification.new(post)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
module Quickpay
|
|
5
|
+
class Helper < ActiveMerchant::Billing::Integrations::Helper
|
|
6
|
+
|
|
7
|
+
def initialize(order, account, options = {})
|
|
8
|
+
super
|
|
9
|
+
add_field('protocol', '3')
|
|
10
|
+
add_field('msgtype', 'authorize')
|
|
11
|
+
add_field('language', 'da')
|
|
12
|
+
add_field('autocapture', 0)
|
|
13
|
+
add_field('testmode', 0)
|
|
14
|
+
add_field('ordernumber', format_order_number(order))
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def md5secret(value)
|
|
18
|
+
@md5secret = value
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def form_fields
|
|
22
|
+
@fields.merge('md5check' => generate_md5check)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def generate_md5string
|
|
26
|
+
MD5_CHECK_FIELDS.map {|key| @fields[key.to_s]} * "" + @md5secret
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def generate_md5check
|
|
30
|
+
Digest::MD5.hexdigest(generate_md5string)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Limited to 20 digits max
|
|
34
|
+
def format_order_number(number)
|
|
35
|
+
number.to_s.gsub(/[^\w_]/, '').rjust(4, "0")[0...20]
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
MD5_CHECK_FIELDS = [
|
|
39
|
+
:protocol, :msgtype, :merchant, :language, :ordernumber,
|
|
40
|
+
:amount, :currency, :continueurl, :cancelurl, :callbackurl,
|
|
41
|
+
:autocapture, :cardtypelock, :description, :ipaddress, :testmode
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
mapping :protocol, 'protocol'
|
|
45
|
+
mapping :msgtype, 'msgtype'
|
|
46
|
+
mapping :account, 'merchant'
|
|
47
|
+
mapping :language, 'language'
|
|
48
|
+
mapping :amount, 'amount'
|
|
49
|
+
mapping :currency, 'currency'
|
|
50
|
+
|
|
51
|
+
mapping :return_url, 'continueurl'
|
|
52
|
+
mapping :cancel_return_url, 'cancelurl'
|
|
53
|
+
mapping :notify_url, 'callbackurl'
|
|
54
|
+
|
|
55
|
+
mapping :autocapture, 'autocapture'
|
|
56
|
+
mapping :cardtypelock, 'cardtypelock'
|
|
57
|
+
|
|
58
|
+
mapping :description, 'description'
|
|
59
|
+
mapping :ipaddress, 'ipaddress'
|
|
60
|
+
mapping :testmode, 'testmode'
|
|
61
|
+
|
|
62
|
+
mapping :md5secret, 'md5secret'
|
|
63
|
+
|
|
64
|
+
mapping :customer, ''
|
|
65
|
+
mapping :billing_address, ''
|
|
66
|
+
mapping :tax, ''
|
|
67
|
+
mapping :shipping, ''
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
require 'net/http'
|
|
2
|
+
|
|
3
|
+
module ActiveMerchant #:nodoc:
|
|
4
|
+
module Billing #:nodoc:
|
|
5
|
+
module Integrations #:nodoc:
|
|
6
|
+
module Quickpay
|
|
7
|
+
class Notification < ActiveMerchant::Billing::Integrations::Notification
|
|
8
|
+
def complete?
|
|
9
|
+
status == '000'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def item_id
|
|
13
|
+
params['ordernumber']
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def transaction_id
|
|
17
|
+
params['transaction']
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def received_at
|
|
21
|
+
Time.local(*params['time'].scan(/../))
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def gross
|
|
25
|
+
"%.2f" % (gross_cents / 100.0)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def gross_cents
|
|
29
|
+
params['amount'].to_i
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test?
|
|
33
|
+
params['testmode'] == 'Yes'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def status
|
|
37
|
+
params['qpstat']
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def currency
|
|
41
|
+
params['currency']
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Provide access to raw fields from quickpay
|
|
45
|
+
%w(msgtype ordernumber state chstat chstatmsg qpstat qpstatmsg merchant merchantemail cardtype cardnumber).each do |attr|
|
|
46
|
+
define_method(attr) do
|
|
47
|
+
params[attr]
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
MD5_CHECK_FIELDS = [
|
|
52
|
+
:msgtype, :ordernumber, :amount, :currency, :time, :state,
|
|
53
|
+
:chstat, :chstatmsg, :qpstat, :qpstatmsg, :merchant, :merchantemail,
|
|
54
|
+
:transaction, :cardtype, :cardnumber, :testmode
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
def generate_md5string
|
|
58
|
+
MD5_CHECK_FIELDS.map { |key| params[key.to_s] } * "" + @options[:md5secret]
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def generate_md5check
|
|
62
|
+
Digest::MD5.hexdigest(generate_md5string)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Quickpay doesn't do acknowledgements of callback notifications
|
|
66
|
+
# Instead it uses and MD5 hash of all parameters
|
|
67
|
+
def acknowledge
|
|
68
|
+
generate_md5check == params['md5check']
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
class Return
|
|
5
|
+
attr_accessor :params
|
|
6
|
+
|
|
7
|
+
def initialize(query_string)
|
|
8
|
+
@params = parse(query_string)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Successful by default. Overridden in the child class
|
|
12
|
+
def success?
|
|
13
|
+
true
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def message
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def parse(query_string)
|
|
21
|
+
return {} if query_string.blank?
|
|
22
|
+
|
|
23
|
+
query_string.split('&').inject({}) do |memo, chunk|
|
|
24
|
+
next if chunk.empty?
|
|
25
|
+
key, value = chunk.split('=', 2)
|
|
26
|
+
next if key.empty?
|
|
27
|
+
value = value.nil? ? nil : CGI.unescape(value)
|
|
28
|
+
memo[CGI.unescape(key)] = value
|
|
29
|
+
memo
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/sampo_est/helper.rb'
|
|
2
|
+
require File.dirname(__FILE__) + '/sampo_est/notification.rb'
|
|
3
|
+
|
|
4
|
+
module ActiveMerchant #:nodoc:
|
|
5
|
+
module Billing #:nodoc:
|
|
6
|
+
module Integrations #:nodoc:
|
|
7
|
+
|
|
8
|
+
# This module implements bank payments through
|
|
9
|
+
# AS Sampo Pank (http://www.sampopank.ee/en/index.html) using
|
|
10
|
+
# their bank link service (see http://www.sampopank.ee/en/25672.html).
|
|
11
|
+
#
|
|
12
|
+
# Configuration:
|
|
13
|
+
# ActiveMerchant::Billing::Integrations::SampoEst.bank_certificate = File.read('cert')
|
|
14
|
+
# ActiveMerchant::Billing::Integrations::SampoEst.test_bank_certificate = File.read('cert')
|
|
15
|
+
# ActiveMerchant::Billing::Integrations::SampoEst.private_key = File.read('keyfile')
|
|
16
|
+
# ActiveMerchant::Billing::Integrations::SampoEst.test_private_key = File.read('keyfile')
|
|
17
|
+
# ActiveMerchant::Billing::Integrations::SampoEst.test_url = 'https://test-gateway.tld/gw'
|
|
18
|
+
# ActiveMerchant::Billing::Integrations::SampoEst.production_url = 'https://production-gateway.tld/gw/'
|
|
19
|
+
#
|
|
20
|
+
# The syntax of the helper is as follows:
|
|
21
|
+
# <% payment_service_for order_id, account_id,
|
|
22
|
+
# :amount => 50.00,
|
|
23
|
+
# :service => :sampo_est do |service| %>
|
|
24
|
+
#
|
|
25
|
+
# <% service.notify_url url_for(:action => 'notify', :only_path => false) %>
|
|
26
|
+
# <% service.cancel_return_url 'http://mystore.com' %>
|
|
27
|
+
# <% end %>
|
|
28
|
+
#
|
|
29
|
+
# The order_id parameter is a random id referencing the transaction (VK_STAMP)
|
|
30
|
+
# The account_id parameter is a id given to you from the bank (VK_SND_ID)
|
|
31
|
+
# The notify_url is the URL that the bank will send its responses.
|
|
32
|
+
#
|
|
33
|
+
# You can handle the notification in
|
|
34
|
+
# your controller action as follows:
|
|
35
|
+
#
|
|
36
|
+
# class NotificationController < ApplicationController
|
|
37
|
+
# include ActiveMerchant::Billing::Integrations
|
|
38
|
+
#
|
|
39
|
+
# def notify
|
|
40
|
+
# # Notification class is automatically fetched based on the request parameters.
|
|
41
|
+
# notify = Pizza::Notification.get_notification(params)
|
|
42
|
+
#
|
|
43
|
+
# if notify.acknowledge
|
|
44
|
+
# ... process order ... if notify.complete?
|
|
45
|
+
# else
|
|
46
|
+
# ... log possible hacking attempt ...
|
|
47
|
+
# end
|
|
48
|
+
# end
|
|
49
|
+
# end
|
|
50
|
+
|
|
51
|
+
module SampoEst
|
|
52
|
+
|
|
53
|
+
# Raw X509 certificate of the bank, string format.
|
|
54
|
+
mattr_accessor :bank_certificate
|
|
55
|
+
mattr_accessor :test_bank_certificate
|
|
56
|
+
# RSA public key of the bank, taken from the X509 certificate of the bank. OpenSSL container.
|
|
57
|
+
def self.get_bank_public_key
|
|
58
|
+
if ActiveMerchant::Billing::Base.integration_mode == :production
|
|
59
|
+
cert = self.bank_certificate
|
|
60
|
+
else
|
|
61
|
+
cert = self.test_bank_certificate
|
|
62
|
+
end
|
|
63
|
+
OpenSSL::X509::Certificate.new(cert.gsub(/ /, '')).public_key
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Our raw RSA private key, string format.
|
|
67
|
+
mattr_accessor :private_key
|
|
68
|
+
mattr_accessor :test_private_key
|
|
69
|
+
# Our RSA private key. OpenSSL container.
|
|
70
|
+
def self.get_private_key
|
|
71
|
+
if ActiveMerchant::Billing::Base.integration_mode == :production
|
|
72
|
+
private_key = self.private_key
|
|
73
|
+
else
|
|
74
|
+
private_key = self.test_private_key
|
|
75
|
+
end
|
|
76
|
+
OpenSSL::PKey::RSA.new(private_key.gsub(/ /, ''))
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Bank gateway
|
|
80
|
+
mattr_accessor :test_url
|
|
81
|
+
mattr_accessor :production_url
|
|
82
|
+
def self.service_url
|
|
83
|
+
mode = ActiveMerchant::Billing::Base.integration_mode
|
|
84
|
+
case mode
|
|
85
|
+
when :production
|
|
86
|
+
self.production_url
|
|
87
|
+
when :test
|
|
88
|
+
self.test_url
|
|
89
|
+
else
|
|
90
|
+
raise StandardError, "Integration mode set to an invalid value: #{mode}"
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def self.notification(post)
|
|
95
|
+
Notification.new(post)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
module SampoEst #:nodoc:
|
|
5
|
+
class Helper < ActiveMerchant::Billing::Integrations::Helper #:nodoc:
|
|
6
|
+
include Pizza::Common
|
|
7
|
+
include Pizza::Helper
|
|
8
|
+
|
|
9
|
+
def vk_charset
|
|
10
|
+
'ISO-8859-4'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
module SampoEst #:nodoc:
|
|
5
|
+
class Notification < ActiveMerchant::Billing::Integrations::Notification #:nodoc:
|
|
6
|
+
include Pizza::Common
|
|
7
|
+
include Pizza::Notification
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/seb_est/helper.rb'
|
|
2
|
+
require File.dirname(__FILE__) + '/seb_est/notification.rb'
|
|
3
|
+
|
|
4
|
+
module ActiveMerchant #:nodoc:
|
|
5
|
+
module Billing #:nodoc:
|
|
6
|
+
module Integrations #:nodoc:
|
|
7
|
+
|
|
8
|
+
# This module implements bank payments through
|
|
9
|
+
# SEB Eesti Ühispank (http://www.seb.ee/index/1305) using
|
|
10
|
+
# their bank link service (see http://www.seb.ee/page/130212050205).
|
|
11
|
+
#
|
|
12
|
+
# Configuration:
|
|
13
|
+
# ActiveMerchant::Billing::Integrations::SebEst.bank_certificate = File.read('cert')
|
|
14
|
+
# ActiveMerchant::Billing::Integrations::SebEst.test_bank_certificate = File.read('cert')
|
|
15
|
+
# ActiveMerchant::Billing::Integrations::SebEst.private_key = File.read('keyfile')
|
|
16
|
+
# ActiveMerchant::Billing::Integrations::SebEst.test_private_key = File.read('keyfile')
|
|
17
|
+
# ActiveMerchant::Billing::Integrations::SebEst.test_url = 'https://test-gateway.tld/gw'
|
|
18
|
+
# ActiveMerchant::Billing::Integrations::SebEst.production_url = 'https://production-gateway.tld/gw/'
|
|
19
|
+
#
|
|
20
|
+
# The syntax of the helper is as follows:
|
|
21
|
+
# <% payment_service_for order_id, account_id,
|
|
22
|
+
# :amount => 50.00,
|
|
23
|
+
# :service => :seb_est do |service| %>
|
|
24
|
+
#
|
|
25
|
+
# <% service.notify_url url_for(:action => 'notify', :only_path => false) %>
|
|
26
|
+
# <% service.cancel_return_url 'http://mystore.com' %>
|
|
27
|
+
# <% end %>
|
|
28
|
+
#
|
|
29
|
+
# The order_id parameter is a random id referencing the transaction (VK_STAMP)
|
|
30
|
+
# The account_id parameter is a id given to you from the bank (VK_SND_ID)
|
|
31
|
+
# The notify_url is the URL that the bank will send its responses.
|
|
32
|
+
#
|
|
33
|
+
# You can handle the notification in
|
|
34
|
+
# your controller action as follows:
|
|
35
|
+
#
|
|
36
|
+
# class NotificationController < ApplicationController
|
|
37
|
+
# include ActiveMerchant::Billing::Integrations
|
|
38
|
+
#
|
|
39
|
+
# def notify
|
|
40
|
+
# # Notification class is automatically fetched based on the request parameters.
|
|
41
|
+
# notify = Pizza::Notification.get_notification(params)
|
|
42
|
+
#
|
|
43
|
+
# if notify.acknowledge
|
|
44
|
+
# ... process order ... if notify.complete?
|
|
45
|
+
# else
|
|
46
|
+
# ... log possible hacking attempt ...
|
|
47
|
+
# end
|
|
48
|
+
# end
|
|
49
|
+
# end
|
|
50
|
+
|
|
51
|
+
module SebEst
|
|
52
|
+
|
|
53
|
+
# Raw X509 certificate of the bank, string format.
|
|
54
|
+
mattr_accessor :bank_certificate
|
|
55
|
+
mattr_accessor :test_bank_certificate
|
|
56
|
+
# RSA public key of the bank, taken from the X509 certificate of the bank. OpenSSL container.
|
|
57
|
+
def self.get_bank_public_key
|
|
58
|
+
if ActiveMerchant::Billing::Base.integration_mode == :production
|
|
59
|
+
cert = self.bank_certificate
|
|
60
|
+
else
|
|
61
|
+
cert = self.test_bank_certificate
|
|
62
|
+
end
|
|
63
|
+
OpenSSL::X509::Certificate.new(cert.gsub(/ /, '')).public_key
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Our raw RSA private key, string format.
|
|
67
|
+
mattr_accessor :private_key
|
|
68
|
+
mattr_accessor :test_private_key
|
|
69
|
+
# Our RSA private key. OpenSSL container.
|
|
70
|
+
def self.get_private_key
|
|
71
|
+
if ActiveMerchant::Billing::Base.integration_mode == :production
|
|
72
|
+
private_key = self.private_key
|
|
73
|
+
else
|
|
74
|
+
private_key = self.test_private_key
|
|
75
|
+
end
|
|
76
|
+
OpenSSL::PKey::RSA.new(private_key.gsub(/ /, ''))
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
mattr_accessor :test_url
|
|
80
|
+
mattr_accessor :production_url
|
|
81
|
+
def self.service_url
|
|
82
|
+
mode = ActiveMerchant::Billing::Base.integration_mode
|
|
83
|
+
case mode
|
|
84
|
+
when :production
|
|
85
|
+
self.production_url
|
|
86
|
+
when :test
|
|
87
|
+
self.test_url
|
|
88
|
+
else
|
|
89
|
+
raise StandardError, "Integration mode set to an invalid value: #{mode}"
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def self.notification(post)
|
|
94
|
+
Notification.new(post)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
module SebEst #:nodoc:
|
|
5
|
+
class Helper < ActiveMerchant::Billing::Integrations::Helper #:nodoc:
|
|
6
|
+
include Pizza::Common
|
|
7
|
+
include Pizza::Helper
|
|
8
|
+
|
|
9
|
+
def vk_charset
|
|
10
|
+
'UTF-8'
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|