swiss-crm-activemerchant 1.0.12
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.
- checksums.yaml +7 -0
- data/CHANGELOG +4033 -0
- data/CONTRIBUTORS +568 -0
- data/MIT-LICENSE +20 -0
- data/README.md +252 -0
- data/lib/active_merchant/billing/apple_pay_payment_token.rb +22 -0
- data/lib/active_merchant/billing/avs_result.rb +95 -0
- data/lib/active_merchant/billing/base.rb +48 -0
- data/lib/active_merchant/billing/check.rb +112 -0
- data/lib/active_merchant/billing/compatibility.rb +118 -0
- data/lib/active_merchant/billing/credit_card.rb +451 -0
- data/lib/active_merchant/billing/credit_card_formatting.rb +24 -0
- data/lib/active_merchant/billing/credit_card_methods.rb +512 -0
- data/lib/active_merchant/billing/cvv_result.rb +37 -0
- data/lib/active_merchant/billing/gateway.rb +332 -0
- data/lib/active_merchant/billing/gateways/adyen.rb +774 -0
- data/lib/active_merchant/billing/gateways/airwallex.rb +370 -0
- data/lib/active_merchant/billing/gateways/alelo.rb +256 -0
- data/lib/active_merchant/billing/gateways/allied_wallet.rb +205 -0
- data/lib/active_merchant/billing/gateways/authorize_net.rb +1125 -0
- data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +424 -0
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +977 -0
- data/lib/active_merchant/billing/gateways/axcessms.rb +242 -0
- data/lib/active_merchant/billing/gateways/balanced.rb +263 -0
- data/lib/active_merchant/billing/gateways/bambora_apac.rb +222 -0
- data/lib/active_merchant/billing/gateways/bank_frick.rb +225 -0
- data/lib/active_merchant/billing/gateways/banwire.rb +116 -0
- data/lib/active_merchant/billing/gateways/barclaycard_smartpay.rb +397 -0
- data/lib/active_merchant/billing/gateways/barclays_epdq_extra_plus.rb +15 -0
- data/lib/active_merchant/billing/gateways/be2bill.rb +131 -0
- data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +474 -0
- data/lib/active_merchant/billing/gateways/beanstream.rb +238 -0
- data/lib/active_merchant/billing/gateways/beanstream_interac.rb +57 -0
- data/lib/active_merchant/billing/gateways/blue_pay.rb +549 -0
- data/lib/active_merchant/billing/gateways/blue_snap.rb +644 -0
- data/lib/active_merchant/billing/gateways/bogus.rb +190 -0
- data/lib/active_merchant/billing/gateways/borgun.rb +272 -0
- data/lib/active_merchant/billing/gateways/bpoint.rb +277 -0
- data/lib/active_merchant/billing/gateways/braintree/braintree_common.rb +28 -0
- data/lib/active_merchant/billing/gateways/braintree/token_nonce.rb +113 -0
- data/lib/active_merchant/billing/gateways/braintree.rb +19 -0
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +952 -0
- data/lib/active_merchant/billing/gateways/braintree_orange.rb +19 -0
- data/lib/active_merchant/billing/gateways/bridge_pay.rb +244 -0
- data/lib/active_merchant/billing/gateways/cams.rb +230 -0
- data/lib/active_merchant/billing/gateways/card_connect.rb +338 -0
- data/lib/active_merchant/billing/gateways/card_save.rb +21 -0
- data/lib/active_merchant/billing/gateways/card_stream.rb +394 -0
- data/lib/active_merchant/billing/gateways/cardknox.rb +327 -0
- data/lib/active_merchant/billing/gateways/cardprocess.rb +256 -0
- data/lib/active_merchant/billing/gateways/cashnet.rb +235 -0
- data/lib/active_merchant/billing/gateways/cc5.rb +198 -0
- data/lib/active_merchant/billing/gateways/cecabank.rb +249 -0
- data/lib/active_merchant/billing/gateways/cenpos.rb +328 -0
- data/lib/active_merchant/billing/gateways/checkout.rb +212 -0
- data/lib/active_merchant/billing/gateways/checkout_v2.rb +587 -0
- data/lib/active_merchant/billing/gateways/citrus_pay.rb +21 -0
- data/lib/active_merchant/billing/gateways/clearhaus.rb +219 -0
- data/lib/active_merchant/billing/gateways/commerce_hub.rb +366 -0
- data/lib/active_merchant/billing/gateways/commercegate.rb +142 -0
- data/lib/active_merchant/billing/gateways/conekta.rb +230 -0
- data/lib/active_merchant/billing/gateways/creditcall.rb +272 -0
- data/lib/active_merchant/billing/gateways/credorax.rb +526 -0
- data/lib/active_merchant/billing/gateways/ct_payment.rb +269 -0
- data/lib/active_merchant/billing/gateways/culqi.rb +279 -0
- data/lib/active_merchant/billing/gateways/cyber_source/cyber_source_common.rb +36 -0
- data/lib/active_merchant/billing/gateways/cyber_source.rb +1148 -0
- data/lib/active_merchant/billing/gateways/cyber_source_rest.rb +454 -0
- data/lib/active_merchant/billing/gateways/d_local.rb +343 -0
- data/lib/active_merchant/billing/gateways/data_cash.rb +302 -0
- data/lib/active_merchant/billing/gateways/decidir.rb +358 -0
- data/lib/active_merchant/billing/gateways/decidir_plus.rb +344 -0
- data/lib/active_merchant/billing/gateways/dibs.rb +199 -0
- data/lib/active_merchant/billing/gateways/digitzs.rb +295 -0
- data/lib/active_merchant/billing/gateways/ebanx.rb +346 -0
- data/lib/active_merchant/billing/gateways/efsnet.rb +215 -0
- data/lib/active_merchant/billing/gateways/elavon.rb +475 -0
- data/lib/active_merchant/billing/gateways/element.rb +406 -0
- data/lib/active_merchant/billing/gateways/epay.rb +296 -0
- data/lib/active_merchant/billing/gateways/evo_ca.rb +307 -0
- data/lib/active_merchant/billing/gateways/eway.rb +226 -0
- data/lib/active_merchant/billing/gateways/eway_managed.rb +289 -0
- data/lib/active_merchant/billing/gateways/eway_rapid.rb +578 -0
- data/lib/active_merchant/billing/gateways/exact.rb +219 -0
- data/lib/active_merchant/billing/gateways/ezic.rb +195 -0
- data/lib/active_merchant/billing/gateways/fat_zebra.rb +223 -0
- data/lib/active_merchant/billing/gateways/federated_canada.rb +158 -0
- data/lib/active_merchant/billing/gateways/finansbank.rb +22 -0
- data/lib/active_merchant/billing/gateways/first_giving.rb +143 -0
- data/lib/active_merchant/billing/gateways/first_pay.rb +182 -0
- data/lib/active_merchant/billing/gateways/firstdata_e4.rb +452 -0
- data/lib/active_merchant/billing/gateways/firstdata_e4_v27.rb +505 -0
- data/lib/active_merchant/billing/gateways/flo2cash.rb +215 -0
- data/lib/active_merchant/billing/gateways/flo2cash_simple.rb +20 -0
- data/lib/active_merchant/billing/gateways/fluidpay.rb +275 -0
- data/lib/active_merchant/billing/gateways/forte.rb +286 -0
- data/lib/active_merchant/billing/gateways/garanti.rb +256 -0
- data/lib/active_merchant/billing/gateways/global_collect.rb +580 -0
- data/lib/active_merchant/billing/gateways/global_transport.rb +193 -0
- data/lib/active_merchant/billing/gateways/hdfc.rb +205 -0
- data/lib/active_merchant/billing/gateways/hps.rb +472 -0
- data/lib/active_merchant/billing/gateways/iats_payments.rb +312 -0
- data/lib/active_merchant/billing/gateways/in_context_paypal_express.rb +15 -0
- data/lib/active_merchant/billing/gateways/inspire.rb +213 -0
- data/lib/active_merchant/billing/gateways/instapay.rb +159 -0
- data/lib/active_merchant/billing/gateways/ipg.rb +420 -0
- data/lib/active_merchant/billing/gateways/ipp.rb +176 -0
- data/lib/active_merchant/billing/gateways/iridium.rb +467 -0
- data/lib/active_merchant/billing/gateways/itransact.rb +448 -0
- data/lib/active_merchant/billing/gateways/iveri.rb +290 -0
- data/lib/active_merchant/billing/gateways/ixopay.rb +320 -0
- data/lib/active_merchant/billing/gateways/jetpay.rb +395 -0
- data/lib/active_merchant/billing/gateways/jetpay_v2.rb +432 -0
- data/lib/active_merchant/billing/gateways/klarna.rb +317 -0
- data/lib/active_merchant/billing/gateways/komoju.rb +115 -0
- data/lib/active_merchant/billing/gateways/kushki.rb +297 -0
- data/lib/active_merchant/billing/gateways/latitude19.rb +412 -0
- data/lib/active_merchant/billing/gateways/linkpoint.rb +448 -0
- data/lib/active_merchant/billing/gateways/litle.rb +643 -0
- data/lib/active_merchant/billing/gateways/mastercard.rb +286 -0
- data/lib/active_merchant/billing/gateways/maxipago.rb +220 -0
- data/lib/active_merchant/billing/gateways/mercado_pago.rb +348 -0
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +228 -0
- data/lib/active_merchant/billing/gateways/merchant_one.rb +110 -0
- data/lib/active_merchant/billing/gateways/merchant_partners.rb +245 -0
- data/lib/active_merchant/billing/gateways/merchant_ware.rb +313 -0
- data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +284 -0
- data/lib/active_merchant/billing/gateways/merchant_warrior.rb +248 -0
- data/lib/active_merchant/billing/gateways/mercury.rb +352 -0
- data/lib/active_merchant/billing/gateways/metrics_global.rb +293 -0
- data/lib/active_merchant/billing/gateways/micropayment.rb +182 -0
- data/lib/active_merchant/billing/gateways/migs/migs_codes.rb +100 -0
- data/lib/active_merchant/billing/gateways/migs.rb +329 -0
- data/lib/active_merchant/billing/gateways/mit.rb +260 -0
- data/lib/active_merchant/billing/gateways/modern_payments.rb +37 -0
- data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +215 -0
- data/lib/active_merchant/billing/gateways/moka.rb +290 -0
- data/lib/active_merchant/billing/gateways/monei.rb +424 -0
- data/lib/active_merchant/billing/gateways/moneris.rb +488 -0
- data/lib/active_merchant/billing/gateways/money_movers.rb +150 -0
- data/lib/active_merchant/billing/gateways/mundipagg.rb +366 -0
- data/lib/active_merchant/billing/gateways/nab_transact.rb +299 -0
- data/lib/active_merchant/billing/gateways/ncr_secure_pay.rb +163 -0
- data/lib/active_merchant/billing/gateways/net_registry.rb +198 -0
- data/lib/active_merchant/billing/gateways/netaxept.rb +180 -0
- data/lib/active_merchant/billing/gateways/netbanx.rb +376 -0
- data/lib/active_merchant/billing/gateways/netbilling.rb +229 -0
- data/lib/active_merchant/billing/gateways/netpay.rb +223 -0
- data/lib/active_merchant/billing/gateways/network_merchants.rb +238 -0
- data/lib/active_merchant/billing/gateways/nmi.rb +396 -0
- data/lib/active_merchant/billing/gateways/ogone.rb +509 -0
- data/lib/active_merchant/billing/gateways/omise.rb +323 -0
- data/lib/active_merchant/billing/gateways/openpay.rb +246 -0
- data/lib/active_merchant/billing/gateways/opp.rb +394 -0
- data/lib/active_merchant/billing/gateways/optimal_payment.rb +331 -0
- data/lib/active_merchant/billing/gateways/orbital/orbital_soft_descriptors.rb +45 -0
- data/lib/active_merchant/billing/gateways/orbital.rb +1267 -0
- data/lib/active_merchant/billing/gateways/pac_net_raven.rb +206 -0
- data/lib/active_merchant/billing/gateways/pagarme.rb +239 -0
- data/lib/active_merchant/billing/gateways/pago_facil.rb +120 -0
- data/lib/active_merchant/billing/gateways/pay_arc.rb +392 -0
- data/lib/active_merchant/billing/gateways/pay_conex.rb +245 -0
- data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +277 -0
- data/lib/active_merchant/billing/gateways/pay_hub.rb +213 -0
- data/lib/active_merchant/billing/gateways/pay_junction.rb +390 -0
- data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +206 -0
- data/lib/active_merchant/billing/gateways/pay_secure.rb +110 -0
- data/lib/active_merchant/billing/gateways/pay_trace.rb +450 -0
- data/lib/active_merchant/billing/gateways/paybox_direct.rb +224 -0
- data/lib/active_merchant/billing/gateways/payeezy.rb +513 -0
- data/lib/active_merchant/billing/gateways/payex.rb +409 -0
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +235 -0
- data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +42 -0
- data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +13 -0
- data/lib/active_merchant/billing/gateways/payflow.rb +473 -0
- data/lib/active_merchant/billing/gateways/payflow_express.rb +220 -0
- data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +14 -0
- data/lib/active_merchant/billing/gateways/payflow_uk.rb +20 -0
- data/lib/active_merchant/billing/gateways/payment_express.rb +373 -0
- data/lib/active_merchant/billing/gateways/paymentez.rb +365 -0
- data/lib/active_merchant/billing/gateways/paymill.rb +369 -0
- data/lib/active_merchant/billing/gateways/paynetworx.rb +228 -0
- data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +718 -0
- data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +69 -0
- data/lib/active_merchant/billing/gateways/paypal/paypal_recurring_api.rb +262 -0
- data/lib/active_merchant/billing/gateways/paypal.rb +136 -0
- data/lib/active_merchant/billing/gateways/paypal_ca.rb +13 -0
- data/lib/active_merchant/billing/gateways/paypal_digital_goods.rb +44 -0
- data/lib/active_merchant/billing/gateways/paypal_express.rb +272 -0
- data/lib/active_merchant/billing/gateways/paypal_express_common.rb +30 -0
- data/lib/active_merchant/billing/gateways/paypal_standard.rb +281 -0
- data/lib/active_merchant/billing/gateways/paysafe.rb +420 -0
- data/lib/active_merchant/billing/gateways/payscout.rb +159 -0
- data/lib/active_merchant/billing/gateways/paystation.rb +204 -0
- data/lib/active_merchant/billing/gateways/payu_in.rb +249 -0
- data/lib/active_merchant/billing/gateways/payu_latam.rb +482 -0
- data/lib/active_merchant/billing/gateways/payway.rb +207 -0
- data/lib/active_merchant/billing/gateways/payway_dot_com.rb +253 -0
- data/lib/active_merchant/billing/gateways/pin.rb +273 -0
- data/lib/active_merchant/billing/gateways/pixxels.rb +263 -0
- data/lib/active_merchant/billing/gateways/plexo.rb +308 -0
- data/lib/active_merchant/billing/gateways/plugnpay.rb +283 -0
- data/lib/active_merchant/billing/gateways/priority.rb +392 -0
- data/lib/active_merchant/billing/gateways/pro_pay.rb +325 -0
- data/lib/active_merchant/billing/gateways/psigate.rb +227 -0
- data/lib/active_merchant/billing/gateways/psl_card.rb +295 -0
- data/lib/active_merchant/billing/gateways/qbms.rb +302 -0
- data/lib/active_merchant/billing/gateways/quantum.rb +274 -0
- data/lib/active_merchant/billing/gateways/quickbooks.rb +377 -0
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_common.rb +184 -0
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v10.rb +297 -0
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v4to7.rb +226 -0
- data/lib/active_merchant/billing/gateways/quickpay.rb +24 -0
- data/lib/active_merchant/billing/gateways/qvalent.rb +305 -0
- data/lib/active_merchant/billing/gateways/rapyd.rb +319 -0
- data/lib/active_merchant/billing/gateways/reach.rb +277 -0
- data/lib/active_merchant/billing/gateways/realex.rb +400 -0
- data/lib/active_merchant/billing/gateways/redsys.rb +723 -0
- data/lib/active_merchant/billing/gateways/s5.rb +247 -0
- data/lib/active_merchant/billing/gateways/safe_charge.rb +298 -0
- data/lib/active_merchant/billing/gateways/sage.rb +446 -0
- data/lib/active_merchant/billing/gateways/sage_pay.rb +434 -0
- data/lib/active_merchant/billing/gateways/sallie_mae.rb +141 -0
- data/lib/active_merchant/billing/gateways/secure_net.rb +260 -0
- data/lib/active_merchant/billing/gateways/secure_pay.rb +191 -0
- data/lib/active_merchant/billing/gateways/secure_pay_au.rb +290 -0
- data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +103 -0
- data/lib/active_merchant/billing/gateways/securion_pay.rb +305 -0
- data/lib/active_merchant/billing/gateways/shift4.rb +345 -0
- data/lib/active_merchant/billing/gateways/simetrik.rb +368 -0
- data/lib/active_merchant/billing/gateways/skip_jack.rb +450 -0
- data/lib/active_merchant/billing/gateways/smart_ps.rb +274 -0
- data/lib/active_merchant/billing/gateways/so_easy_pay.rb +194 -0
- data/lib/active_merchant/billing/gateways/spreedly_core.rb +354 -0
- data/lib/active_merchant/billing/gateways/stripe.rb +866 -0
- data/lib/active_merchant/billing/gateways/stripe_payment_intents.rb +602 -0
- data/lib/active_merchant/billing/gateways/swipe_checkout.rb +151 -0
- data/lib/active_merchant/billing/gateways/telr.rb +273 -0
- data/lib/active_merchant/billing/gateways/tns.rb +23 -0
- data/lib/active_merchant/billing/gateways/trans_first.rb +240 -0
- data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +612 -0
- data/lib/active_merchant/billing/gateways/transact_pro.rb +222 -0
- data/lib/active_merchant/billing/gateways/transax.rb +21 -0
- data/lib/active_merchant/billing/gateways/transnational.rb +9 -0
- data/lib/active_merchant/billing/gateways/trexle.rb +221 -0
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +500 -0
- data/lib/active_merchant/billing/gateways/usa_epay.rb +24 -0
- data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +1612 -0
- data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +367 -0
- data/lib/active_merchant/billing/gateways/vanco.rb +303 -0
- data/lib/active_merchant/billing/gateways/verifi.rb +224 -0
- data/lib/active_merchant/billing/gateways/viaklix.rb +171 -0
- data/lib/active_merchant/billing/gateways/visanet_peru.rb +250 -0
- data/lib/active_merchant/billing/gateways/vpos.rb +223 -0
- data/lib/active_merchant/billing/gateways/webpay.rb +97 -0
- data/lib/active_merchant/billing/gateways/wepay.rb +235 -0
- data/lib/active_merchant/billing/gateways/wirecard.rb +430 -0
- data/lib/active_merchant/billing/gateways/wompi.rb +197 -0
- data/lib/active_merchant/billing/gateways/world_net.rb +345 -0
- data/lib/active_merchant/billing/gateways/worldpay.rb +1050 -0
- data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +208 -0
- data/lib/active_merchant/billing/gateways/worldpay_us.rb +221 -0
- data/lib/active_merchant/billing/gateways.rb +14 -0
- data/lib/active_merchant/billing/model.rb +30 -0
- data/lib/active_merchant/billing/network_tokenization_credit_card.rb +39 -0
- data/lib/active_merchant/billing/payment_token.rb +21 -0
- data/lib/active_merchant/billing/rails.rb +3 -0
- data/lib/active_merchant/billing/response.rb +121 -0
- data/lib/active_merchant/billing/three_d_secure_eci_mapper.rb +27 -0
- data/lib/active_merchant/billing.rb +16 -0
- data/lib/active_merchant/connection.rb +194 -0
- data/lib/active_merchant/country.rb +338 -0
- data/lib/active_merchant/empty.rb +20 -0
- data/lib/active_merchant/errors.rb +38 -0
- data/lib/active_merchant/net_http_ssl_connection.rb +11 -0
- data/lib/active_merchant/network_connection_retries.rb +78 -0
- data/lib/active_merchant/post_data.rb +26 -0
- data/lib/active_merchant/posts_data.rb +92 -0
- data/lib/active_merchant/version.rb +3 -0
- data/lib/active_merchant.rb +63 -0
- data/lib/activemerchant.rb +1 -0
- data/lib/certs/cacert.pem +3214 -0
- data/lib/support/gateway_support.rb +69 -0
- data/lib/support/outbound_hosts.rb +28 -0
- data/lib/support/ssl_verify.rb +88 -0
- data/lib/support/ssl_version.rb +86 -0
- metadata +506 -0
@@ -0,0 +1,509 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'rexml/document'
|
4
|
+
|
5
|
+
module ActiveMerchant #:nodoc:
|
6
|
+
module Billing #:nodoc:
|
7
|
+
# = Ogone DirectLink Gateway
|
8
|
+
#
|
9
|
+
# DirectLink is the API version of the Ogone Payment Platform. It allows server to server
|
10
|
+
# communication between Ogone systems and your e-commerce website.
|
11
|
+
#
|
12
|
+
# This implementation follows the specification provided in the DirectLink integration
|
13
|
+
# guide version 4.3.0 (25 April 2012), available here:
|
14
|
+
# https://secure.ogone.com/ncol/Ogone_DirectLink_EN.pdf
|
15
|
+
#
|
16
|
+
# It also features aliases, which allow to store/unstore credit cards, as specified in
|
17
|
+
# the Alias Manager Option guide version 3.2.1 (25 April 2012) available here:
|
18
|
+
# https://secure.ogone.com/ncol/Ogone_Alias_EN.pdf
|
19
|
+
#
|
20
|
+
# It also implements the 3-D Secure feature, as specified in the DirectLink with
|
21
|
+
# 3-D Secure guide version 3.0 (25 April 2012) available here:
|
22
|
+
# https://secure.ogone.com/ncol/Ogone_DirectLink-3-D_EN.pdf
|
23
|
+
#
|
24
|
+
# It was last tested on Release 4.92 of Ogone DirectLink + AliasManager + Direct Link 3D
|
25
|
+
# (25 April 2012).
|
26
|
+
#
|
27
|
+
# For any questions or comments, please contact one of the following:
|
28
|
+
# - Joel Cogen (joel.cogen@belighted.com)
|
29
|
+
# - Nicolas Jacobeus (nicolas.jacobeus@belighted.com),
|
30
|
+
# - Sébastien Grosjean (public@zencocoon.com),
|
31
|
+
# - Rémy Coutable (remy@jilion.com).
|
32
|
+
#
|
33
|
+
# == Usage
|
34
|
+
#
|
35
|
+
# gateway = ActiveMerchant::Billing::OgoneGateway.new(
|
36
|
+
# :login => "my_ogone_psp_id",
|
37
|
+
# :user => "my_ogone_user_id",
|
38
|
+
# :password => "my_ogone_pswd",
|
39
|
+
# :signature => "my_ogone_sha_signature", # Only if you configured your Ogone environment so.
|
40
|
+
# :signature_encryptor => "sha512" # Can be "none" (default), "sha1", "sha256" or "sha512".
|
41
|
+
# # Must be the same as the one configured in your Ogone account.
|
42
|
+
# )
|
43
|
+
#
|
44
|
+
# # set up credit card object as in main ActiveMerchant example
|
45
|
+
# creditcard = ActiveMerchant::Billing::CreditCard.new(
|
46
|
+
# :type => 'visa',
|
47
|
+
# :number => '4242424242424242',
|
48
|
+
# :month => 8,
|
49
|
+
# :year => 2009,
|
50
|
+
# :first_name => 'Bob',
|
51
|
+
# :last_name => 'Bobsen'
|
52
|
+
# )
|
53
|
+
#
|
54
|
+
# # run request
|
55
|
+
# response = gateway.purchase(1000, creditcard, :order_id => "1") # charge 10 EUR
|
56
|
+
#
|
57
|
+
# If you don't provide an :order_id, the gateway will generate a random one for you.
|
58
|
+
#
|
59
|
+
# puts response.success? # Check whether the transaction was successful
|
60
|
+
# puts response.message # Retrieve the message returned by Ogone
|
61
|
+
# puts response.authorization # Retrieve the unique transaction ID returned by Ogone
|
62
|
+
# puts response.order_id # Retrieve the order ID
|
63
|
+
#
|
64
|
+
# == Alias feature
|
65
|
+
#
|
66
|
+
# To use the alias feature, simply add :billing_id in the options hash:
|
67
|
+
#
|
68
|
+
# # Associate the alias to that credit card
|
69
|
+
# gateway.purchase(1000, creditcard, :order_id => "1", :billing_id => "myawesomecustomer")
|
70
|
+
#
|
71
|
+
# # You can use the alias instead of the credit card for subsequent orders
|
72
|
+
# gateway.purchase(2000, "myawesomecustomer", :order_id => "2")
|
73
|
+
#
|
74
|
+
# # You can also create an alias without making a purchase using store
|
75
|
+
# gateway.store(creditcard, :billing_id => "myawesomecustomer")
|
76
|
+
#
|
77
|
+
# # When using store, you can also let Ogone generate the alias for you
|
78
|
+
# response = gateway.store(creditcard)
|
79
|
+
# puts response.billing_id # Retrieve the generated alias
|
80
|
+
#
|
81
|
+
# # By default, Ogone tries to authorize 0.01 EUR but you can change this
|
82
|
+
# # amount using the :store_amount option when creating the gateway object:
|
83
|
+
# gateway = ActiveMerchant::Billing::OgoneGateway.new(
|
84
|
+
# :login => "my_ogone_psp_id",
|
85
|
+
# :user => "my_ogone_user_id",
|
86
|
+
# :password => "my_ogone_pswd",
|
87
|
+
# :signature => "my_ogone_sha_signature",
|
88
|
+
# :signature_encryptor => "sha512",
|
89
|
+
# :store_amount => 100 # The store method will try to authorize 1 EUR instead of 0.01 EUR
|
90
|
+
# )
|
91
|
+
# response = gateway.store(creditcard) # authorize 1 EUR and void the authorization right away
|
92
|
+
#
|
93
|
+
# == 3-D Secure feature
|
94
|
+
#
|
95
|
+
# To use the 3-D Secure feature, simply add :d3d => true in the options hash:
|
96
|
+
# gateway.purchase(2000, "myawesomecustomer", :order_id => "2", :d3d => true)
|
97
|
+
#
|
98
|
+
# Specific 3-D Secure request options are (please refer to the documentation for more infos about these options):
|
99
|
+
# :win_3ds => :main_window (default), :pop_up or :pop_ix.
|
100
|
+
# :http_accept => "*/*" (default), or any other HTTP_ACCEPT header value.
|
101
|
+
# :http_user_agent => The cardholder's User-Agent string
|
102
|
+
# :accept_url => URL of the web page to show the customer when the payment is authorized.
|
103
|
+
# (or waiting to be authorized).
|
104
|
+
# :decline_url => URL of the web page to show the customer when the acquirer rejects the authorization
|
105
|
+
# more than the maximum permitted number of authorization attempts (10 by default, but can
|
106
|
+
# be changed in the "Global transaction parameters" tab, "Payment retry" section of the
|
107
|
+
# Technical Information page).
|
108
|
+
# :exception_url => URL of the web page to show the customer when the payment result is uncertain.
|
109
|
+
# :paramplus => Field to submit the miscellaneous parameters and their values that you wish to be
|
110
|
+
# returned in the post sale request or final redirection.
|
111
|
+
# :complus => Field to submit a value you wish to be returned in the post sale request or output.
|
112
|
+
# :language => Customer's language, for example: "en_EN"
|
113
|
+
#
|
114
|
+
class OgoneGateway < Gateway
|
115
|
+
CVV_MAPPING = { 'OK' => 'M',
|
116
|
+
'KO' => 'N',
|
117
|
+
'NO' => 'P' }
|
118
|
+
|
119
|
+
AVS_MAPPING = { 'OK' => 'M',
|
120
|
+
'KO' => 'N',
|
121
|
+
'NO' => 'R' }
|
122
|
+
|
123
|
+
SUCCESS_MESSAGE = 'The transaction was successful'
|
124
|
+
|
125
|
+
THREE_D_SECURE_DISPLAY_WAYS = { main_window: 'MAINW', # display the identification page in the main window (default value).
|
126
|
+
|
127
|
+
pop_up: 'POPUP', # display the identification page in a pop-up window and return to the main window at the end.
|
128
|
+
pop_ix: 'POPIX' } # display the identification page in a pop-up window and remain in the pop-up window.
|
129
|
+
|
130
|
+
OGONE_NO_SIGNATURE_DEPRECATION_MESSAGE = 'Signature usage will be the default for a future release of ActiveMerchant. You should either begin using it, or update your configuration to explicitly disable it (signature_encryptor: none)'
|
131
|
+
OGONE_STORE_OPTION_DEPRECATION_MESSAGE = "The 'store' option has been renamed to 'billing_id', and its usage is deprecated."
|
132
|
+
|
133
|
+
self.test_url = 'https://secure.ogone.com/ncol/test/'
|
134
|
+
self.live_url = 'https://secure.ogone.com/ncol/prod/'
|
135
|
+
|
136
|
+
self.supported_countries = %w[BE DE FR NL AT CH]
|
137
|
+
# also supports Airplus and UATP
|
138
|
+
self.supported_cardtypes = %i[visa master american_express diners_club discover jcb maestro]
|
139
|
+
self.homepage_url = 'https://www.ingenico.com/login/ogone/'
|
140
|
+
self.display_name = 'Ogone'
|
141
|
+
self.default_currency = 'EUR'
|
142
|
+
self.money_format = :cents
|
143
|
+
|
144
|
+
def initialize(options = {})
|
145
|
+
requires!(options, :login, :user, :password)
|
146
|
+
super
|
147
|
+
end
|
148
|
+
|
149
|
+
# Verify and reserve the specified amount on the account, without actually doing the transaction.
|
150
|
+
def authorize(money, payment_source, options = {})
|
151
|
+
post = {}
|
152
|
+
action = payment_source.brand == 'mastercard' ? 'PAU' : 'RES'
|
153
|
+
add_invoice(post, options)
|
154
|
+
add_payment_source(post, payment_source, options)
|
155
|
+
add_address(post, payment_source, options)
|
156
|
+
add_customer_data(post, options)
|
157
|
+
add_money(post, money, options)
|
158
|
+
commit(action, post)
|
159
|
+
end
|
160
|
+
|
161
|
+
# Verify and transfer the specified amount.
|
162
|
+
def purchase(money, payment_source, options = {})
|
163
|
+
post = {}
|
164
|
+
action = options[:action] || 'SAL'
|
165
|
+
add_invoice(post, options)
|
166
|
+
add_payment_source(post, payment_source, options)
|
167
|
+
add_address(post, payment_source, options)
|
168
|
+
add_customer_data(post, options)
|
169
|
+
add_money(post, money, options)
|
170
|
+
commit(action, post)
|
171
|
+
end
|
172
|
+
|
173
|
+
# Complete a previously authorized transaction.
|
174
|
+
def capture(money, authorization, options = {})
|
175
|
+
post = {}
|
176
|
+
action = options[:action] || 'SAL'
|
177
|
+
add_authorization(post, reference_from(authorization))
|
178
|
+
add_invoice(post, options)
|
179
|
+
add_customer_data(post, options)
|
180
|
+
add_money(post, money, options)
|
181
|
+
commit(action, post)
|
182
|
+
end
|
183
|
+
|
184
|
+
# Cancels a previously authorized transaction.
|
185
|
+
def void(identification, options = {})
|
186
|
+
post = {}
|
187
|
+
add_authorization(post, reference_from(identification))
|
188
|
+
commit('DES', post)
|
189
|
+
end
|
190
|
+
|
191
|
+
# Credit the specified account by a specific amount.
|
192
|
+
def credit(money, identification_or_credit_card, options = {})
|
193
|
+
if reference_transaction?(identification_or_credit_card)
|
194
|
+
ActiveMerchant.deprecated CREDIT_DEPRECATION_MESSAGE
|
195
|
+
# Referenced credit: refund of a settled transaction
|
196
|
+
refund(money, identification_or_credit_card, options)
|
197
|
+
else # must be a credit card or card reference
|
198
|
+
perform_non_referenced_credit(money, identification_or_credit_card, options)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
# Refund of a settled transaction
|
203
|
+
def refund(money, reference, options = {})
|
204
|
+
perform_reference_credit(money, reference, options)
|
205
|
+
end
|
206
|
+
|
207
|
+
def verify(credit_card, options = {})
|
208
|
+
MultiResponse.run(:use_first_response) do |r|
|
209
|
+
r.process { authorize(100, credit_card, options) }
|
210
|
+
r.process(:ignore_result) { void(r.authorization, options) }
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
# Store a credit card by creating an Ogone Alias
|
215
|
+
def store(payment_source, options = {})
|
216
|
+
options[:alias_operation] = 'BYPSP' unless options.has_key?(:billing_id) || options.has_key?(:store)
|
217
|
+
response = authorize(@options[:store_amount] || 1, payment_source, options)
|
218
|
+
void(response.authorization) if response.success?
|
219
|
+
response
|
220
|
+
end
|
221
|
+
|
222
|
+
def supports_scrubbing?
|
223
|
+
true
|
224
|
+
end
|
225
|
+
|
226
|
+
def scrub(transcript)
|
227
|
+
transcript.
|
228
|
+
gsub(%r((Authorization: Basic )\w+), '\1[FILTERED]').
|
229
|
+
gsub(%r((&?cardno=)[^&]*)i, '\1[FILTERED]').
|
230
|
+
gsub(%r((&?cvc=)[^&]*)i, '\1[FILTERED]').
|
231
|
+
gsub(%r((&?pswd=)[^&]*)i, '\1[FILTERED]')
|
232
|
+
end
|
233
|
+
|
234
|
+
private
|
235
|
+
|
236
|
+
def reference_from(authorization)
|
237
|
+
authorization.split(';').first
|
238
|
+
end
|
239
|
+
|
240
|
+
def reference_transaction?(identifier)
|
241
|
+
return false unless identifier.is_a?(String)
|
242
|
+
|
243
|
+
_, action = identifier.split(';')
|
244
|
+
!action.nil?
|
245
|
+
end
|
246
|
+
|
247
|
+
def perform_reference_credit(money, payment_target, options = {})
|
248
|
+
post = {}
|
249
|
+
add_authorization(post, reference_from(payment_target))
|
250
|
+
add_money(post, money, options)
|
251
|
+
commit('RFD', post)
|
252
|
+
end
|
253
|
+
|
254
|
+
def perform_non_referenced_credit(money, payment_target, options = {})
|
255
|
+
# Non-referenced credit: acts like a reverse purchase
|
256
|
+
post = {}
|
257
|
+
add_invoice(post, options)
|
258
|
+
add_payment_source(post, payment_target, options)
|
259
|
+
add_address(post, payment_target, options)
|
260
|
+
add_customer_data(post, options)
|
261
|
+
add_money(post, money, options)
|
262
|
+
commit('RFD', post)
|
263
|
+
end
|
264
|
+
|
265
|
+
def add_payment_source(post, payment_source, options)
|
266
|
+
add_d3d(post, options) if options[:d3d]
|
267
|
+
if payment_source.is_a?(String)
|
268
|
+
add_alias(post, payment_source, options[:alias_operation])
|
269
|
+
add_eci(post, options[:eci] || '9')
|
270
|
+
else
|
271
|
+
if options.has_key?(:store)
|
272
|
+
ActiveMerchant.deprecated OGONE_STORE_OPTION_DEPRECATION_MESSAGE
|
273
|
+
options[:billing_id] ||= options[:store]
|
274
|
+
end
|
275
|
+
add_alias(post, options[:billing_id], options[:alias_operation])
|
276
|
+
add_eci(post, options[:eci] || '7')
|
277
|
+
add_creditcard(post, payment_source)
|
278
|
+
end
|
279
|
+
end
|
280
|
+
|
281
|
+
def add_d3d(post, options)
|
282
|
+
add_pair post, 'FLAG3D', 'Y'
|
283
|
+
win_3ds = THREE_D_SECURE_DISPLAY_WAYS.key?(options[:win_3ds]) ?
|
284
|
+
THREE_D_SECURE_DISPLAY_WAYS[options[:win_3ds]] :
|
285
|
+
THREE_D_SECURE_DISPLAY_WAYS[:main_window]
|
286
|
+
add_pair post, 'WIN3DS', win_3ds
|
287
|
+
add_pair post, 'HTTP_USER_AGENT', options[:http_user_agent] if options[:http_user_agent]
|
288
|
+
add_pair post, 'ACCEPTURL', options[:accept_url] if options[:accept_url]
|
289
|
+
add_pair post, 'DECLINEURL', options[:decline_url] if options[:decline_url]
|
290
|
+
add_pair post, 'EXCEPTIONURL', options[:exception_url] if options[:exception_url]
|
291
|
+
add_pair post, 'CANCELURL', options[:cancel_url] if options[:cancel_url]
|
292
|
+
add_pair post, 'PARAMVAR', options[:paramvar] if options[:paramvar]
|
293
|
+
add_pair post, 'PARAMPLUS', options[:paramplus] if options[:paramplus]
|
294
|
+
add_pair post, 'COMPLUS', options[:complus] if options[:complus]
|
295
|
+
add_pair post, 'LANGUAGE', options[:language] if options[:language]
|
296
|
+
if options[:three_ds_2]
|
297
|
+
browser_info = options[:three_ds_2][:browser_info]
|
298
|
+
ecom_postal = options[:billing_address]
|
299
|
+
if browser_info
|
300
|
+
add_pair post, 'BROWSERACCEPTHEADER', browser_info[:accept_header]
|
301
|
+
add_pair post, 'BROWSERCOLORDEPTH', browser_info[:depth]
|
302
|
+
|
303
|
+
# for 3ds v2.1 to v2.2 add BROWSERJAVASCRIPTENABLED: This boolean indicates whether your customers have enabled JavaScript in their browsers when making a purchase.
|
304
|
+
# the following BROWSER<tag> parameters will remain mandatory unless browser_info[:javascript] = false
|
305
|
+
# her documentation https://epayments-support.ingenico.com/en/integration-solutions/integrations/directlink#directlink_integration_guides_secure_payment_with_3_d_secure
|
306
|
+
add_pair post, 'BROWSERJAVASCRIPTENABLED', browser_info[:javascript]
|
307
|
+
add_pair post, 'BROWSERJAVAENABLED', browser_info[:java]
|
308
|
+
add_pair post, 'BROWSERLANGUAGE', browser_info[:language]
|
309
|
+
add_pair post, 'BROWSERSCREENHEIGHT', browser_info[:height]
|
310
|
+
add_pair post, 'BROWSERSCREENWIDTH', browser_info[:width]
|
311
|
+
add_pair post, 'BROWSERTIMEZONE', browser_info[:timezone]
|
312
|
+
add_pair post, 'BROWSERUSERAGENT', browser_info[:user_agent]
|
313
|
+
end
|
314
|
+
# recommended
|
315
|
+
if ecom_postal
|
316
|
+
add_pair post, 'ECOM_BILLTO_POSTAL_CITY', ecom_postal[:city]
|
317
|
+
add_pair post, 'ECOM_BILLTO_POSTAL_COUNTRYCODE', ecom_postal[:country]
|
318
|
+
add_pair post, 'ECOM_BILLTO_POSTAL_STREET_LINE1', ecom_postal[:address1]
|
319
|
+
add_pair post, 'ECOM_BILLTO_POSTAL_STREET_LINE2', ecom_postal[:address2]
|
320
|
+
add_pair post, 'ECOM_BILLTO_POSTAL_POSTALCODE', ecom_postal[:zip]
|
321
|
+
end
|
322
|
+
# optional
|
323
|
+
add_pair post, 'Mpi.threeDSRequestorChallengeIndicator', options[:three_ds_reqchallengeind]
|
324
|
+
else
|
325
|
+
add_pair post, 'HTTP_ACCEPT', options[:http_accept] || '*/*'
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
329
|
+
def add_eci(post, eci)
|
330
|
+
add_pair post, 'ECI', eci.to_s
|
331
|
+
end
|
332
|
+
|
333
|
+
def add_alias(post, alias_name, alias_operation = nil)
|
334
|
+
add_pair post, 'ALIAS', alias_name
|
335
|
+
add_pair post, 'ALIASOPERATION', alias_operation unless alias_operation.nil?
|
336
|
+
end
|
337
|
+
|
338
|
+
def add_authorization(post, authorization)
|
339
|
+
add_pair post, 'PAYID', authorization
|
340
|
+
end
|
341
|
+
|
342
|
+
def add_money(post, money, options)
|
343
|
+
add_pair post, 'currency', options[:currency] || @options[:currency] || currency(money)
|
344
|
+
add_pair post, 'amount', amount(money)
|
345
|
+
end
|
346
|
+
|
347
|
+
def add_customer_data(post, options)
|
348
|
+
add_pair post, 'EMAIL', options[:email]
|
349
|
+
add_pair post, 'REMOTE_ADDR', options[:ip]
|
350
|
+
end
|
351
|
+
|
352
|
+
def add_address(post, creditcard, options)
|
353
|
+
return unless options[:billing_address]
|
354
|
+
|
355
|
+
add_pair post, 'Owneraddress', options[:billing_address][:address1]
|
356
|
+
add_pair post, 'OwnerZip', options[:billing_address][:zip]
|
357
|
+
add_pair post, 'ownertown', options[:billing_address][:city]
|
358
|
+
add_pair post, 'ownercty', options[:billing_address][:country]
|
359
|
+
add_pair post, 'ownertelno', options[:billing_address][:phone]
|
360
|
+
end
|
361
|
+
|
362
|
+
def add_invoice(post, options)
|
363
|
+
add_pair post, 'orderID', options[:order_id] || generate_unique_id[0...30]
|
364
|
+
add_pair post, 'COM', options[:description]
|
365
|
+
add_pair post, 'ORIG', options[:origin] if options[:origin]
|
366
|
+
end
|
367
|
+
|
368
|
+
def add_creditcard(post, creditcard)
|
369
|
+
add_pair post, 'CN', creditcard.name
|
370
|
+
add_pair post, 'CARDNO', creditcard.number
|
371
|
+
add_pair post, 'ED', '%02d%02s' % [creditcard.month, creditcard.year.to_s[-2..-1]]
|
372
|
+
add_pair post, 'CVC', creditcard.verification_value
|
373
|
+
end
|
374
|
+
|
375
|
+
def parse(body)
|
376
|
+
xml_root = REXML::Document.new(body).root
|
377
|
+
response = convert_attributes_to_hash(xml_root.attributes)
|
378
|
+
|
379
|
+
# Add HTML_ANSWER element (3-D Secure specific to the response's params)
|
380
|
+
# Note: HTML_ANSWER is not an attribute so we add it "by hand" to the response
|
381
|
+
if html_answer = REXML::XPath.first(xml_root, '//HTML_ANSWER')
|
382
|
+
response['HTML_ANSWER'] = html_answer.text
|
383
|
+
end
|
384
|
+
|
385
|
+
response
|
386
|
+
end
|
387
|
+
|
388
|
+
def commit(action, parameters)
|
389
|
+
add_pair parameters, 'RTIMEOUT', @options[:timeout] if @options[:timeout]
|
390
|
+
add_pair parameters, 'PSPID', @options[:login]
|
391
|
+
add_pair parameters, 'USERID', @options[:user]
|
392
|
+
add_pair parameters, 'PSWD', @options[:password]
|
393
|
+
|
394
|
+
response = parse(ssl_post(url(parameters['PAYID']), post_data(action, parameters)))
|
395
|
+
|
396
|
+
options = {
|
397
|
+
authorization: [response['PAYID'], action].join(';'),
|
398
|
+
test: test?,
|
399
|
+
avs_result: { code: AVS_MAPPING[response['AAVCheck']] },
|
400
|
+
cvv_result: CVV_MAPPING[response['CVCCheck']]
|
401
|
+
}
|
402
|
+
OgoneResponse.new(successful?(response), message_from(response), response, options)
|
403
|
+
end
|
404
|
+
|
405
|
+
def url(payid)
|
406
|
+
(test? ? test_url : live_url) + (payid ? 'maintenancedirect.asp' : 'orderdirect.asp')
|
407
|
+
end
|
408
|
+
|
409
|
+
def successful?(response)
|
410
|
+
response['NCERROR'] == '0'
|
411
|
+
end
|
412
|
+
|
413
|
+
def message_from(response)
|
414
|
+
if successful?(response)
|
415
|
+
SUCCESS_MESSAGE
|
416
|
+
else
|
417
|
+
format_error_message(response['NCERRORPLUS'])
|
418
|
+
end
|
419
|
+
end
|
420
|
+
|
421
|
+
def format_error_message(message)
|
422
|
+
raw_message = message.to_s.strip
|
423
|
+
case raw_message
|
424
|
+
when /\|/
|
425
|
+
raw_message.split('|').join(', ').capitalize
|
426
|
+
when /\//
|
427
|
+
raw_message.split('/').first.to_s.capitalize
|
428
|
+
else
|
429
|
+
raw_message.to_s.capitalize
|
430
|
+
end
|
431
|
+
end
|
432
|
+
|
433
|
+
def post_data(action, parameters = {})
|
434
|
+
add_pair parameters, 'Operation', action
|
435
|
+
add_signature(parameters)
|
436
|
+
parameters.to_query
|
437
|
+
end
|
438
|
+
|
439
|
+
def add_signature(parameters)
|
440
|
+
if @options[:signature].blank?
|
441
|
+
ActiveMerchant.deprecated(OGONE_NO_SIGNATURE_DEPRECATION_MESSAGE) unless @options[:signature_encryptor] == 'none'
|
442
|
+
return
|
443
|
+
end
|
444
|
+
|
445
|
+
add_pair parameters, 'SHASIGN', calculate_signature(parameters, @options[:signature_encryptor], @options[:signature])
|
446
|
+
end
|
447
|
+
|
448
|
+
def calculate_signature(signed_parameters, algorithm, secret)
|
449
|
+
return legacy_calculate_signature(signed_parameters, secret) unless algorithm
|
450
|
+
|
451
|
+
sha_encryptor =
|
452
|
+
case algorithm
|
453
|
+
when 'sha256'
|
454
|
+
Digest::SHA256
|
455
|
+
when 'sha512'
|
456
|
+
Digest::SHA512
|
457
|
+
when 'sha1'
|
458
|
+
Digest::SHA1
|
459
|
+
else
|
460
|
+
raise "Unknown signature algorithm #{algorithm}"
|
461
|
+
end
|
462
|
+
|
463
|
+
filtered_params = signed_parameters.compact
|
464
|
+
sha_encryptor.hexdigest(
|
465
|
+
filtered_params.sort_by { |k, _v| k.upcase }.map { |k, v| "#{k.upcase}=#{v}#{secret}" }.join('')
|
466
|
+
).upcase
|
467
|
+
end
|
468
|
+
|
469
|
+
def legacy_calculate_signature(parameters, secret)
|
470
|
+
Digest::SHA1.hexdigest(
|
471
|
+
(
|
472
|
+
%w(
|
473
|
+
orderID
|
474
|
+
amount
|
475
|
+
currency
|
476
|
+
CARDNO
|
477
|
+
PSPID
|
478
|
+
Operation
|
479
|
+
ALIAS
|
480
|
+
).map { |key| parameters[key] } +
|
481
|
+
[secret]
|
482
|
+
).join('')
|
483
|
+
).upcase
|
484
|
+
end
|
485
|
+
|
486
|
+
def add_pair(post, key, value)
|
487
|
+
post[key] = value unless value.nil?
|
488
|
+
end
|
489
|
+
|
490
|
+
def convert_attributes_to_hash(rexml_attributes)
|
491
|
+
response_hash = {}
|
492
|
+
rexml_attributes.each do |key, value|
|
493
|
+
response_hash[key] = value
|
494
|
+
end
|
495
|
+
response_hash
|
496
|
+
end
|
497
|
+
end
|
498
|
+
|
499
|
+
class OgoneResponse < Response
|
500
|
+
def order_id
|
501
|
+
@params['orderID']
|
502
|
+
end
|
503
|
+
|
504
|
+
def billing_id
|
505
|
+
@params['ALIAS']
|
506
|
+
end
|
507
|
+
end
|
508
|
+
end
|
509
|
+
end
|