tanga_activemerchant 1.37.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG +1202 -0
- data/CONTRIBUTORS +414 -0
- data/MIT-LICENSE +20 -0
- data/README.md +221 -0
- data/gem-public_cert.pem +20 -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 +69 -0
- data/lib/active_merchant/billing/credit_card.rb +283 -0
- data/lib/active_merchant/billing/credit_card_formatting.rb +21 -0
- data/lib/active_merchant/billing/credit_card_methods.rb +143 -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 +181 -0
- data/lib/active_merchant/billing/gateways/authorize_net.rb +725 -0
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +956 -0
- data/lib/active_merchant/billing/gateways/balanced.rb +468 -0
- data/lib/active_merchant/billing/gateways/banwire.rb +105 -0
- data/lib/active_merchant/billing/gateways/barclays_epdq.rb +314 -0
- data/lib/active_merchant/billing/gateways/barclays_epdq_extra_plus.rb +15 -0
- data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +393 -0
- data/lib/active_merchant/billing/gateways/beanstream.rb +169 -0
- data/lib/active_merchant/billing/gateways/beanstream_interac.rb +54 -0
- data/lib/active_merchant/billing/gateways/blue_pay.rb +501 -0
- data/lib/active_merchant/billing/gateways/bogus.rb +142 -0
- data/lib/active_merchant/billing/gateways/braintree/braintree_common.rb +9 -0
- data/lib/active_merchant/billing/gateways/braintree.rb +19 -0
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +401 -0
- data/lib/active_merchant/billing/gateways/braintree_orange.rb +19 -0
- data/lib/active_merchant/billing/gateways/card_save.rb +23 -0
- data/lib/active_merchant/billing/gateways/card_stream.rb +225 -0
- data/lib/active_merchant/billing/gateways/card_stream_modern.rb +155 -0
- data/lib/active_merchant/billing/gateways/cc5.rb +156 -0
- data/lib/active_merchant/billing/gateways/certo_direct.rb +277 -0
- data/lib/active_merchant/billing/gateways/cyber_source.rb +639 -0
- data/lib/active_merchant/billing/gateways/data_cash.rb +591 -0
- data/lib/active_merchant/billing/gateways/efsnet.rb +230 -0
- data/lib/active_merchant/billing/gateways/elavon.rb +312 -0
- data/lib/active_merchant/billing/gateways/epay.rb +275 -0
- data/lib/active_merchant/billing/gateways/evo_ca.rb +308 -0
- data/lib/active_merchant/billing/gateways/eway.rb +225 -0
- data/lib/active_merchant/billing/gateways/eway_managed.rb +291 -0
- data/lib/active_merchant/billing/gateways/eway_rapid.rb +320 -0
- data/lib/active_merchant/billing/gateways/exact.rb +218 -0
- data/lib/active_merchant/billing/gateways/fat_zebra.rb +173 -0
- data/lib/active_merchant/billing/gateways/federated_canada.rb +167 -0
- data/lib/active_merchant/billing/gateways/finansbank.rb +22 -0
- data/lib/active_merchant/billing/gateways/first_pay.rb +176 -0
- data/lib/active_merchant/billing/gateways/firstdata_e4.rb +314 -0
- data/lib/active_merchant/billing/gateways/garanti.rb +257 -0
- data/lib/active_merchant/billing/gateways/hdfc.rb +207 -0
- data/lib/active_merchant/billing/gateways/iats_payments.rb +35 -0
- data/lib/active_merchant/billing/gateways/ideal/ideal_base.rb +249 -0
- data/lib/active_merchant/billing/gateways/ideal/ideal_rabobank.pem +13 -0
- data/lib/active_merchant/billing/gateways/ideal/ideal_response.rb +29 -0
- data/lib/active_merchant/billing/gateways/ideal_rabobank.rb +66 -0
- data/lib/active_merchant/billing/gateways/inspire.rb +221 -0
- data/lib/active_merchant/billing/gateways/instapay.rb +163 -0
- data/lib/active_merchant/billing/gateways/iridium.rb +262 -0
- data/lib/active_merchant/billing/gateways/itransact.rb +448 -0
- data/lib/active_merchant/billing/gateways/jetpay.rb +275 -0
- data/lib/active_merchant/billing/gateways/linkpoint.rb +447 -0
- data/lib/active_merchant/billing/gateways/litle.rb +554 -0
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +176 -0
- data/lib/active_merchant/billing/gateways/merchant_one.rb +115 -0
- data/lib/active_merchant/billing/gateways/merchant_ware.rb +322 -0
- data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +275 -0
- data/lib/active_merchant/billing/gateways/merchant_warrior.rb +191 -0
- data/lib/active_merchant/billing/gateways/mercury.rb +311 -0
- data/lib/active_merchant/billing/gateways/metrics_global.rb +322 -0
- data/lib/active_merchant/billing/gateways/migs/migs_codes.rb +100 -0
- data/lib/active_merchant/billing/gateways/migs.rb +265 -0
- data/lib/active_merchant/billing/gateways/modern_payments.rb +37 -0
- data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +219 -0
- data/lib/active_merchant/billing/gateways/moneris.rb +244 -0
- data/lib/active_merchant/billing/gateways/moneris_us.rb +208 -0
- data/lib/active_merchant/billing/gateways/nab_transact.rb +277 -0
- data/lib/active_merchant/billing/gateways/net_registry.rb +193 -0
- data/lib/active_merchant/billing/gateways/netaxept.rb +181 -0
- data/lib/active_merchant/billing/gateways/netbilling.rb +197 -0
- data/lib/active_merchant/billing/gateways/netpay.rb +223 -0
- data/lib/active_merchant/billing/gateways/nmi.rb +20 -0
- data/lib/active_merchant/billing/gateways/ogone.rb +421 -0
- data/lib/active_merchant/billing/gateways/optimal_payment.rb +297 -0
- data/lib/active_merchant/billing/gateways/orbital/avs_result.rb +93 -0
- data/lib/active_merchant/billing/gateways/orbital/orbital_soft_descriptors.rb +46 -0
- data/lib/active_merchant/billing/gateways/orbital.rb +633 -0
- data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +261 -0
- data/lib/active_merchant/billing/gateways/pay_junction.rb +396 -0
- data/lib/active_merchant/billing/gateways/pay_secure.rb +119 -0
- data/lib/active_merchant/billing/gateways/paybox_direct.rb +196 -0
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +209 -0
- data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +39 -0
- data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +13 -0
- data/lib/active_merchant/billing/gateways/payflow.rb +268 -0
- data/lib/active_merchant/billing/gateways/payflow_express.rb +224 -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 +353 -0
- data/lib/active_merchant/billing/gateways/paymill.rb +179 -0
- data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +670 -0
- data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +61 -0
- data/lib/active_merchant/billing/gateways/paypal/paypal_recurring_api.rb +248 -0
- data/lib/active_merchant/billing/gateways/paypal.rb +106 -0
- data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
- data/lib/active_merchant/billing/gateways/paypal_digital_goods.rb +43 -0
- data/lib/active_merchant/billing/gateways/paypal_express.rb +239 -0
- data/lib/active_merchant/billing/gateways/paypal_express_common.rb +30 -0
- data/lib/active_merchant/billing/gateways/paystation.rb +199 -0
- data/lib/active_merchant/billing/gateways/payway.rb +207 -0
- data/lib/active_merchant/billing/gateways/pin.rb +165 -0
- data/lib/active_merchant/billing/gateways/plugnpay.rb +294 -0
- data/lib/active_merchant/billing/gateways/psigate.rb +227 -0
- data/lib/active_merchant/billing/gateways/psl_card.rb +303 -0
- data/lib/active_merchant/billing/gateways/qbms.rb +292 -0
- data/lib/active_merchant/billing/gateways/quantum.rb +276 -0
- data/lib/active_merchant/billing/gateways/quickpay.rb +335 -0
- data/lib/active_merchant/billing/gateways/realex.rb +303 -0
- data/lib/active_merchant/billing/gateways/redsys.rb +394 -0
- data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +93 -0
- data/lib/active_merchant/billing/gateways/sage/sage_core.rb +114 -0
- data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +102 -0
- data/lib/active_merchant/billing/gateways/sage.rb +152 -0
- data/lib/active_merchant/billing/gateways/sage_pay.rb +324 -0
- data/lib/active_merchant/billing/gateways/sallie_mae.rb +143 -0
- data/lib/active_merchant/billing/gateways/samurai.rb +118 -0
- data/lib/active_merchant/billing/gateways/secure_net.rb +261 -0
- data/lib/active_merchant/billing/gateways/secure_pay.rb +28 -0
- data/lib/active_merchant/billing/gateways/secure_pay_au.rb +279 -0
- data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +112 -0
- data/lib/active_merchant/billing/gateways/skip_jack.rb +453 -0
- data/lib/active_merchant/billing/gateways/smart_ps.rb +272 -0
- data/lib/active_merchant/billing/gateways/spreedly_core.rb +233 -0
- data/lib/active_merchant/billing/gateways/stripe.rb +316 -0
- data/lib/active_merchant/billing/gateways/trans_first.rb +126 -0
- data/lib/active_merchant/billing/gateways/transax.rb +23 -0
- data/lib/active_merchant/billing/gateways/transnational.rb +239 -0
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +421 -0
- data/lib/active_merchant/billing/gateways/usa_epay.rb +25 -0
- data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +1501 -0
- data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +201 -0
- data/lib/active_merchant/billing/gateways/verifi.rb +232 -0
- data/lib/active_merchant/billing/gateways/viaklix.rb +189 -0
- data/lib/active_merchant/billing/gateways/vindicia.rb +361 -0
- data/lib/active_merchant/billing/gateways/webpay.rb +57 -0
- data/lib/active_merchant/billing/gateways/wirecard.rb +313 -0
- data/lib/active_merchant/billing/gateways/worldpay.rb +303 -0
- data/lib/active_merchant/billing/gateways.rb +17 -0
- data/lib/active_merchant/billing/integrations/a1agregator/helper.rb +31 -0
- data/lib/active_merchant/billing/integrations/a1agregator/notification.rb +186 -0
- data/lib/active_merchant/billing/integrations/a1agregator/status.rb +38 -0
- data/lib/active_merchant/billing/integrations/a1agregator.rb +26 -0
- data/lib/active_merchant/billing/integrations/action_view_helper.rb +73 -0
- data/lib/active_merchant/billing/integrations/authorize_net_sim/helper.rb +229 -0
- data/lib/active_merchant/billing/integrations/authorize_net_sim/notification.rb +340 -0
- data/lib/active_merchant/billing/integrations/authorize_net_sim.rb +38 -0
- data/lib/active_merchant/billing/integrations/bogus/helper.rb +17 -0
- data/lib/active_merchant/billing/integrations/bogus/notification.rb +11 -0
- data/lib/active_merchant/billing/integrations/bogus/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/bogus.rb +23 -0
- data/lib/active_merchant/billing/integrations/chronopay/helper.rb +120 -0
- data/lib/active_merchant/billing/integrations/chronopay/notification.rb +158 -0
- data/lib/active_merchant/billing/integrations/chronopay/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/chronopay.rb +23 -0
- data/lib/active_merchant/billing/integrations/direc_pay/helper.rb +200 -0
- data/lib/active_merchant/billing/integrations/direc_pay/notification.rb +76 -0
- data/lib/active_merchant/billing/integrations/direc_pay/return.rb +32 -0
- data/lib/active_merchant/billing/integrations/direc_pay/status.rb +37 -0
- data/lib/active_merchant/billing/integrations/direc_pay.rb +41 -0
- data/lib/active_merchant/billing/integrations/directebanking/helper.rb +90 -0
- data/lib/active_merchant/billing/integrations/directebanking/notification.rb +120 -0
- data/lib/active_merchant/billing/integrations/directebanking/return.rb +11 -0
- data/lib/active_merchant/billing/integrations/directebanking.rb +47 -0
- data/lib/active_merchant/billing/integrations/dotpay/helper.rb +77 -0
- data/lib/active_merchant/billing/integrations/dotpay/notification.rb +86 -0
- data/lib/active_merchant/billing/integrations/dotpay/return.rb +11 -0
- data/lib/active_merchant/billing/integrations/dotpay.rb +22 -0
- data/lib/active_merchant/billing/integrations/dwolla/common.rb +23 -0
- data/lib/active_merchant/billing/integrations/dwolla/helper.rb +43 -0
- data/lib/active_merchant/billing/integrations/dwolla/notification.rb +64 -0
- data/lib/active_merchant/billing/integrations/dwolla/return.rb +49 -0
- data/lib/active_merchant/billing/integrations/dwolla.rb +23 -0
- data/lib/active_merchant/billing/integrations/e_payment_plans/helper.rb +34 -0
- data/lib/active_merchant/billing/integrations/e_payment_plans/notification.rb +84 -0
- data/lib/active_merchant/billing/integrations/e_payment_plans.rb +48 -0
- data/lib/active_merchant/billing/integrations/easy_pay/common.rb +40 -0
- data/lib/active_merchant/billing/integrations/easy_pay/helper.rb +36 -0
- data/lib/active_merchant/billing/integrations/easy_pay/notification.rb +59 -0
- data/lib/active_merchant/billing/integrations/easy_pay.rb +30 -0
- data/lib/active_merchant/billing/integrations/epay/helper.rb +55 -0
- data/lib/active_merchant/billing/integrations/epay/notification.rb +110 -0
- data/lib/active_merchant/billing/integrations/epay.rb +21 -0
- data/lib/active_merchant/billing/integrations/first_data/helper.rb +61 -0
- data/lib/active_merchant/billing/integrations/first_data/notification.rb +56 -0
- data/lib/active_merchant/billing/integrations/first_data.rb +38 -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 +85 -0
- data/lib/active_merchant/billing/integrations/gestpay/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/gestpay.rb +25 -0
- data/lib/active_merchant/billing/integrations/helper.rb +117 -0
- data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +58 -0
- data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +59 -0
- data/lib/active_merchant/billing/integrations/hi_trust/return.rb +67 -0
- data/lib/active_merchant/billing/integrations/hi_trust.rb +27 -0
- data/lib/active_merchant/billing/integrations/ipay88/helper.rb +114 -0
- data/lib/active_merchant/billing/integrations/ipay88/return.rb +95 -0
- data/lib/active_merchant/billing/integrations/ipay88.rb +19 -0
- data/lib/active_merchant/billing/integrations/liqpay/helper.rb +43 -0
- data/lib/active_merchant/billing/integrations/liqpay/notification.rb +89 -0
- data/lib/active_merchant/billing/integrations/liqpay/return.rb +83 -0
- data/lib/active_merchant/billing/integrations/liqpay.rb +30 -0
- data/lib/active_merchant/billing/integrations/maksuturva/helper.rb +119 -0
- data/lib/active_merchant/billing/integrations/maksuturva/notification.rb +48 -0
- data/lib/active_merchant/billing/integrations/maksuturva.rb +86 -0
- data/lib/active_merchant/billing/integrations/moneybookers/helper.rb +75 -0
- data/lib/active_merchant/billing/integrations/moneybookers/notification.rb +129 -0
- data/lib/active_merchant/billing/integrations/moneybookers.rb +26 -0
- data/lib/active_merchant/billing/integrations/nochex/helper.rb +68 -0
- data/lib/active_merchant/billing/integrations/nochex/notification.rb +94 -0
- data/lib/active_merchant/billing/integrations/nochex/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/nochex.rb +88 -0
- data/lib/active_merchant/billing/integrations/notification.rb +71 -0
- data/lib/active_merchant/billing/integrations/paxum/common.rb +24 -0
- data/lib/active_merchant/billing/integrations/paxum/helper.rb +42 -0
- data/lib/active_merchant/billing/integrations/paxum/notification.rb +33 -0
- data/lib/active_merchant/billing/integrations/paxum.rb +44 -0
- data/lib/active_merchant/billing/integrations/pay_fast/common.rb +42 -0
- data/lib/active_merchant/billing/integrations/pay_fast/helper.rb +50 -0
- data/lib/active_merchant/billing/integrations/pay_fast/notification.rb +134 -0
- data/lib/active_merchant/billing/integrations/pay_fast/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/pay_fast.rb +70 -0
- data/lib/active_merchant/billing/integrations/payflow_link/helper.rb +116 -0
- data/lib/active_merchant/billing/integrations/payflow_link/notification.rb +78 -0
- data/lib/active_merchant/billing/integrations/payflow_link.rb +21 -0
- data/lib/active_merchant/billing/integrations/paypal/helper.rb +119 -0
- data/lib/active_merchant/billing/integrations/paypal/notification.rb +227 -0
- data/lib/active_merchant/billing/integrations/paypal/return.rb +10 -0
- data/lib/active_merchant/billing/integrations/paypal.rb +39 -0
- data/lib/active_merchant/billing/integrations/paypal_payments_advanced/helper.rb +15 -0
- data/lib/active_merchant/billing/integrations/paypal_payments_advanced.rb +20 -0
- data/lib/active_merchant/billing/integrations/paysbuy/helper.rb +15 -0
- data/lib/active_merchant/billing/integrations/paysbuy/notification.rb +28 -0
- data/lib/active_merchant/billing/integrations/paysbuy.rb +36 -0
- data/lib/active_merchant/billing/integrations/payu_in/helper.rb +74 -0
- data/lib/active_merchant/billing/integrations/payu_in/notification.rb +165 -0
- data/lib/active_merchant/billing/integrations/payu_in/return.rb +36 -0
- data/lib/active_merchant/billing/integrations/payu_in.rb +43 -0
- data/lib/active_merchant/billing/integrations/platron/helper.rb +32 -0
- data/lib/active_merchant/billing/integrations/platron/notification.rb +113 -0
- data/lib/active_merchant/billing/integrations/platron.rb +28 -0
- data/lib/active_merchant/billing/integrations/pxpay/helper.rb +112 -0
- data/lib/active_merchant/billing/integrations/pxpay/notification.rb +157 -0
- data/lib/active_merchant/billing/integrations/pxpay/return.rb +25 -0
- data/lib/active_merchant/billing/integrations/pxpay.rb +31 -0
- data/lib/active_merchant/billing/integrations/quickpay/helper.rb +74 -0
- data/lib/active_merchant/billing/integrations/quickpay/notification.rb +137 -0
- data/lib/active_merchant/billing/integrations/quickpay.rb +21 -0
- data/lib/active_merchant/billing/integrations/rbkmoney/helper.rb +23 -0
- data/lib/active_merchant/billing/integrations/rbkmoney/notification.rb +91 -0
- data/lib/active_merchant/billing/integrations/rbkmoney.rb +17 -0
- data/lib/active_merchant/billing/integrations/return.rb +42 -0
- data/lib/active_merchant/billing/integrations/robokassa/common.rb +19 -0
- data/lib/active_merchant/billing/integrations/robokassa/helper.rb +50 -0
- data/lib/active_merchant/billing/integrations/robokassa/notification.rb +55 -0
- data/lib/active_merchant/billing/integrations/robokassa/return.rb +17 -0
- data/lib/active_merchant/billing/integrations/robokassa.rb +49 -0
- data/lib/active_merchant/billing/integrations/sage_pay_form/encryption.rb +33 -0
- data/lib/active_merchant/billing/integrations/sage_pay_form/helper.rb +136 -0
- data/lib/active_merchant/billing/integrations/sage_pay_form/notification.rb +210 -0
- data/lib/active_merchant/billing/integrations/sage_pay_form/return.rb +31 -0
- data/lib/active_merchant/billing/integrations/sage_pay_form.rb +37 -0
- data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +91 -0
- data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +139 -0
- data/lib/active_merchant/billing/integrations/two_checkout/return.rb +17 -0
- data/lib/active_merchant/billing/integrations/two_checkout.rb +44 -0
- data/lib/active_merchant/billing/integrations/valitor/helper.rb +86 -0
- data/lib/active_merchant/billing/integrations/valitor/notification.rb +13 -0
- data/lib/active_merchant/billing/integrations/valitor/response_fields.rb +97 -0
- data/lib/active_merchant/billing/integrations/valitor/return.rb +13 -0
- data/lib/active_merchant/billing/integrations/valitor.rb +33 -0
- data/lib/active_merchant/billing/integrations/verkkomaksut/helper.rb +88 -0
- data/lib/active_merchant/billing/integrations/verkkomaksut/notification.rb +59 -0
- data/lib/active_merchant/billing/integrations/verkkomaksut.rb +20 -0
- data/lib/active_merchant/billing/integrations/web_pay/common.rb +50 -0
- data/lib/active_merchant/billing/integrations/web_pay/helper.rb +68 -0
- data/lib/active_merchant/billing/integrations/web_pay/notification.rb +51 -0
- data/lib/active_merchant/billing/integrations/web_pay.rb +45 -0
- data/lib/active_merchant/billing/integrations/webmoney/common.rb +17 -0
- data/lib/active_merchant/billing/integrations/webmoney/helper.rb +40 -0
- data/lib/active_merchant/billing/integrations/webmoney/notification.rb +47 -0
- data/lib/active_merchant/billing/integrations/webmoney.rb +43 -0
- data/lib/active_merchant/billing/integrations/world_pay/helper.rb +101 -0
- data/lib/active_merchant/billing/integrations/world_pay/notification.rb +160 -0
- data/lib/active_merchant/billing/integrations/world_pay.rb +34 -0
- data/lib/active_merchant/billing/integrations.rb +17 -0
- data/lib/active_merchant/billing/response.rb +77 -0
- data/lib/active_merchant/billing.rb +9 -0
- data/lib/active_merchant/version.rb +3 -0
- data/lib/active_merchant.rb +63 -0
- data/lib/activemerchant.rb +1 -0
- data/lib/support/gateway_support.rb +65 -0
- data/lib/support/outbound_hosts.rb +25 -0
- data/lib/support/ssl_verify.rb +93 -0
- metadata +506 -0
@@ -0,0 +1,75 @@
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
2
|
+
module Billing #:nodoc:
|
3
|
+
module Integrations #:nodoc:
|
4
|
+
module Moneybookers
|
5
|
+
class Helper < ActiveMerchant::Billing::Integrations::Helper
|
6
|
+
mapping :account, 'pay_to_email'
|
7
|
+
mapping :order, 'transaction_id'
|
8
|
+
mapping :amount, 'amount'
|
9
|
+
mapping :currency, 'currency'
|
10
|
+
|
11
|
+
mapping :customer,
|
12
|
+
:first_name => 'firstname',
|
13
|
+
:last_name => 'lastname',
|
14
|
+
:email => 'pay_from_email',
|
15
|
+
:phone => 'phone_number'
|
16
|
+
|
17
|
+
mapping :billing_address,
|
18
|
+
:city => 'city',
|
19
|
+
:address1 => 'address',
|
20
|
+
:address2 => 'address2',
|
21
|
+
:state => 'state',
|
22
|
+
:zip => 'postal_code',
|
23
|
+
:country => 'country'
|
24
|
+
|
25
|
+
mapping :notify_url, 'status_url'
|
26
|
+
mapping :return_url, 'return_url'
|
27
|
+
mapping :cancel_return_url, 'cancel_url'
|
28
|
+
mapping :description, 'detail1_text'
|
29
|
+
|
30
|
+
MAPPED_COUNTRY_CODES = {
|
31
|
+
'SE' => 'SV',
|
32
|
+
'DK' => 'DA'
|
33
|
+
}
|
34
|
+
|
35
|
+
SUPPORTED_COUNTRY_CODES = [
|
36
|
+
'FI', 'DE', 'ES', 'FR',
|
37
|
+
'IT','PL', 'GR', 'RO',
|
38
|
+
'RU', 'TR', 'CN', 'CZ', 'NL'
|
39
|
+
]
|
40
|
+
|
41
|
+
def initialize(order, account, options = {})
|
42
|
+
super
|
43
|
+
add_tracking_token
|
44
|
+
add_default_parameters
|
45
|
+
add_seller_details(options)
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def add_tracking_token
|
51
|
+
return if application_id.blank? || application_id == 'ActiveMerchant'
|
52
|
+
|
53
|
+
add_field('merchant_fields', 'platform')
|
54
|
+
add_field('platform', application_id)
|
55
|
+
end
|
56
|
+
|
57
|
+
def add_default_parameters
|
58
|
+
add_field('hide_login', 1)
|
59
|
+
end
|
60
|
+
|
61
|
+
def add_seller_details(options)
|
62
|
+
add_field('recipient_description', options[:account_name]) if options[:account_name]
|
63
|
+
add_field('country', lookup_country_code(options[:country], :alpha3)) if options[:country]
|
64
|
+
add_field('language', locale_code(options[:country])) if options[:country]
|
65
|
+
end
|
66
|
+
|
67
|
+
def locale_code(country_code)
|
68
|
+
return country_code if SUPPORTED_COUNTRY_CODES.include?(country_code)
|
69
|
+
MAPPED_COUNTRY_CODES[country_code] || 'EN'
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'digest/md5'
|
3
|
+
|
4
|
+
module ActiveMerchant #:nodoc:
|
5
|
+
module Billing #:nodoc:
|
6
|
+
module Integrations #:nodoc:
|
7
|
+
module Moneybookers
|
8
|
+
class Notification < ActiveMerchant::Billing::Integrations::Notification
|
9
|
+
|
10
|
+
def initialize(data, options)
|
11
|
+
if options[:credential2].nil?
|
12
|
+
raise ArgumentError, "You need to provide the md5 secret as the option :credential2 to verify that the notification originated from Moneybookers"
|
13
|
+
end
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
17
|
+
def complete?
|
18
|
+
status == 'Completed'
|
19
|
+
end
|
20
|
+
|
21
|
+
# ‘2’ Processed – This status is sent when the transaction is processed and the funds have been received on your Moneybookers account.
|
22
|
+
# ‘0’ Pending – This status is sent when the customers pays via the pending bank transfer option. Such transactions will auto-process IF the bank transfer is received by Moneybookers. We strongly recommend that you do NOT process the order/transaction in your system upon receipt of a pending status from Moneybookers.
|
23
|
+
# ‘-1’ Cancelled – Pending transactions can either be cancelled manually by the sender in their online account history or they will auto-cancel after 14 days if still pending.
|
24
|
+
# ‘-2’ Failed – This status is sent when the customer tries to pay via Credit Card or Direct Debit but our provider declines the transaction. If you do not accept Credit Card or Direct Debit payments via Moneybookers (see page 17) then you will never receive the failed status.
|
25
|
+
# ‘-3’ Chargeback – This status could be received only if your account is configured to receive chargebacks. If this is the case, whenever a chargeback is received by Moneybookers, a -3 status will be posted on the status_url for the reversed transaction.
|
26
|
+
def status
|
27
|
+
case status_code
|
28
|
+
when '2'
|
29
|
+
'Completed'
|
30
|
+
when '0'
|
31
|
+
'Pending'
|
32
|
+
when '-1'
|
33
|
+
'Cancelled'
|
34
|
+
when '-2'
|
35
|
+
'Failed'
|
36
|
+
when '-3'
|
37
|
+
'Reversed'
|
38
|
+
else
|
39
|
+
'Error'
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def status_code
|
44
|
+
params['status']
|
45
|
+
end
|
46
|
+
|
47
|
+
def item_id
|
48
|
+
params['transaction_id']
|
49
|
+
end
|
50
|
+
|
51
|
+
def transaction_id
|
52
|
+
params['mb_transaction_id']
|
53
|
+
end
|
54
|
+
|
55
|
+
# When was this payment received by the client.
|
56
|
+
def received_at
|
57
|
+
nil
|
58
|
+
end
|
59
|
+
|
60
|
+
def payer_email
|
61
|
+
params['pay_from_email']
|
62
|
+
end
|
63
|
+
|
64
|
+
def receiver_email
|
65
|
+
params['pay_to_email']
|
66
|
+
end
|
67
|
+
|
68
|
+
def md5sig
|
69
|
+
params['md5sig']
|
70
|
+
end
|
71
|
+
|
72
|
+
#Unique ID from the merchant's Moneybookers.com account, needed for calculatinon of md5 sig
|
73
|
+
def merchant_id
|
74
|
+
params['merchant_id']
|
75
|
+
end
|
76
|
+
|
77
|
+
# currency of the payment as posted by the merchant on the entry form
|
78
|
+
def currency
|
79
|
+
params['currency']
|
80
|
+
end
|
81
|
+
|
82
|
+
# amount of the payment as posted by the merchant on the entry form (ex. 39.60/39.6/39)
|
83
|
+
def gross
|
84
|
+
params['amount']
|
85
|
+
end
|
86
|
+
|
87
|
+
# currency of mb_amount, will always be the same as the currency of the beneficiary's account at Moneybookers.com
|
88
|
+
def merchant_currency
|
89
|
+
params['mb_currency']
|
90
|
+
end
|
91
|
+
|
92
|
+
# total amount of the payment in Merchants currency (ex 25.46/25.4/25)
|
93
|
+
def merchant_amount
|
94
|
+
params['mb_amount']
|
95
|
+
end
|
96
|
+
|
97
|
+
# Was this a test transaction?
|
98
|
+
def test?
|
99
|
+
false
|
100
|
+
end
|
101
|
+
|
102
|
+
def secret
|
103
|
+
@options[:credential2]
|
104
|
+
end
|
105
|
+
|
106
|
+
# Acknowledge the transaction to MoneyBooker. This method has to be called after a new
|
107
|
+
# apc arrives. It will verify that all the information we received is correct and will return a
|
108
|
+
# ok or a fail. The secret (second credential) has to be provided in the parameter :credential2
|
109
|
+
# when instantiating the Notification object.
|
110
|
+
#
|
111
|
+
# Example:
|
112
|
+
#
|
113
|
+
# def ipn
|
114
|
+
# notify = Moneybookers.notification(request.raw_post, :credential2 => 'secret')
|
115
|
+
#
|
116
|
+
# if notify.acknowledge
|
117
|
+
# ... process order ... if notify.complete?
|
118
|
+
# else
|
119
|
+
# ... log possible hacking attempt ...
|
120
|
+
# end
|
121
|
+
def acknowledge
|
122
|
+
fields = [merchant_id, item_id, Digest::MD5.hexdigest(secret).upcase, merchant_amount, merchant_currency, status_code].join
|
123
|
+
md5sig == Digest::MD5.hexdigest(fields).upcase
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
2
|
+
module Billing #:nodoc:
|
3
|
+
module Integrations #:nodoc:
|
4
|
+
module Moneybookers
|
5
|
+
|
6
|
+
autoload :Notification, File.dirname(__FILE__) + '/moneybookers/notification.rb'
|
7
|
+
autoload :Helper, File.dirname(__FILE__) + '/moneybookers/helper.rb'
|
8
|
+
|
9
|
+
mattr_accessor :production_url
|
10
|
+
self.production_url = 'https://www.moneybookers.com/app/payment.pl'
|
11
|
+
|
12
|
+
def self.service_url
|
13
|
+
self.production_url
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.notification(post, options)
|
17
|
+
Notification.new(post, options)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.return(post, options = {})
|
21
|
+
Return.new(post, options)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
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
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'date'
|
3
|
+
|
4
|
+
module ActiveMerchant #:nodoc:
|
5
|
+
module Billing #:nodoc:
|
6
|
+
module Integrations #:nodoc:
|
7
|
+
module Nochex
|
8
|
+
# Parser and handler for incoming Automatic Payment Confirmations from Nochex.
|
9
|
+
class Notification < ActiveMerchant::Billing::Integrations::Notification
|
10
|
+
include ActiveMerchant::PostsData
|
11
|
+
|
12
|
+
def complete?
|
13
|
+
status == 'Completed'
|
14
|
+
end
|
15
|
+
|
16
|
+
# Id of the order we passed to Nochex
|
17
|
+
def item_id
|
18
|
+
params['order_id']
|
19
|
+
end
|
20
|
+
|
21
|
+
def transaction_id
|
22
|
+
params['transaction_id']
|
23
|
+
end
|
24
|
+
|
25
|
+
def currency
|
26
|
+
'GBP'
|
27
|
+
end
|
28
|
+
|
29
|
+
# When was this payment received by the client.
|
30
|
+
def received_at
|
31
|
+
# U.K. Format: 27/09/2006 22:30:54
|
32
|
+
return if params['transaction_date'].blank?
|
33
|
+
time = params['transaction_date'].scan(/\d+/)
|
34
|
+
Time.utc(time[2], time[1], time[0], time[3], time[4], time[5])
|
35
|
+
end
|
36
|
+
|
37
|
+
def payer_email
|
38
|
+
params['from_email']
|
39
|
+
end
|
40
|
+
|
41
|
+
def receiver_email
|
42
|
+
params['to_email']
|
43
|
+
end
|
44
|
+
|
45
|
+
def security_key
|
46
|
+
params['security_key']
|
47
|
+
end
|
48
|
+
|
49
|
+
# the money amount we received in X.2 decimal.
|
50
|
+
def gross
|
51
|
+
sprintf("%.2f", params['amount'].to_f)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Was this a test transaction?
|
55
|
+
def test?
|
56
|
+
params['status'] == 'test'
|
57
|
+
end
|
58
|
+
|
59
|
+
def status
|
60
|
+
'Completed'
|
61
|
+
end
|
62
|
+
|
63
|
+
# Acknowledge the transaction to Nochex. This method has to be called after a new
|
64
|
+
# apc arrives. Nochex will verify that all the information we received are correct and will return a
|
65
|
+
# ok or a fail. This is very similar to the PayPal IPN scheme.
|
66
|
+
#
|
67
|
+
# Example:
|
68
|
+
#
|
69
|
+
# def nochex_ipn
|
70
|
+
# notify = NochexNotification.new(request.raw_post)
|
71
|
+
#
|
72
|
+
# if notify.acknowledge
|
73
|
+
# ... process order ... if notify.complete?
|
74
|
+
# else
|
75
|
+
# ... log possible hacking attempt ...
|
76
|
+
# end
|
77
|
+
def acknowledge
|
78
|
+
payload = raw
|
79
|
+
|
80
|
+
response = ssl_post(Nochex.notification_confirmation_url, payload,
|
81
|
+
'Content-Length' => "#{payload.size}",
|
82
|
+
'User-Agent' => "Active Merchant -- http://activemerchant.org",
|
83
|
+
'Content-Type' => "application/x-www-form-urlencoded"
|
84
|
+
)
|
85
|
+
|
86
|
+
raise StandardError.new("Faulty Nochex result: #{response}") unless ["AUTHORISED", "DECLINED"].include?(response)
|
87
|
+
|
88
|
+
response == "AUTHORISED"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
|
2
|
+
module ActiveMerchant #:nodoc:
|
3
|
+
module Billing #:nodoc:
|
4
|
+
module Integrations #:nodoc:
|
5
|
+
# To start with Nochex, follow the instructions for installing
|
6
|
+
# ActiveMerchant as a plugin, as described on
|
7
|
+
# http://www.activemerchant.org/.
|
8
|
+
#
|
9
|
+
# The plugin will automatically add the ActionView helper for
|
10
|
+
# ActiveMerchant, which will allow you to make the Nochex payments.
|
11
|
+
# The idea behind the helper is that it generates an invisible
|
12
|
+
# forwarding screen that will automatically redirect the user.
|
13
|
+
# So you would collect all the information about the order and then
|
14
|
+
# simply render the hidden form, which redirects the user to Nochex.
|
15
|
+
#
|
16
|
+
# The syntax of the helper is as follows:
|
17
|
+
#
|
18
|
+
# <% payment_service_for 'order id', 'nochex_user_id',
|
19
|
+
# :amount => 50.00,
|
20
|
+
# :service => :nochex,
|
21
|
+
# :html => { :id => 'nochex-form' } do |service| %>
|
22
|
+
#
|
23
|
+
# <% service.customer :first_name => 'Cody',
|
24
|
+
# :last_name => 'Fauser',
|
25
|
+
# :phone => '(555)555-5555',
|
26
|
+
# :email => 'cody@example.com' %>
|
27
|
+
#
|
28
|
+
# <% service.billing_address :city => 'Ottawa',
|
29
|
+
# :address1 => '21 Snowy Brook Lane',
|
30
|
+
# :address2 => 'Apt. 36',
|
31
|
+
# :state => 'ON',
|
32
|
+
# :country => 'CA',
|
33
|
+
# :zip => 'K1J1E5' %>
|
34
|
+
#
|
35
|
+
# <% service.invoice '#1000' %>
|
36
|
+
# <% service.shipping '0.00' %>
|
37
|
+
# <% service.tax '0.00' %>
|
38
|
+
#
|
39
|
+
# <% service.notify_url url_for(:action => 'notify', :only_path => false) %>
|
40
|
+
# <% service.return_url url_for(:action => 'done', :only_path => false) %>
|
41
|
+
# <% service.cancel_return_url 'http://mystore.com' %>
|
42
|
+
# <% end %>
|
43
|
+
#
|
44
|
+
# The notify_url is the URL that the Nochex IPN will be sent. You can
|
45
|
+
# handle the notification in your controller action as follows:
|
46
|
+
#
|
47
|
+
# class NotificationController < ApplicationController
|
48
|
+
# include ActiveMerchant::Billing::Integrations
|
49
|
+
#
|
50
|
+
# def notify
|
51
|
+
# notification = Nochex::Notification.new(request.raw_post)
|
52
|
+
#
|
53
|
+
# begin
|
54
|
+
# # Acknowledge notification with Nochex
|
55
|
+
# raise StandardError, 'Illegal Notification' unless notification.acknowledge
|
56
|
+
# # Process the payment
|
57
|
+
# rescue => e
|
58
|
+
# logger.warn("Illegal notification received: #{e.message}")
|
59
|
+
# ensure
|
60
|
+
# head(:ok)
|
61
|
+
# end
|
62
|
+
# end
|
63
|
+
# end
|
64
|
+
module Nochex
|
65
|
+
autoload :Return, File.dirname(__FILE__) + '/nochex/return.rb'
|
66
|
+
autoload :Helper, File.dirname(__FILE__) + '/nochex/helper.rb'
|
67
|
+
autoload :Notification, File.dirname(__FILE__) + '/nochex/notification.rb'
|
68
|
+
|
69
|
+
|
70
|
+
mattr_accessor :service_url
|
71
|
+
self.service_url = 'https://secure.nochex.com'
|
72
|
+
|
73
|
+
mattr_accessor :notification_confirmation_url
|
74
|
+
self.notification_confirmation_url = 'https://www.nochex.com/nochex.dll/apc/apc'
|
75
|
+
|
76
|
+
# Simply a convenience method that returns a new
|
77
|
+
# ActiveMerchant::Billing::Integrations::Nochex::Notification
|
78
|
+
def self.notification(post, options = {})
|
79
|
+
Notification.new(post)
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.return(query_string, options = {})
|
83
|
+
Return.new(query_string)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
2
|
+
module Billing #:nodoc:
|
3
|
+
module Integrations #:nodoc:
|
4
|
+
class Notification
|
5
|
+
attr_accessor :params
|
6
|
+
attr_accessor :raw
|
7
|
+
|
8
|
+
# set this to an array in the subclass, to specify which IPs are allowed
|
9
|
+
# to send requests
|
10
|
+
class_attribute :production_ips
|
11
|
+
|
12
|
+
# * *Args* :
|
13
|
+
# - +doc+ -> raw post string
|
14
|
+
# - +options+ -> custom options which individual implementations can
|
15
|
+
# utilize
|
16
|
+
def initialize(post, options = {})
|
17
|
+
@options = options
|
18
|
+
empty!
|
19
|
+
parse(post)
|
20
|
+
end
|
21
|
+
|
22
|
+
def status
|
23
|
+
raise NotImplementedError, "Must implement this method in the subclass"
|
24
|
+
end
|
25
|
+
|
26
|
+
# the money amount we received in X.2 decimal.
|
27
|
+
def gross
|
28
|
+
raise NotImplementedError, "Must implement this method in the subclass"
|
29
|
+
end
|
30
|
+
|
31
|
+
def gross_cents
|
32
|
+
(gross.to_f * 100.0).round
|
33
|
+
end
|
34
|
+
|
35
|
+
# This combines the gross and currency and returns a proper Money object.
|
36
|
+
# this requires the money library located at http://dist.leetsoft.com/api/money
|
37
|
+
def amount
|
38
|
+
return Money.new(gross_cents, currency) rescue ArgumentError
|
39
|
+
return Money.new(gross_cents) # maybe you have an own money object which doesn't take a currency?
|
40
|
+
end
|
41
|
+
|
42
|
+
# reset the notification.
|
43
|
+
def empty!
|
44
|
+
@params = Hash.new
|
45
|
+
@raw = ""
|
46
|
+
end
|
47
|
+
|
48
|
+
# Check if the request comes from an official IP
|
49
|
+
def valid_sender?(ip)
|
50
|
+
return true if ActiveMerchant::Billing::Base.integration_mode == :test || production_ips.blank?
|
51
|
+
production_ips.include?(ip)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test?
|
55
|
+
false
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
# Take the posted data and move the relevant data into a hash
|
61
|
+
def parse(post)
|
62
|
+
@raw = post.to_s
|
63
|
+
for line in @raw.split('&')
|
64
|
+
key, value = *line.scan( %r{^([A-Za-z0-9_.]+)\=(.*)$} ).flatten
|
65
|
+
params[key] = CGI.unescape(value)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
2
|
+
module Billing #:nodoc:
|
3
|
+
module Integrations #:nodoc:
|
4
|
+
module Paxum
|
5
|
+
module Common
|
6
|
+
def generate_signature_string
|
7
|
+
@raw_post.slice!(0) if @raw_post.starts_with?("&")
|
8
|
+
@raw_post = CGI.unescape(@raw_post)
|
9
|
+
@raw_post = "&#{@raw_post}" unless @raw_post.starts_with?("&")
|
10
|
+
arr = @raw_post.split('&')
|
11
|
+
arr.delete(arr.last)
|
12
|
+
data = arr.join('&')
|
13
|
+
|
14
|
+
(data + secret)
|
15
|
+
end
|
16
|
+
|
17
|
+
def generate_signature
|
18
|
+
Digest::MD5.hexdigest(generate_signature_string)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
2
|
+
module Billing #:nodoc:
|
3
|
+
module Integrations #:nodoc:
|
4
|
+
module Paxum
|
5
|
+
class Helper < ActiveMerchant::Billing::Integrations::Helper
|
6
|
+
include Common
|
7
|
+
|
8
|
+
def initialize(order, account, options = {})
|
9
|
+
@paxum_options = options.dup
|
10
|
+
options.delete(:description)
|
11
|
+
options.delete(:fail_url)
|
12
|
+
options.delete(:success_url)
|
13
|
+
options.delete(:result_url)
|
14
|
+
super
|
15
|
+
add_field "button_type_id", "1"
|
16
|
+
add_field "variables", "notify_url=#{@paxum_options[:result_url]}"
|
17
|
+
@paxum_options.each do |key, value|
|
18
|
+
add_field mappings[key], value
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def form_fields
|
23
|
+
@fields
|
24
|
+
end
|
25
|
+
|
26
|
+
def params
|
27
|
+
@fields
|
28
|
+
end
|
29
|
+
|
30
|
+
mapping :account, 'business_email'
|
31
|
+
mapping :amount, 'amount'
|
32
|
+
mapping :currency, 'currency'
|
33
|
+
mapping :order, 'item_id'
|
34
|
+
mapping :description, 'item_name'
|
35
|
+
mapping :fail_url, 'cancel_url'
|
36
|
+
mapping :success_url, 'finish_url'
|
37
|
+
mapping :result_url, 'notify_url'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
2
|
+
module Billing #:nodoc:
|
3
|
+
module Integrations #:nodoc:
|
4
|
+
module Paxum
|
5
|
+
class Notification < ActiveMerchant::Billing::Integrations::Notification
|
6
|
+
include Common
|
7
|
+
|
8
|
+
def initialize(post, options = {})
|
9
|
+
@raw_post = post.dup
|
10
|
+
post.slice!(0)
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.recognizes?(params)
|
15
|
+
(params.has_key?('transaction_item_id') && params.has_key?('transaction_amount'))
|
16
|
+
end
|
17
|
+
|
18
|
+
def security_key
|
19
|
+
params["key"]
|
20
|
+
end
|
21
|
+
|
22
|
+
def secret
|
23
|
+
@options[:secret]
|
24
|
+
end
|
25
|
+
|
26
|
+
def acknowledge
|
27
|
+
(security_key == generate_signature)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|