mattbauer-activemerchant 1.4.2
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 +459 -0
- data/CONTRIBUTERS +118 -0
- data/MIT-LICENSE +20 -0
- data/README +134 -0
- data/Rakefile +153 -0
- data/gem-public_cert.pem +20 -0
- data/init.rb +3 -0
- data/lib/active_merchant.rb +60 -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 +3 -0
- data/lib/active_merchant/billing/gateways/authorize_net.rb +657 -0
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +703 -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 +106 -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/linkpoint.rb +396 -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 +214 -0
- data/lib/active_merchant/billing/gateways/moneris.rb +295 -0
- data/lib/active_merchant/billing/gateways/moneris_usa.rb +258 -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 +259 -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 +325 -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 +110 -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/secure_pay.rb +31 -0
- data/lib/active_merchant/billing/gateways/secure_pay_au.rb +157 -0
- data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +113 -0
- data/lib/active_merchant/billing/gateways/skip_jack.rb +442 -0
- data/lib/active_merchant/billing/gateways/smart_ps.rb +254 -0
- data/lib/active_merchant/billing/gateways/trans_first.rb +127 -0
- data/lib/active_merchant/billing/gateways/transax.rb +26 -0
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +418 -0
- data/lib/active_merchant/billing/gateways/usa_epay.rb +194 -0
- data/lib/active_merchant/billing/gateways/verifi.rb +228 -0
- data/lib/active_merchant/billing/gateways/viaklix.rb +189 -0
- data/lib/active_merchant/billing/gateways/wirecard.rb +318 -0
- data/lib/active_merchant/billing/integrations.rb +22 -0
- data/lib/active_merchant/billing/integrations/action_view_helper.rb +79 -0
- data/lib/active_merchant/billing/integrations/bogus.rb +22 -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 +22 -0
- data/lib/active_merchant/billing/integrations/chronopay/helper.rb +81 -0
- data/lib/active_merchant/billing/integrations/chronopay/notification.rb +156 -0
- data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/gestpay.rb +26 -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 +26 -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 +87 -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 +62 -0
- data/lib/active_merchant/billing/integrations/paypal.rb +40 -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/quickpay.rb +18 -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/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 +353 -0
- data/test/remote/gateways/remote_authorize_net_cim_test.rb +459 -0
- data/test/remote/gateways/remote_authorize_net_test.rb +145 -0
- data/test/remote/gateways/remote_beanstream_interac_test.rb +53 -0
- data/test/remote/gateways/remote_beanstream_test.rb +150 -0
- data/test/remote/gateways/remote_braintree_test.rb +154 -0
- data/test/remote/gateways/remote_card_stream_test.rb +148 -0
- data/test/remote/gateways/remote_cyber_source_test.rb +144 -0
- data/test/remote/gateways/remote_data_cash_test.rb +357 -0
- data/test/remote/gateways/remote_efsnet_test.rb +81 -0
- data/test/remote/gateways/remote_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_linkpoint_test.rb +112 -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 +43 -0
- data/test/remote/gateways/remote_moneris_test.rb +118 -0
- data/test/remote/gateways/remote_moneris_usa_test.rb +115 -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 +108 -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 +178 -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_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 +638 -0
- data/test/unit/gateways/authorize_net_test.rb +290 -0
- data/test/unit/gateways/beanstream_interac_test.rb +51 -0
- data/test/unit/gateways/beanstream_test.rb +108 -0
- data/test/unit/gateways/bogus_test.rb +46 -0
- data/test/unit/gateways/braintree_test.rb +126 -0
- data/test/unit/gateways/card_stream_test.rb +90 -0
- data/test/unit/gateways/cyber_source_test.rb +188 -0
- data/test/unit/gateways/data_cash_test.rb +133 -0
- data/test/unit/gateways/efsnet_test.rb +123 -0
- data/test/unit/gateways/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/linkpoint_test.rb +167 -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 +171 -0
- data/test/unit/gateways/moneris_test.rb +185 -0
- data/test/unit/gateways/moneris_usa_test.rb +183 -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 +256 -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 +162 -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/secure_pay_au_test.rb +207 -0
- data/test/unit/gateways/secure_pay_tech_test.rb +44 -0
- data/test/unit/gateways/secure_pay_test.rb +87 -0
- data/test/unit/gateways/skip_jack_test.rb +133 -0
- data/test/unit/gateways/trans_first_test.rb +112 -0
- data/test/unit/gateways/trust_commerce_test.rb +90 -0
- data/test/unit/gateways/usa_epay_test.rb +128 -0
- data/test/unit/gateways/verifi_test.rb +96 -0
- data/test/unit/gateways/viaklix_test.rb +78 -0
- data/test/unit/gateways/wirecard_test.rb +250 -0
- data/test/unit/generators/test_gateway_generator.rb +46 -0
- data/test/unit/generators/test_generator_helper.rb +20 -0
- data/test/unit/generators/test_integration_generator.rb +53 -0
- data/test/unit/integrations/action_view_helper_test.rb +50 -0
- data/test/unit/integrations/bogus_module_test.rb +20 -0
- data/test/unit/integrations/chronopay_module_test.rb +13 -0
- data/test/unit/integrations/gestpay_module_test.rb +14 -0
- data/test/unit/integrations/helpers/bogus_helper_test.rb +28 -0
- data/test/unit/integrations/helpers/chronopay_helper_test.rb +67 -0
- data/test/unit/integrations/helpers/gestpay_helper_test.rb +100 -0
- data/test/unit/integrations/helpers/hi_trust_helper_test.rb +16 -0
- data/test/unit/integrations/helpers/nochex_helper_test.rb +53 -0
- data/test/unit/integrations/helpers/paypal_helper_test.rb +171 -0
- data/test/unit/integrations/helpers/quickpay_helper_test.rb +40 -0
- data/test/unit/integrations/helpers/two_checkout_helper_test.rb +92 -0
- data/test/unit/integrations/hi_trust_module_test.rb +13 -0
- data/test/unit/integrations/nochex_module_test.rb +13 -0
- data/test/unit/integrations/notifications/chronopay_notification_test.rb +66 -0
- data/test/unit/integrations/notifications/gestpay_notification_test.rb +60 -0
- data/test/unit/integrations/notifications/hi_trust_notification_test.rb +59 -0
- data/test/unit/integrations/notifications/nochex_notification_test.rb +51 -0
- data/test/unit/integrations/notifications/notification_test.rb +54 -0
- data/test/unit/integrations/notifications/paypal_notification_test.rb +85 -0
- data/test/unit/integrations/notifications/quickpay_notification_test.rb +69 -0
- data/test/unit/integrations/notifications/two_checkout_notification_test.rb +55 -0
- data/test/unit/integrations/paypal_module_test.rb +28 -0
- data/test/unit/integrations/quickpay_module_test.rb +9 -0
- data/test/unit/integrations/returns/chronopay_return_test.rb +11 -0
- data/test/unit/integrations/returns/gestpay_return_test.rb +10 -0
- data/test/unit/integrations/returns/hi_trust_return_test.rb +24 -0
- data/test/unit/integrations/returns/nochex_return_test.rb +10 -0
- data/test/unit/integrations/returns/paypal_return_test.rb +10 -0
- data/test/unit/integrations/returns/return_test.rb +11 -0
- data/test/unit/integrations/returns/two_checkout_return_test.rb +24 -0
- data/test/unit/integrations/two_checkout_module_test.rb +13 -0
- data/test/unit/post_data_test.rb +55 -0
- data/test/unit/posts_data_test.rb +48 -0
- data/test/unit/response_test.rb +28 -0
- data/test/unit/utils_test.rb +7 -0
- data/test/unit/validateable_test.rb +60 -0
- metadata +396 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
class Helper #:nodoc:
|
|
5
|
+
attr_reader :fields
|
|
6
|
+
class_inheritable_accessor :service_url
|
|
7
|
+
class_inheritable_hash :mappings
|
|
8
|
+
class_inheritable_accessor :country_format
|
|
9
|
+
self.country_format = :alpha2
|
|
10
|
+
|
|
11
|
+
# The application making the calls to the gateway
|
|
12
|
+
# Useful for things like the PayPal build notation (BN) id fields
|
|
13
|
+
class_inheritable_accessor :application_id
|
|
14
|
+
self.application_id = 'ActiveMerchant'
|
|
15
|
+
|
|
16
|
+
def initialize(order, account, options = {})
|
|
17
|
+
options.assert_valid_keys([:amount, :currency, :test])
|
|
18
|
+
@fields = {}
|
|
19
|
+
self.order = order
|
|
20
|
+
self.account = account
|
|
21
|
+
self.amount = options[:amount]
|
|
22
|
+
self.currency = options[:currency]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def self.mapping(attribute, options = {})
|
|
26
|
+
self.mappings ||= {}
|
|
27
|
+
self.mappings[attribute] = options
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def add_field(name, value)
|
|
31
|
+
return if name.blank? || value.blank?
|
|
32
|
+
@fields[name.to_s] = value.to_s
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def add_fields(subkey, params = {})
|
|
36
|
+
params.each do |k, v|
|
|
37
|
+
field = mappings[subkey][k]
|
|
38
|
+
add_field(field, v) unless field.blank?
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def billing_address(params = {})
|
|
43
|
+
add_address(:billing_address, params)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def shipping_address(params = {})
|
|
47
|
+
add_address(:shipping_address, params)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def form_fields
|
|
51
|
+
@fields
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
def add_address(key, params)
|
|
57
|
+
return if mappings[key].nil?
|
|
58
|
+
|
|
59
|
+
code = lookup_country_code(params.delete(:country))
|
|
60
|
+
add_field(mappings[key][:country], code)
|
|
61
|
+
add_fields(key, params)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def lookup_country_code(name_or_code)
|
|
65
|
+
country = Country.find(name_or_code)
|
|
66
|
+
country.code(country_format).to_s
|
|
67
|
+
rescue InvalidCountryCodeError
|
|
68
|
+
name_or_code
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def method_missing(method_id, *args)
|
|
72
|
+
method_id = method_id.to_s.gsub(/=$/, '').to_sym
|
|
73
|
+
# Return and do nothing if the mapping was not found. This allows
|
|
74
|
+
# For easy substitution of the different integrations
|
|
75
|
+
return if mappings[method_id].nil?
|
|
76
|
+
|
|
77
|
+
mapping = mappings[method_id]
|
|
78
|
+
|
|
79
|
+
case mapping
|
|
80
|
+
when Array
|
|
81
|
+
mapping.each{ |field| add_field(field, args.last) }
|
|
82
|
+
when Hash
|
|
83
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
|
84
|
+
|
|
85
|
+
mapping.each{ |key, field| add_field(field, options[key]) }
|
|
86
|
+
else
|
|
87
|
+
add_field(mapping, args.last)
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/hi_trust/helper.rb'
|
|
2
|
+
require File.dirname(__FILE__) + '/hi_trust/notification.rb'
|
|
3
|
+
require File.dirname(__FILE__) + '/hi_trust/return.rb'
|
|
4
|
+
|
|
5
|
+
module ActiveMerchant #:nodoc:
|
|
6
|
+
module Billing #:nodoc:
|
|
7
|
+
module Integrations #:nodoc:
|
|
8
|
+
module HiTrust
|
|
9
|
+
TEST_URL = 'https://testtrustlink.hitrust.com.tw/TrustLink/TrxReq'
|
|
10
|
+
LIVE_URL = 'https://trustlink.hitrust.com.tw/TrustLink/TrxReq'
|
|
11
|
+
|
|
12
|
+
def self.service_url
|
|
13
|
+
ActiveMerchant::Billing::Base.integration_mode == :test ? TEST_URL : LIVE_URL
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.notification(post)
|
|
17
|
+
Notification.new(post)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.return(query_string)
|
|
21
|
+
Return.new(query_string)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
module HiTrust
|
|
5
|
+
class Helper < ActiveMerchant::Billing::Integrations::Helper
|
|
6
|
+
|
|
7
|
+
# Transaction types
|
|
8
|
+
# * Auth
|
|
9
|
+
# * AuthRe
|
|
10
|
+
# * Capture
|
|
11
|
+
# * CaptureRe
|
|
12
|
+
# * Refund
|
|
13
|
+
# * RefundRe
|
|
14
|
+
# * Query
|
|
15
|
+
def initialize(order, account, options = {})
|
|
16
|
+
super
|
|
17
|
+
# Perform an authorization by default
|
|
18
|
+
add_field('Type', 'Auth')
|
|
19
|
+
|
|
20
|
+
# Capture the payment right away
|
|
21
|
+
add_field('depositflag', '1')
|
|
22
|
+
|
|
23
|
+
# Disable auto query - who knows what it does?
|
|
24
|
+
add_field('queryflag', '1')
|
|
25
|
+
|
|
26
|
+
add_field('orderdesc', 'Store purchase')
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
mapping :account, 'storeid'
|
|
30
|
+
mapping :amount, 'amount'
|
|
31
|
+
|
|
32
|
+
def amount=(money)
|
|
33
|
+
cents = money.respond_to?(:cents) ? money.cents : money
|
|
34
|
+
|
|
35
|
+
if money.is_a?(String) or cents.to_i < 0
|
|
36
|
+
raise ArgumentError, 'money amount must be either a Money object or a positive integer in cents.'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
add_field(mappings[:amount], cents)
|
|
40
|
+
end
|
|
41
|
+
# Supported currencies include:
|
|
42
|
+
# * CNY:Chinese Yuan (Renminbi)
|
|
43
|
+
# * TWD:New Taiwan Dollar
|
|
44
|
+
# * HKD:Hong Kong Dollar
|
|
45
|
+
# * USD:US Dollar
|
|
46
|
+
# * AUD:Austrian Dollar
|
|
47
|
+
mapping :currency, 'currency'
|
|
48
|
+
|
|
49
|
+
mapping :order, 'ordernumber'
|
|
50
|
+
mapping :description, 'orderdesc'
|
|
51
|
+
|
|
52
|
+
mapping :notify_url, 'merUpdateURL'
|
|
53
|
+
mapping :return_url, 'returnURL'
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require 'net/http'
|
|
2
|
+
|
|
3
|
+
module ActiveMerchant #:nodoc:
|
|
4
|
+
module Billing #:nodoc:
|
|
5
|
+
module Integrations #:nodoc:
|
|
6
|
+
module HiTrust
|
|
7
|
+
class Notification < ActiveMerchant::Billing::Integrations::Notification
|
|
8
|
+
SUCCESS = '00'
|
|
9
|
+
|
|
10
|
+
self.production_ips = [ '203.75.242.8' ]
|
|
11
|
+
|
|
12
|
+
def complete?
|
|
13
|
+
status == 'Completed'
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def transaction_id
|
|
17
|
+
params['authRRN']
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def item_id
|
|
21
|
+
params['ordernumber']
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def received_at
|
|
25
|
+
Time.parse(params['orderdate']) rescue nil
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def currency
|
|
29
|
+
params['currency']
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def gross
|
|
33
|
+
sprintf("%.2f", gross_cents.to_f / 100)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def gross_cents
|
|
37
|
+
params['approveamount'].to_i
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def account
|
|
41
|
+
params['storeid']
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def status
|
|
45
|
+
params['retcode'] == SUCCESS ? 'Completed' : 'Failed'
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test?
|
|
49
|
+
ActiveMerchant::Billing::Base.integration_mode == :test
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def acknowledge
|
|
53
|
+
true
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
module HiTrust
|
|
5
|
+
class Return < ActiveMerchant::Billing::Integrations::Return
|
|
6
|
+
SUCCESS = "00"
|
|
7
|
+
CODES = { "00" => "Operation completed successfully",
|
|
8
|
+
"-1" => "Unable to initialize winsock dll.",
|
|
9
|
+
"-2" => "Can't create stream socket.",
|
|
10
|
+
"-3" => "No Request Message.",
|
|
11
|
+
"-4" => "Can't connect to server.",
|
|
12
|
+
"-5" => "Send socket error.",
|
|
13
|
+
"-6" => "Couldn't receive data.",
|
|
14
|
+
"-7" => "Receive Broken message.",
|
|
15
|
+
"-8" => "Unable to initialize Envirnment.",
|
|
16
|
+
"-9" => "Can't Read Server RSA File.",
|
|
17
|
+
"-10" => "Can't Read Client RSA File.",
|
|
18
|
+
"-11" => "Web Server error.",
|
|
19
|
+
"-12" => "Receive Message type error.",
|
|
20
|
+
"-13" => "No Request Message.",
|
|
21
|
+
"-14" => "No Response Content.",
|
|
22
|
+
"-18" => "Merchant Update URL not found.",
|
|
23
|
+
"-19" => "Server URL not find Domain or IP.",
|
|
24
|
+
"-20" => "Server URL only can fill http or https.",
|
|
25
|
+
"-21" => "Server Config File open error.",
|
|
26
|
+
"-22" => "Server RSA Key File open error.",
|
|
27
|
+
"-23" => "Server RSA Key File read error.",
|
|
28
|
+
"-24" => "Server Config File have some errors, Please to check it.",
|
|
29
|
+
"-25" => "Merchant Config File open error.",
|
|
30
|
+
"-26" => "Merchant RSA Key File open error.",
|
|
31
|
+
"-27" => "Merchant RSA Key File read error.",
|
|
32
|
+
"-28" => "Merchant Config File has some errors, Please to check it.",
|
|
33
|
+
"-29" => "Server Type is unknown.",
|
|
34
|
+
"-30" => "Comm Type is unknown.",
|
|
35
|
+
"-31" => "Input Parameter [ORDERNO] is null or empty.",
|
|
36
|
+
"-32" => "Input Parameter [STOREID] is null or empty.",
|
|
37
|
+
"-33" => "Input Parameter [ORDERDESC] is null or empty.",
|
|
38
|
+
"-34" => "Input Parameter [CURRENCY] is null or empty.",
|
|
39
|
+
"-35" => "Input Parameter [AMOUNT] is null or empty.",
|
|
40
|
+
"-36" => "Input Parameter [ORDERURL] is null or empty.",
|
|
41
|
+
"-37" => "Input Parameter [RETURNURL] is null or empty.",
|
|
42
|
+
"-38" => "Input Parameter [DEPOSIT] is null or empty.",
|
|
43
|
+
"-39" => "Input Parameter [QUERYFLAG] is null or empty.",
|
|
44
|
+
"-40" => "Input Parameter [UPDATEURL] is null or empty.",
|
|
45
|
+
"-41" => "Input Parameter [MERUPDATEURL] is null or empty.",
|
|
46
|
+
"-42" => "Input Parameter [KEY] is null or empty.",
|
|
47
|
+
"-43" => "Input Parameter [MAC] is null or empty.",
|
|
48
|
+
"-44" => "Input Parameter [CIPHER] is null or empty.",
|
|
49
|
+
"-45" => "Input Parameter [TrxType] is wrong.",
|
|
50
|
+
"-100" => "TrustLink Server is closed. Or Merchant Server IP is not consistent with TrustLink Server setting.",
|
|
51
|
+
"-101" => "TrustLink Server receives NULL.",
|
|
52
|
+
"-308" => "Order Number already exists.",
|
|
53
|
+
"positive" => "Response from Bank. Please contact with Acquirer Bank Service or HiTRUST Call Center."
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
def success?
|
|
57
|
+
params['retcode'] == SUCCESS
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def message
|
|
61
|
+
CODES[ params['retcode'] ]
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/nochex/helper.rb'
|
|
2
|
+
require File.dirname(__FILE__) + '/nochex/notification.rb'
|
|
3
|
+
require File.dirname(__FILE__) + '/nochex/return.rb'
|
|
4
|
+
|
|
5
|
+
module ActiveMerchant #:nodoc:
|
|
6
|
+
module Billing #:nodoc:
|
|
7
|
+
module Integrations #:nodoc:
|
|
8
|
+
# To start with Nochex, follow the instructions for installing
|
|
9
|
+
# ActiveMerchant as a plugin, as described on
|
|
10
|
+
# http://www.activemerchant.org/.
|
|
11
|
+
#
|
|
12
|
+
# The plugin will automatically add the ActionView helper for
|
|
13
|
+
# ActiveMerchant, which will allow you to make the Nochex payments.
|
|
14
|
+
# The idea behind the helper is that it generates an invisible
|
|
15
|
+
# forwarding screen that will automatically redirect the user.
|
|
16
|
+
# So you would collect all the information about the order and then
|
|
17
|
+
# simply render the hidden form, which redirects the user to Nochex.
|
|
18
|
+
#
|
|
19
|
+
# The syntax of the helper is as follows:
|
|
20
|
+
#
|
|
21
|
+
# <% payment_service_for 'order id', 'nochex_user_id',
|
|
22
|
+
# :amount => 50.00,
|
|
23
|
+
# :service => :nochex,
|
|
24
|
+
# :html => { :id => 'nochex-form' } do |service| %>
|
|
25
|
+
#
|
|
26
|
+
# <% service.customer :first_name => 'Cody',
|
|
27
|
+
# :last_name => 'Fauser',
|
|
28
|
+
# :phone => '(555)555-5555',
|
|
29
|
+
# :email => 'cody@example.com' %>
|
|
30
|
+
#
|
|
31
|
+
# <% service.billing_address :city => 'Ottawa',
|
|
32
|
+
# :address1 => '21 Snowy Brook Lane',
|
|
33
|
+
# :address2 => 'Apt. 36',
|
|
34
|
+
# :state => 'ON',
|
|
35
|
+
# :country => 'CA',
|
|
36
|
+
# :zip => 'K1J1E5' %>
|
|
37
|
+
#
|
|
38
|
+
# <% service.invoice '#1000' %>
|
|
39
|
+
# <% service.shipping '0.00' %>
|
|
40
|
+
# <% service.tax '0.00' %>
|
|
41
|
+
#
|
|
42
|
+
# <% service.notify_url url_for(:action => 'notify', :only_path => false) %>
|
|
43
|
+
# <% service.return_url url_for(:action => 'done', :only_path => false) %>
|
|
44
|
+
# <% service.cancel_return_url 'http://mystore.com' %>
|
|
45
|
+
# <% end %>
|
|
46
|
+
#
|
|
47
|
+
# The notify_url is the URL that the Nochex IPN will be sent. You can
|
|
48
|
+
# handle the notification in your controller action as follows:
|
|
49
|
+
#
|
|
50
|
+
# class NotificationController < ApplicationController
|
|
51
|
+
# include ActiveMerchant::Billing::Integrations
|
|
52
|
+
#
|
|
53
|
+
# def notify
|
|
54
|
+
# notification = Nochex::Notification.new(request.raw_post)
|
|
55
|
+
#
|
|
56
|
+
# begin
|
|
57
|
+
# # Acknowledge notification with Nochex
|
|
58
|
+
# raise StandardError, 'Illegal Notification' unless notification.acknowledge
|
|
59
|
+
# # Process the payment
|
|
60
|
+
# rescue => e
|
|
61
|
+
# logger.warn("Illegal notification received: #{e.message}")
|
|
62
|
+
# ensure
|
|
63
|
+
# head(:ok)
|
|
64
|
+
# end
|
|
65
|
+
# end
|
|
66
|
+
# end
|
|
67
|
+
module Nochex
|
|
68
|
+
|
|
69
|
+
mattr_accessor :service_url
|
|
70
|
+
self.service_url = 'https://www.nochex.com/nochex.dll/checkout'
|
|
71
|
+
|
|
72
|
+
mattr_accessor :notification_confirmation_url
|
|
73
|
+
self.notification_confirmation_url = 'https://www.nochex.com/nochex.dll/apc/apc'
|
|
74
|
+
|
|
75
|
+
# Simply a convenience method that returns a new
|
|
76
|
+
# ActiveMerchant::Billing::Integrations::Nochex::Notification
|
|
77
|
+
def self.notification(post)
|
|
78
|
+
Notification.new(post)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def self.return(query_string)
|
|
82
|
+
Return.new(query_string)
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
|
2
|
+
module Billing #:nodoc:
|
|
3
|
+
module Integrations #:nodoc:
|
|
4
|
+
module Nochex
|
|
5
|
+
class Helper < ActiveMerchant::Billing::Integrations::Helper
|
|
6
|
+
# Required Parameters
|
|
7
|
+
# email
|
|
8
|
+
# amount
|
|
9
|
+
mapping :account, 'email'
|
|
10
|
+
mapping :amount, 'amount'
|
|
11
|
+
|
|
12
|
+
# Set the field status = test for testing with accounts:
|
|
13
|
+
# Account Password
|
|
14
|
+
# test1@nochex.com 123456
|
|
15
|
+
# test2@nochex.com 123456
|
|
16
|
+
# def initialize(order, account, options = {})
|
|
17
|
+
# super
|
|
18
|
+
# add_field('status', 'test')
|
|
19
|
+
# end
|
|
20
|
+
|
|
21
|
+
# Need to format the amount to have 2 decimal places
|
|
22
|
+
def amount=(money)
|
|
23
|
+
cents = money.respond_to?(:cents) ? money.cents : money
|
|
24
|
+
if money.is_a?(String) or cents.to_i <= 0
|
|
25
|
+
raise ArgumentError, 'money amount must be either a Money object or a positive integer in cents.'
|
|
26
|
+
end
|
|
27
|
+
add_field mappings[:amount], sprintf("%.2f", cents.to_f/100)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Optional Parameters
|
|
31
|
+
# ordernumber
|
|
32
|
+
mapping :order, 'ordernumber'
|
|
33
|
+
|
|
34
|
+
# firstname
|
|
35
|
+
# lastname
|
|
36
|
+
# email_address_sender
|
|
37
|
+
mapping :customer, :first_name => 'firstname',
|
|
38
|
+
:last_name => 'lastname',
|
|
39
|
+
:email => 'email_address_sender'
|
|
40
|
+
|
|
41
|
+
# town
|
|
42
|
+
# firstline
|
|
43
|
+
# county
|
|
44
|
+
# postcode
|
|
45
|
+
mapping :billing_address, :city => 'town',
|
|
46
|
+
:address1 => 'firstline',
|
|
47
|
+
:state => 'county',
|
|
48
|
+
:zip => 'postcode'
|
|
49
|
+
|
|
50
|
+
# responderurl
|
|
51
|
+
mapping :notify_url, 'responderurl'
|
|
52
|
+
|
|
53
|
+
# returnurl
|
|
54
|
+
mapping :return_url, 'returnurl'
|
|
55
|
+
|
|
56
|
+
# cancelurl
|
|
57
|
+
mapping :cancel_return_url, 'cancelurl'
|
|
58
|
+
|
|
59
|
+
# description
|
|
60
|
+
mapping :description, 'description'
|
|
61
|
+
|
|
62
|
+
# Currently unmapped
|
|
63
|
+
# logo
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|