activemerchant 1.42.6 → 1.90.0
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 +5 -13
- data/CHANGELOG +1420 -2
- data/CONTRIBUTORS +106 -0
- data/README.md +107 -103
- data/lib/active_merchant/billing/apple_pay_payment_token.rb +22 -0
- data/lib/active_merchant/billing/avs_result.rb +12 -13
- data/lib/active_merchant/billing/base.rb +13 -16
- data/lib/active_merchant/billing/check.rb +35 -24
- data/lib/active_merchant/billing/compatibility.rb +117 -0
- data/lib/active_merchant/billing/credit_card.rb +196 -81
- data/lib/active_merchant/billing/credit_card_formatting.rb +6 -4
- data/lib/active_merchant/billing/credit_card_methods.rb +199 -75
- data/lib/active_merchant/billing/cvv_result.rb +15 -15
- data/lib/active_merchant/billing/gateway.rb +171 -39
- data/lib/active_merchant/billing/gateways/adyen.rb +380 -0
- data/lib/active_merchant/billing/gateways/allied_wallet.rb +205 -0
- data/lib/active_merchant/billing/gateways/authorize_net.rb +933 -604
- data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +417 -0
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +74 -54
- data/lib/active_merchant/billing/gateways/axcessms.rb +181 -0
- data/lib/active_merchant/billing/gateways/balanced.rb +130 -370
- data/lib/active_merchant/billing/gateways/bank_frick.rb +225 -0
- data/lib/active_merchant/billing/gateways/banwire.rb +23 -12
- data/lib/active_merchant/billing/gateways/barclaycard_smartpay.rb +351 -0
- data/lib/active_merchant/billing/gateways/barclays_epdq_extra_plus.rb +6 -6
- data/lib/active_merchant/billing/gateways/be2bill.rb +2 -2
- data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +109 -32
- data/lib/active_merchant/billing/gateways/beanstream.rb +59 -13
- data/lib/active_merchant/billing/gateways/beanstream_interac.rb +12 -9
- data/lib/active_merchant/billing/gateways/blue_pay.rb +520 -498
- data/lib/active_merchant/billing/gateways/blue_snap.rb +347 -0
- data/lib/active_merchant/billing/gateways/bogus.rb +80 -46
- data/lib/active_merchant/billing/gateways/borgun.rb +220 -0
- data/lib/active_merchant/billing/gateways/bpoint.rb +277 -0
- data/lib/active_merchant/billing/gateways/braintree/braintree_common.rb +15 -2
- data/lib/active_merchant/billing/gateways/braintree.rb +2 -2
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +311 -121
- data/lib/active_merchant/billing/gateways/braintree_orange.rb +4 -4
- 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 +311 -0
- data/lib/active_merchant/billing/gateways/card_save.rb +6 -7
- data/lib/active_merchant/billing/gateways/card_stream.rb +235 -89
- data/lib/active_merchant/billing/gateways/cardknox.rb +327 -0
- data/lib/active_merchant/billing/gateways/cardprocess.rb +254 -0
- data/lib/active_merchant/billing/gateways/cashnet.rb +219 -0
- data/lib/active_merchant/billing/gateways/cc5.rb +50 -8
- data/lib/active_merchant/billing/gateways/cecabank.rb +27 -14
- data/lib/active_merchant/billing/gateways/cenpos.rb +327 -0
- data/lib/active_merchant/billing/gateways/checkout.rb +214 -0
- data/lib/active_merchant/billing/gateways/checkout_v2.rb +233 -0
- data/lib/active_merchant/billing/gateways/citrus_pay.rb +22 -0
- data/lib/active_merchant/billing/gateways/clearhaus.rb +220 -0
- data/lib/active_merchant/billing/gateways/commercegate.rb +142 -0
- data/lib/active_merchant/billing/gateways/conekta.rb +91 -97
- data/lib/active_merchant/billing/gateways/creditcall.rb +271 -0
- data/lib/active_merchant/billing/gateways/credorax.rb +356 -0
- data/lib/active_merchant/billing/gateways/ct_payment.rb +268 -0
- data/lib/active_merchant/billing/gateways/culqi.rb +277 -0
- data/lib/active_merchant/billing/gateways/cyber_source.rb +294 -158
- data/lib/active_merchant/billing/gateways/d_local.rb +226 -0
- data/lib/active_merchant/billing/gateways/data_cash.rb +59 -347
- data/lib/active_merchant/billing/gateways/dibs.rb +199 -0
- data/lib/active_merchant/billing/gateways/digitzs.rb +292 -0
- data/lib/active_merchant/billing/gateways/ebanx.rb +296 -0
- data/lib/active_merchant/billing/gateways/efsnet.rb +24 -39
- data/lib/active_merchant/billing/gateways/elavon.rb +146 -147
- data/lib/active_merchant/billing/gateways/element.rb +356 -0
- data/lib/active_merchant/billing/gateways/epay.rb +41 -31
- data/lib/active_merchant/billing/gateways/evo_ca.rb +1 -1
- data/lib/active_merchant/billing/gateways/eway.rb +79 -78
- data/lib/active_merchant/billing/gateways/eway_managed.rb +35 -36
- data/lib/active_merchant/billing/gateways/eway_rapid.rb +369 -228
- data/lib/active_merchant/billing/gateways/exact.rb +32 -26
- data/lib/active_merchant/billing/gateways/ezic.rb +195 -0
- data/lib/active_merchant/billing/gateways/fat_zebra.rb +90 -64
- data/lib/active_merchant/billing/gateways/federated_canada.rb +6 -14
- data/lib/active_merchant/billing/gateways/finansbank.rb +3 -3
- data/lib/active_merchant/billing/gateways/first_giving.rb +142 -0
- data/lib/active_merchant/billing/gateways/first_pay.rb +128 -122
- data/lib/active_merchant/billing/gateways/firstdata_e4.rb +190 -64
- data/lib/active_merchant/billing/gateways/firstdata_e4_v27.rb +446 -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/forte.rb +270 -0
- data/lib/active_merchant/billing/gateways/garanti.rb +29 -27
- data/lib/active_merchant/billing/gateways/global_collect.rb +340 -0
- data/lib/active_merchant/billing/gateways/global_transport.rb +194 -0
- data/lib/active_merchant/billing/gateways/hdfc.rb +35 -36
- data/lib/active_merchant/billing/gateways/hps.rb +305 -0
- data/lib/active_merchant/billing/gateways/iats_payments.rb +271 -16
- data/lib/active_merchant/billing/gateways/in_context_paypal_express.rb +15 -0
- data/lib/active_merchant/billing/gateways/inspire.rb +29 -32
- data/lib/active_merchant/billing/gateways/instapay.rb +5 -6
- data/lib/active_merchant/billing/gateways/ipp.rb +175 -0
- data/lib/active_merchant/billing/gateways/iridium.rb +247 -41
- data/lib/active_merchant/billing/gateways/itransact.rb +4 -5
- data/lib/active_merchant/billing/gateways/iveri.rb +251 -0
- data/lib/active_merchant/billing/gateways/jetpay.rb +198 -71
- data/lib/active_merchant/billing/gateways/jetpay_v2.rb +437 -0
- data/lib/active_merchant/billing/gateways/komoju.rb +115 -0
- data/lib/active_merchant/billing/gateways/kushki.rb +219 -0
- data/lib/active_merchant/billing/gateways/latitude19.rb +411 -0
- data/lib/active_merchant/billing/gateways/linkpoint.rb +45 -43
- data/lib/active_merchant/billing/gateways/litle.rb +328 -444
- data/lib/active_merchant/billing/gateways/mastercard.rb +267 -0
- data/lib/active_merchant/billing/gateways/maxipago.rb +145 -115
- data/lib/active_merchant/billing/gateways/mercado_pago.rb +277 -0
- data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +37 -19
- data/lib/active_merchant/billing/gateways/merchant_one.rb +13 -15
- data/lib/active_merchant/billing/gateways/merchant_partners.rb +245 -0
- data/lib/active_merchant/billing/gateways/merchant_ware.rb +57 -60
- data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +59 -48
- data/lib/active_merchant/billing/gateways/merchant_warrior.rb +38 -19
- data/lib/active_merchant/billing/gateways/mercury.rb +77 -54
- data/lib/active_merchant/billing/gateways/metrics_global.rb +11 -30
- data/lib/active_merchant/billing/gateways/micropayment.rb +183 -0
- data/lib/active_merchant/billing/gateways/migs.rb +81 -22
- data/lib/active_merchant/billing/gateways/modern_payments.rb +3 -3
- data/lib/active_merchant/billing/gateways/modern_payments_cim.rb +23 -25
- data/lib/active_merchant/billing/gateways/monei.rb +307 -0
- data/lib/active_merchant/billing/gateways/moneris.rb +146 -64
- data/lib/active_merchant/billing/gateways/moneris_us.rb +197 -53
- data/lib/active_merchant/billing/gateways/money_movers.rb +6 -15
- data/lib/active_merchant/billing/gateways/mundipagg.rb +292 -0
- data/lib/active_merchant/billing/gateways/nab_transact.rb +86 -64
- data/lib/active_merchant/billing/gateways/ncr_secure_pay.rb +165 -0
- data/lib/active_merchant/billing/gateways/net_registry.rb +11 -5
- data/lib/active_merchant/billing/gateways/netaxept.rb +21 -22
- data/lib/active_merchant/billing/gateways/netbanx.rb +290 -0
- data/lib/active_merchant/billing/gateways/netbilling.rb +70 -35
- data/lib/active_merchant/billing/gateways/netpay.rb +5 -6
- data/lib/active_merchant/billing/gateways/network_merchants.rb +241 -0
- data/lib/active_merchant/billing/gateways/nmi.rb +274 -10
- data/lib/active_merchant/billing/gateways/ogone.rb +90 -47
- data/lib/active_merchant/billing/gateways/omise.rb +324 -0
- data/lib/active_merchant/billing/gateways/openpay.rb +48 -20
- data/lib/active_merchant/billing/gateways/opp.rb +369 -0
- data/lib/active_merchant/billing/gateways/optimal_payment.rb +79 -44
- data/lib/active_merchant/billing/gateways/orbital/orbital_soft_descriptors.rb +22 -21
- data/lib/active_merchant/billing/gateways/orbital.rb +346 -102
- data/lib/active_merchant/billing/gateways/pac_net_raven.rb +48 -29
- data/lib/active_merchant/billing/gateways/pagarme.rb +246 -0
- data/lib/active_merchant/billing/gateways/pago_facil.rb +122 -0
- data/lib/active_merchant/billing/gateways/pay_conex.rb +245 -0
- data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +67 -48
- data/lib/active_merchant/billing/gateways/pay_hub.rb +213 -0
- data/lib/active_merchant/billing/gateways/pay_junction.rb +20 -26
- data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +188 -0
- data/lib/active_merchant/billing/gateways/pay_secure.rb +7 -15
- data/lib/active_merchant/billing/gateways/paybox_direct.rb +40 -36
- data/lib/active_merchant/billing/gateways/payeezy.rb +410 -0
- data/lib/active_merchant/billing/gateways/payex.rb +38 -30
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +62 -36
- data/lib/active_merchant/billing/gateways/payflow/payflow_express_response.rb +11 -7
- data/lib/active_merchant/billing/gateways/payflow/payflow_response.rb +3 -3
- data/lib/active_merchant/billing/gateways/payflow.rb +74 -27
- data/lib/active_merchant/billing/gateways/payflow_express.rb +77 -81
- data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +2 -3
- data/lib/active_merchant/billing/gateways/payflow_uk.rb +5 -6
- data/lib/active_merchant/billing/gateways/payment_express.rb +54 -45
- data/lib/active_merchant/billing/gateways/paymentez.rb +304 -0
- data/lib/active_merchant/billing/gateways/paymill.rb +160 -66
- data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +54 -7
- data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +4 -0
- data/lib/active_merchant/billing/gateways/paypal/paypal_recurring_api.rb +17 -3
- data/lib/active_merchant/billing/gateways/paypal.rb +36 -27
- data/lib/active_merchant/billing/gateways/paypal_ca.rb +1 -1
- data/lib/active_merchant/billing/gateways/paypal_digital_goods.rb +7 -6
- data/lib/active_merchant/billing/gateways/paypal_express.rb +32 -4
- data/lib/active_merchant/billing/gateways/paypal_express_common.rb +3 -3
- data/lib/active_merchant/billing/gateways/payscout.rb +2 -13
- data/lib/active_merchant/billing/gateways/paystation.rb +96 -88
- data/lib/active_merchant/billing/gateways/payu_in.rb +248 -0
- data/lib/active_merchant/billing/gateways/payu_latam.rb +445 -0
- data/lib/active_merchant/billing/gateways/payway.rb +8 -8
- data/lib/active_merchant/billing/gateways/pin.rb +74 -18
- data/lib/active_merchant/billing/gateways/plugnpay.rb +66 -76
- data/lib/active_merchant/billing/gateways/pro_pay.rb +326 -0
- data/lib/active_merchant/billing/gateways/psigate.rb +30 -30
- data/lib/active_merchant/billing/gateways/psl_card.rb +27 -34
- data/lib/active_merchant/billing/gateways/qbms.rb +65 -54
- data/lib/active_merchant/billing/gateways/quantum.rb +18 -18
- data/lib/active_merchant/billing/gateways/quickbooks.rb +290 -0
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_common.rb +184 -0
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v10.rb +295 -0
- data/lib/active_merchant/billing/gateways/quickpay/quickpay_v4to7.rb +226 -0
- data/lib/active_merchant/billing/gateways/quickpay.rb +10 -350
- data/lib/active_merchant/billing/gateways/qvalent.rb +236 -0
- data/lib/active_merchant/billing/gateways/realex.rb +78 -48
- data/lib/active_merchant/billing/gateways/redsys.rb +310 -170
- data/lib/active_merchant/billing/gateways/s5.rb +246 -0
- data/lib/active_merchant/billing/gateways/safe_charge.rb +262 -0
- data/lib/active_merchant/billing/gateways/sage.rb +415 -119
- data/lib/active_merchant/billing/gateways/sage_pay.rb +195 -90
- data/lib/active_merchant/billing/gateways/sallie_mae.rb +11 -12
- data/lib/active_merchant/billing/gateways/secure_net.rb +51 -43
- data/lib/active_merchant/billing/gateways/secure_pay.rb +182 -10
- data/lib/active_merchant/billing/gateways/secure_pay_au.rb +25 -14
- data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +10 -18
- data/lib/active_merchant/billing/gateways/securion_pay.rb +264 -0
- data/lib/active_merchant/billing/gateways/skip_jack.rb +35 -38
- data/lib/active_merchant/billing/gateways/smart_ps.rb +50 -42
- data/lib/active_merchant/billing/gateways/so_easy_pay.rb +9 -9
- data/lib/active_merchant/billing/gateways/spreedly_core.rb +62 -12
- data/lib/active_merchant/billing/gateways/stripe.rb +536 -103
- data/lib/active_merchant/billing/gateways/swipe_checkout.rb +12 -18
- data/lib/active_merchant/billing/gateways/telr.rb +274 -0
- data/lib/active_merchant/billing/gateways/tns.rb +22 -0
- data/lib/active_merchant/billing/gateways/trans_first.rb +143 -30
- data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +608 -0
- data/lib/active_merchant/billing/gateways/transact_pro.rb +224 -0
- data/lib/active_merchant/billing/gateways/transax.rb +5 -6
- data/lib/active_merchant/billing/gateways/transnational.rb +2 -232
- data/lib/active_merchant/billing/gateways/trexle.rb +218 -0
- data/lib/active_merchant/billing/gateways/trust_commerce.rb +86 -57
- data/lib/active_merchant/billing/gateways/usa_epay.rb +4 -4
- data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +196 -89
- data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +157 -32
- data/lib/active_merchant/billing/gateways/vanco.rb +294 -0
- data/lib/active_merchant/billing/gateways/verifi.rb +42 -49
- data/lib/active_merchant/billing/gateways/viaklix.rb +11 -24
- data/lib/active_merchant/billing/gateways/visanet_peru.rb +233 -0
- data/lib/active_merchant/billing/gateways/webpay.rb +26 -28
- data/lib/active_merchant/billing/gateways/wepay.rb +237 -0
- data/lib/active_merchant/billing/gateways/wirecard.rb +153 -31
- data/lib/active_merchant/billing/gateways/world_net.rb +344 -0
- data/lib/active_merchant/billing/gateways/worldpay.rb +207 -63
- data/lib/active_merchant/billing/gateways/worldpay_online_payments.rb +215 -0
- data/lib/active_merchant/billing/gateways/worldpay_us.rb +221 -0
- data/lib/active_merchant/billing/gateways.rb +8 -11
- 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 +31 -24
- data/lib/active_merchant/billing.rb +7 -1
- data/lib/active_merchant/connection.rb +195 -0
- data/lib/active_merchant/country.rb +335 -0
- data/lib/active_merchant/empty.rb +20 -0
- data/lib/active_merchant/errors.rb +35 -0
- data/lib/active_merchant/net_http_ssl_connection.rb +10 -0
- data/lib/active_merchant/network_connection_retries.rb +80 -0
- data/lib/active_merchant/post_data.rb +25 -0
- data/lib/active_merchant/posts_data.rb +92 -0
- data/lib/active_merchant/version.rb +1 -1
- data/lib/active_merchant.rb +23 -27
- data/lib/activemerchant.rb +1 -1
- data/lib/certs/cacert.pem +3988 -0
- data/lib/support/gateway_support.rb +7 -9
- data/lib/support/outbound_hosts.rb +13 -10
- data/lib/support/ssl_verify.rb +6 -7
- data/lib/support/ssl_version.rb +87 -0
- metadata +148 -323
- checksums.yaml.gz.sig +0 -0
- data/gem-public_cert.pem +0 -21
- data/lib/active_merchant/billing/expiry_date.rb +0 -34
- data/lib/active_merchant/billing/gateways/app55.rb +0 -185
- data/lib/active_merchant/billing/gateways/barclays_epdq.rb +0 -314
- data/lib/active_merchant/billing/gateways/certo_direct.rb +0 -277
- data/lib/active_merchant/billing/gateways/ideal/ideal_base.rb +0 -249
- data/lib/active_merchant/billing/gateways/ideal/ideal_rabobank.pem +0 -13
- data/lib/active_merchant/billing/gateways/ideal/ideal_response.rb +0 -29
- data/lib/active_merchant/billing/gateways/ideal_rabobank.rb +0 -66
- data/lib/active_merchant/billing/gateways/orbital/avs_result.rb +0 -93
- data/lib/active_merchant/billing/gateways/orbital/cvv_result.rb +0 -34
- data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +0 -93
- data/lib/active_merchant/billing/gateways/sage/sage_core.rb +0 -114
- data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +0 -102
- data/lib/active_merchant/billing/gateways/samurai.rb +0 -118
- data/lib/active_merchant/billing/gateways/vindicia.rb +0 -361
- data/lib/active_merchant/billing/integrations/a1agregator/helper.rb +0 -31
- data/lib/active_merchant/billing/integrations/a1agregator/notification.rb +0 -186
- data/lib/active_merchant/billing/integrations/a1agregator/status.rb +0 -38
- data/lib/active_merchant/billing/integrations/a1agregator.rb +0 -26
- data/lib/active_merchant/billing/integrations/action_view_helper.rb +0 -74
- data/lib/active_merchant/billing/integrations/alipay/helper.rb +0 -34
- data/lib/active_merchant/billing/integrations/alipay/notification.rb +0 -101
- data/lib/active_merchant/billing/integrations/alipay.rb +0 -18
- data/lib/active_merchant/billing/integrations/authorize_net_sim/helper.rb +0 -229
- data/lib/active_merchant/billing/integrations/authorize_net_sim/notification.rb +0 -340
- data/lib/active_merchant/billing/integrations/authorize_net_sim.rb +0 -38
- data/lib/active_merchant/billing/integrations/bit_pay/helper.rb +0 -64
- data/lib/active_merchant/billing/integrations/bit_pay/notification.rb +0 -74
- data/lib/active_merchant/billing/integrations/bit_pay/return.rb +0 -10
- data/lib/active_merchant/billing/integrations/bit_pay.rb +0 -30
- data/lib/active_merchant/billing/integrations/bogus/helper.rb +0 -17
- data/lib/active_merchant/billing/integrations/bogus/notification.rb +0 -11
- data/lib/active_merchant/billing/integrations/bogus/return.rb +0 -10
- data/lib/active_merchant/billing/integrations/bogus.rb +0 -23
- data/lib/active_merchant/billing/integrations/chronopay/helper.rb +0 -120
- data/lib/active_merchant/billing/integrations/chronopay/notification.rb +0 -158
- data/lib/active_merchant/billing/integrations/chronopay/return.rb +0 -10
- data/lib/active_merchant/billing/integrations/chronopay.rb +0 -23
- data/lib/active_merchant/billing/integrations/citrus/helper.rb +0 -40
- data/lib/active_merchant/billing/integrations/citrus/notification.rb +0 -133
- data/lib/active_merchant/billing/integrations/citrus/return.rb +0 -40
- data/lib/active_merchant/billing/integrations/citrus.rb +0 -51
- data/lib/active_merchant/billing/integrations/direc_pay/helper.rb +0 -200
- data/lib/active_merchant/billing/integrations/direc_pay/notification.rb +0 -76
- data/lib/active_merchant/billing/integrations/direc_pay/return.rb +0 -32
- data/lib/active_merchant/billing/integrations/direc_pay/status.rb +0 -37
- data/lib/active_merchant/billing/integrations/direc_pay.rb +0 -41
- data/lib/active_merchant/billing/integrations/directebanking/helper.rb +0 -90
- data/lib/active_merchant/billing/integrations/directebanking/notification.rb +0 -120
- data/lib/active_merchant/billing/integrations/directebanking/return.rb +0 -11
- data/lib/active_merchant/billing/integrations/directebanking.rb +0 -47
- data/lib/active_merchant/billing/integrations/doku/helper.rb +0 -102
- data/lib/active_merchant/billing/integrations/doku/notification.rb +0 -69
- data/lib/active_merchant/billing/integrations/doku/return.rb +0 -10
- data/lib/active_merchant/billing/integrations/doku.rb +0 -24
- data/lib/active_merchant/billing/integrations/dotpay/helper.rb +0 -77
- data/lib/active_merchant/billing/integrations/dotpay/notification.rb +0 -86
- data/lib/active_merchant/billing/integrations/dotpay/return.rb +0 -11
- data/lib/active_merchant/billing/integrations/dotpay.rb +0 -22
- data/lib/active_merchant/billing/integrations/dwolla/common.rb +0 -23
- data/lib/active_merchant/billing/integrations/dwolla/helper.rb +0 -43
- data/lib/active_merchant/billing/integrations/dwolla/notification.rb +0 -64
- data/lib/active_merchant/billing/integrations/dwolla/return.rb +0 -49
- data/lib/active_merchant/billing/integrations/dwolla.rb +0 -23
- data/lib/active_merchant/billing/integrations/e_payment_plans/helper.rb +0 -34
- data/lib/active_merchant/billing/integrations/e_payment_plans/notification.rb +0 -84
- data/lib/active_merchant/billing/integrations/e_payment_plans.rb +0 -48
- data/lib/active_merchant/billing/integrations/easy_pay/common.rb +0 -40
- data/lib/active_merchant/billing/integrations/easy_pay/helper.rb +0 -36
- data/lib/active_merchant/billing/integrations/easy_pay/notification.rb +0 -59
- data/lib/active_merchant/billing/integrations/easy_pay.rb +0 -30
- data/lib/active_merchant/billing/integrations/epay/helper.rb +0 -55
- data/lib/active_merchant/billing/integrations/epay/notification.rb +0 -110
- data/lib/active_merchant/billing/integrations/epay.rb +0 -21
- data/lib/active_merchant/billing/integrations/first_data/helper.rb +0 -61
- data/lib/active_merchant/billing/integrations/first_data/notification.rb +0 -56
- data/lib/active_merchant/billing/integrations/first_data.rb +0 -38
- data/lib/active_merchant/billing/integrations/gestpay/common.rb +0 -42
- data/lib/active_merchant/billing/integrations/gestpay/helper.rb +0 -70
- data/lib/active_merchant/billing/integrations/gestpay/notification.rb +0 -85
- data/lib/active_merchant/billing/integrations/gestpay/return.rb +0 -10
- data/lib/active_merchant/billing/integrations/gestpay.rb +0 -25
- data/lib/active_merchant/billing/integrations/helper.rb +0 -117
- data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +0 -58
- data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +0 -59
- data/lib/active_merchant/billing/integrations/hi_trust/return.rb +0 -68
- data/lib/active_merchant/billing/integrations/hi_trust.rb +0 -27
- data/lib/active_merchant/billing/integrations/ipay88/helper.rb +0 -118
- data/lib/active_merchant/billing/integrations/ipay88/notification.rb +0 -103
- data/lib/active_merchant/billing/integrations/ipay88/return.rb +0 -29
- data/lib/active_merchant/billing/integrations/ipay88.rb +0 -23
- data/lib/active_merchant/billing/integrations/liqpay/helper.rb +0 -43
- data/lib/active_merchant/billing/integrations/liqpay/notification.rb +0 -89
- data/lib/active_merchant/billing/integrations/liqpay/return.rb +0 -83
- data/lib/active_merchant/billing/integrations/liqpay.rb +0 -30
- data/lib/active_merchant/billing/integrations/maksuturva/helper.rb +0 -119
- data/lib/active_merchant/billing/integrations/maksuturva/notification.rb +0 -48
- data/lib/active_merchant/billing/integrations/maksuturva.rb +0 -86
- data/lib/active_merchant/billing/integrations/moneybookers/helper.rb +0 -75
- data/lib/active_merchant/billing/integrations/moneybookers/notification.rb +0 -123
- data/lib/active_merchant/billing/integrations/moneybookers.rb +0 -26
- data/lib/active_merchant/billing/integrations/nochex/helper.rb +0 -68
- data/lib/active_merchant/billing/integrations/nochex/notification.rb +0 -94
- data/lib/active_merchant/billing/integrations/nochex/return.rb +0 -10
- data/lib/active_merchant/billing/integrations/nochex.rb +0 -88
- data/lib/active_merchant/billing/integrations/notification.rb +0 -71
- data/lib/active_merchant/billing/integrations/paxum/common.rb +0 -24
- data/lib/active_merchant/billing/integrations/paxum/helper.rb +0 -42
- data/lib/active_merchant/billing/integrations/paxum/notification.rb +0 -33
- data/lib/active_merchant/billing/integrations/paxum.rb +0 -44
- data/lib/active_merchant/billing/integrations/pay_fast/common.rb +0 -42
- data/lib/active_merchant/billing/integrations/pay_fast/helper.rb +0 -50
- data/lib/active_merchant/billing/integrations/pay_fast/notification.rb +0 -134
- data/lib/active_merchant/billing/integrations/pay_fast/return.rb +0 -10
- data/lib/active_merchant/billing/integrations/pay_fast.rb +0 -70
- data/lib/active_merchant/billing/integrations/paydollar/helper.rb +0 -41
- data/lib/active_merchant/billing/integrations/paydollar/notification.rb +0 -60
- data/lib/active_merchant/billing/integrations/paydollar/return.rb +0 -15
- data/lib/active_merchant/billing/integrations/paydollar.rb +0 -59
- data/lib/active_merchant/billing/integrations/payflow_link/helper.rb +0 -116
- data/lib/active_merchant/billing/integrations/payflow_link/notification.rb +0 -78
- data/lib/active_merchant/billing/integrations/payflow_link.rb +0 -21
- data/lib/active_merchant/billing/integrations/paypal/helper.rb +0 -119
- data/lib/active_merchant/billing/integrations/paypal/notification.rb +0 -227
- data/lib/active_merchant/billing/integrations/paypal/return.rb +0 -10
- data/lib/active_merchant/billing/integrations/paypal.rb +0 -39
- data/lib/active_merchant/billing/integrations/paypal_payments_advanced/helper.rb +0 -15
- data/lib/active_merchant/billing/integrations/paypal_payments_advanced.rb +0 -20
- data/lib/active_merchant/billing/integrations/paysbuy/helper.rb +0 -15
- data/lib/active_merchant/billing/integrations/paysbuy/notification.rb +0 -39
- data/lib/active_merchant/billing/integrations/paysbuy.rb +0 -36
- data/lib/active_merchant/billing/integrations/payu_in/helper.rb +0 -76
- data/lib/active_merchant/billing/integrations/payu_in/notification.rb +0 -154
- data/lib/active_merchant/billing/integrations/payu_in/return.rb +0 -36
- data/lib/active_merchant/billing/integrations/payu_in.rb +0 -36
- data/lib/active_merchant/billing/integrations/payu_in_paisa/helper.rb +0 -19
- data/lib/active_merchant/billing/integrations/payu_in_paisa/notification.rb +0 -13
- data/lib/active_merchant/billing/integrations/payu_in_paisa/return.rb +0 -16
- data/lib/active_merchant/billing/integrations/payu_in_paisa.rb +0 -30
- data/lib/active_merchant/billing/integrations/platron/helper.rb +0 -32
- data/lib/active_merchant/billing/integrations/platron/notification.rb +0 -113
- data/lib/active_merchant/billing/integrations/platron.rb +0 -28
- data/lib/active_merchant/billing/integrations/pxpay/helper.rb +0 -112
- data/lib/active_merchant/billing/integrations/pxpay/notification.rb +0 -157
- data/lib/active_merchant/billing/integrations/pxpay/return.rb +0 -25
- data/lib/active_merchant/billing/integrations/pxpay.rb +0 -31
- data/lib/active_merchant/billing/integrations/quickpay/helper.rb +0 -96
- data/lib/active_merchant/billing/integrations/quickpay/notification.rb +0 -137
- data/lib/active_merchant/billing/integrations/quickpay.rb +0 -21
- data/lib/active_merchant/billing/integrations/rbkmoney/helper.rb +0 -23
- data/lib/active_merchant/billing/integrations/rbkmoney/notification.rb +0 -91
- data/lib/active_merchant/billing/integrations/rbkmoney.rb +0 -17
- data/lib/active_merchant/billing/integrations/return.rb +0 -42
- data/lib/active_merchant/billing/integrations/robokassa/common.rb +0 -19
- data/lib/active_merchant/billing/integrations/robokassa/helper.rb +0 -50
- data/lib/active_merchant/billing/integrations/robokassa/notification.rb +0 -55
- data/lib/active_merchant/billing/integrations/robokassa/return.rb +0 -17
- data/lib/active_merchant/billing/integrations/robokassa.rb +0 -49
- data/lib/active_merchant/billing/integrations/sage_pay_form/encryption.rb +0 -33
- data/lib/active_merchant/billing/integrations/sage_pay_form/helper.rb +0 -136
- data/lib/active_merchant/billing/integrations/sage_pay_form/notification.rb +0 -210
- data/lib/active_merchant/billing/integrations/sage_pay_form/return.rb +0 -31
- data/lib/active_merchant/billing/integrations/sage_pay_form.rb +0 -37
- data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +0 -107
- data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +0 -171
- data/lib/active_merchant/billing/integrations/two_checkout/return.rb +0 -58
- data/lib/active_merchant/billing/integrations/two_checkout.rb +0 -44
- data/lib/active_merchant/billing/integrations/valitor/helper.rb +0 -86
- data/lib/active_merchant/billing/integrations/valitor/notification.rb +0 -13
- data/lib/active_merchant/billing/integrations/valitor/response_fields.rb +0 -97
- data/lib/active_merchant/billing/integrations/valitor/return.rb +0 -13
- data/lib/active_merchant/billing/integrations/valitor.rb +0 -33
- data/lib/active_merchant/billing/integrations/verkkomaksut/helper.rb +0 -88
- data/lib/active_merchant/billing/integrations/verkkomaksut/notification.rb +0 -59
- data/lib/active_merchant/billing/integrations/verkkomaksut.rb +0 -20
- data/lib/active_merchant/billing/integrations/web_pay/common.rb +0 -50
- data/lib/active_merchant/billing/integrations/web_pay/helper.rb +0 -68
- data/lib/active_merchant/billing/integrations/web_pay/notification.rb +0 -51
- data/lib/active_merchant/billing/integrations/web_pay.rb +0 -45
- data/lib/active_merchant/billing/integrations/webmoney/common.rb +0 -17
- data/lib/active_merchant/billing/integrations/webmoney/helper.rb +0 -40
- data/lib/active_merchant/billing/integrations/webmoney/notification.rb +0 -47
- data/lib/active_merchant/billing/integrations/webmoney.rb +0 -43
- data/lib/active_merchant/billing/integrations/wirecard_checkout_page/common.rb +0 -104
- data/lib/active_merchant/billing/integrations/wirecard_checkout_page/helper.rb +0 -145
- data/lib/active_merchant/billing/integrations/wirecard_checkout_page/notification.rb +0 -101
- data/lib/active_merchant/billing/integrations/wirecard_checkout_page/return.rb +0 -35
- data/lib/active_merchant/billing/integrations/wirecard_checkout_page.rb +0 -39
- data/lib/active_merchant/billing/integrations/world_pay/helper.rb +0 -101
- data/lib/active_merchant/billing/integrations/world_pay/notification.rb +0 -160
- data/lib/active_merchant/billing/integrations/world_pay.rb +0 -34
- data/lib/active_merchant/billing/integrations.rb +0 -17
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -1
|
@@ -2,7 +2,6 @@ require 'json'
|
|
|
2
2
|
|
|
3
3
|
module ActiveMerchant #:nodoc:
|
|
4
4
|
module Billing #:nodoc:
|
|
5
|
-
|
|
6
5
|
# For more information on Balanced visit https://www.balancedpayments.com
|
|
7
6
|
# or visit #balanced on irc.freenode.net
|
|
8
7
|
#
|
|
@@ -17,447 +16,207 @@ module ActiveMerchant #:nodoc:
|
|
|
17
16
|
# 4. When you're ready to generate a production API key click the "Go
|
|
18
17
|
# live" button on the Balanced dashboard and fill in your marketplace
|
|
19
18
|
# details.
|
|
20
|
-
#
|
|
21
|
-
# ==== Overview
|
|
22
|
-
#
|
|
23
|
-
# Balanced provides a RESTful API, all entities within Balanced are
|
|
24
|
-
# represented by their respective URIs, these are returned in the
|
|
25
|
-
# `authorization` parameter of the Active Merchant Response object.
|
|
26
|
-
#
|
|
27
|
-
# All Response objects will contain a hash property called `params` which
|
|
28
|
-
# holds the raw JSON dictionary returned by Balanced. You can find
|
|
29
|
-
# properties about the operation performed and the object that represents
|
|
30
|
-
# it within this hash.
|
|
31
|
-
#
|
|
32
|
-
# All operations within Balanced are tied to an account, as such, when you
|
|
33
|
-
# perform an `authorization` or a `capture` with a new credit card you
|
|
34
|
-
# must ensure you also pass the `:email` property within the `options`
|
|
35
|
-
# parameter.
|
|
36
|
-
#
|
|
37
|
-
# For more details about Balanced's API visit:
|
|
38
|
-
# https://www.balancedpayments.com/docs
|
|
39
|
-
#
|
|
40
|
-
# ==== Terminology & Transaction Flow
|
|
41
|
-
#
|
|
42
|
-
# * An `authorization` operation will return a Hold URI. An `authorization`
|
|
43
|
-
# within Balanced is valid until the `expires_at` property. You can see the
|
|
44
|
-
# exact date of the expiry on the Response object by inspecting the
|
|
45
|
-
# property `response.params['expires_at']`. The resulting Hold may be
|
|
46
|
-
# `capture`d or `void`ed at any time before the `expires_at` date for
|
|
47
|
-
# any amount up to the full amount of the original `authorization`.
|
|
48
|
-
# * A `capture` operation will return a Debit URI. You must pass the URI of
|
|
49
|
-
# the previously performed `authorization`
|
|
50
|
-
# * A `purchase` will create a Hold and Debit in a single operation and
|
|
51
|
-
# return the URI of the resulting Debit.
|
|
52
|
-
# * A `void` operation must be performed on an existing `authorization`
|
|
53
|
-
# and will result in releasing the funds reserved by the
|
|
54
|
-
# `authorization`.
|
|
55
|
-
# * The `refund` operation must be performed on a previously captured
|
|
56
|
-
# Debit URI. You may refund any fraction of the original amount of the
|
|
57
|
-
# debit up to the original total.
|
|
58
|
-
#
|
|
59
19
|
class BalancedGateway < Gateway
|
|
60
|
-
VERSION = '
|
|
20
|
+
VERSION = '2.0.0'
|
|
61
21
|
|
|
62
|
-
|
|
22
|
+
self.live_url = 'https://api.balancedpayments.com'
|
|
63
23
|
|
|
64
|
-
# The countries the gateway supports merchants from as 2 digit ISO
|
|
65
|
-
# country codes
|
|
66
24
|
self.supported_countries = ['US']
|
|
67
25
|
self.supported_cardtypes = [:visa, :master, :american_express, :discover]
|
|
68
26
|
self.homepage_url = 'https://www.balancedpayments.com/'
|
|
69
27
|
self.display_name = 'Balanced'
|
|
70
28
|
self.money_format = :cents
|
|
71
29
|
|
|
72
|
-
class Error < ActiveMerchant::ActiveMerchantError
|
|
73
|
-
attr_reader :response
|
|
74
|
-
|
|
75
|
-
def initialize(response, msg=nil)
|
|
76
|
-
@response = response
|
|
77
|
-
super(msg || response['description'])
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
class CardDeclined < Error
|
|
82
|
-
end
|
|
83
|
-
|
|
84
30
|
# Creates a new BalancedGateway
|
|
85
31
|
#
|
|
86
|
-
# The gateway requires that a valid api_key be passed in the +options+
|
|
87
|
-
# hash.
|
|
88
|
-
#
|
|
89
32
|
# ==== Options
|
|
90
33
|
#
|
|
91
34
|
# * <tt>:login</tt> -- The Balanced API Secret (REQUIRED)
|
|
92
35
|
def initialize(options = {})
|
|
93
36
|
requires!(options, :login)
|
|
94
37
|
super
|
|
95
|
-
initialize_marketplace(options[:marketplace] || load_marketplace)
|
|
96
38
|
end
|
|
97
39
|
|
|
98
|
-
|
|
99
|
-
# reserves the funds on the customer's credit card, but does not charge
|
|
100
|
-
# the card. An authorization is valid until the `expires_at` field in
|
|
101
|
-
# the params Hash passes. See `response.params['expires_at']`. The exact
|
|
102
|
-
# amount of time until an authorization expires depends on the card
|
|
103
|
-
# issuer.
|
|
104
|
-
#
|
|
105
|
-
# If you pass a previously tokenized `credit_card` URI the only other
|
|
106
|
-
# parameter required is `money`. If you pass `credit_card` as a hash of
|
|
107
|
-
# credit card information you must also pass `options` with a `:email`
|
|
108
|
-
# entry.
|
|
109
|
-
#
|
|
110
|
-
# ==== Parameters
|
|
111
|
-
#
|
|
112
|
-
# * <tt>money</tt> -- The amount to be authorized as an Integer value in cents.
|
|
113
|
-
# * <tt>credit_card</tt> -- A hash of credit card details for this
|
|
114
|
-
# transaction or the URI of a card previously stored in Balanced.
|
|
115
|
-
# * <tt>options</tt> -- A hash of optional parameters.
|
|
116
|
-
#
|
|
117
|
-
# ==== Options
|
|
118
|
-
#
|
|
119
|
-
# If you are passing a new credit card you must pass one of these two
|
|
120
|
-
# parameters
|
|
121
|
-
#
|
|
122
|
-
# * <tt>email</tt> -- the email address of user associated with this
|
|
123
|
-
# purchase.
|
|
124
|
-
# * <tt>account_uri</tt> -- `account_uri` is the URI of an existing
|
|
125
|
-
# Balanced account.
|
|
126
|
-
def authorize(money, credit_card, options = {})
|
|
127
|
-
if credit_card.respond_to?(:number)
|
|
128
|
-
requires!(options, :email) unless options[:account_uri]
|
|
129
|
-
end
|
|
130
|
-
|
|
40
|
+
def purchase(money, payment_method, options = {})
|
|
131
41
|
post = {}
|
|
132
|
-
post
|
|
42
|
+
add_amount(post, money)
|
|
133
43
|
post[:description] = options[:description]
|
|
134
44
|
add_common_params(post, options)
|
|
135
45
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
# Perform a purchase, which is an authorization and capture in a single
|
|
146
|
-
# operation.
|
|
147
|
-
#
|
|
148
|
-
# ==== Parameters
|
|
149
|
-
#
|
|
150
|
-
# * <tt>money</tt> -- The amount to be purchased as an Integer value in cents.
|
|
151
|
-
# * <tt>credit_card</tt> -- A hash of credit card details for this
|
|
152
|
-
# transaction or the URI of a card previously stored in Balanced.
|
|
153
|
-
# * <tt>options</tt> -- A hash of optional parameters.
|
|
154
|
-
#
|
|
155
|
-
# ==== Options
|
|
156
|
-
#
|
|
157
|
-
# If you are passing a new credit card you must pass one of these two
|
|
158
|
-
# parameters
|
|
159
|
-
#
|
|
160
|
-
# * <tt>email</tt> -- the email address of user associated with this
|
|
161
|
-
# purchase.
|
|
162
|
-
# * <tt>account_uri</tt> -- `account_uri` is the URI of an existing
|
|
163
|
-
# Balanced account.
|
|
164
|
-
#
|
|
165
|
-
# If you are passing a new card URI from balanced.js, you should pass
|
|
166
|
-
# the customer's name
|
|
167
|
-
#
|
|
168
|
-
# * <tt>name</tt> -- the customer's name, to appear on the Account
|
|
169
|
-
# on Balanced.
|
|
170
|
-
def purchase(money, credit_card, options = {})
|
|
171
|
-
if credit_card.respond_to?('number')
|
|
172
|
-
requires!(options, :email) unless options[:account_uri]
|
|
46
|
+
MultiResponse.run do |r|
|
|
47
|
+
identifier = if(payment_method.respond_to?(:number))
|
|
48
|
+
r.process { store(payment_method, options) }
|
|
49
|
+
r.authorization
|
|
50
|
+
else
|
|
51
|
+
payment_method
|
|
52
|
+
end
|
|
53
|
+
r.process { commit('debits', "cards/#{card_identifier_from(identifier)}/debits", post) }
|
|
173
54
|
end
|
|
55
|
+
end
|
|
174
56
|
|
|
57
|
+
def authorize(money, payment_method, options = {})
|
|
175
58
|
post = {}
|
|
176
|
-
post
|
|
59
|
+
add_amount(post, money)
|
|
177
60
|
post[:description] = options[:description]
|
|
178
61
|
add_common_params(post, options)
|
|
179
62
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
63
|
+
MultiResponse.run do |r|
|
|
64
|
+
identifier = if(payment_method.respond_to?(:number))
|
|
65
|
+
r.process { store(payment_method, options) }
|
|
66
|
+
r.authorization
|
|
67
|
+
else
|
|
68
|
+
payment_method
|
|
69
|
+
end
|
|
70
|
+
r.process { commit('card_holds', "cards/#{card_identifier_from(identifier)}/card_holds", post) }
|
|
71
|
+
end
|
|
187
72
|
end
|
|
188
73
|
|
|
189
|
-
|
|
190
|
-
#
|
|
191
|
-
# ==== Parameters
|
|
192
|
-
#
|
|
193
|
-
# * <tt>money</tt> -- The amount to be captured as an Integer value in
|
|
194
|
-
# cents. If omitted the full amount of the original authorization
|
|
195
|
-
# transaction will be captured.
|
|
196
|
-
# * <tt>authorization</tt> -- The uri of an authorization returned from
|
|
197
|
-
# an authorize request.
|
|
198
|
-
#
|
|
199
|
-
# ==== Options
|
|
200
|
-
#
|
|
201
|
-
# * <tt>description</tt> -- A string that will be displayed on the
|
|
202
|
-
# Balanced dashboard
|
|
203
|
-
def capture(money, authorization, options = {})
|
|
74
|
+
def capture(money, identifier, options = {})
|
|
204
75
|
post = {}
|
|
205
|
-
post
|
|
206
|
-
post[:amount] = money if money
|
|
76
|
+
add_amount(post, money)
|
|
207
77
|
post[:description] = options[:description] if options[:description]
|
|
208
78
|
add_common_params(post, options)
|
|
209
79
|
|
|
210
|
-
|
|
211
|
-
rescue Error => ex
|
|
212
|
-
failed_response(ex.response)
|
|
80
|
+
commit('debits', "card_holds/#{reference_identifier_from(identifier)}/debits", post)
|
|
213
81
|
end
|
|
214
82
|
|
|
215
|
-
|
|
216
|
-
#
|
|
217
|
-
# ==== Parameters
|
|
218
|
-
#
|
|
219
|
-
# * <tt>authorization</tt> -- The uri of the authorization returned from
|
|
220
|
-
# an `authorize` request.
|
|
221
|
-
def void(authorization, options = {})
|
|
83
|
+
def void(identifier, options = {})
|
|
222
84
|
post = {}
|
|
223
85
|
post[:is_void] = true
|
|
224
86
|
add_common_params(post, options)
|
|
225
87
|
|
|
226
|
-
|
|
227
|
-
rescue Error => ex
|
|
228
|
-
failed_response(ex.response)
|
|
88
|
+
commit('card_holds', "card_holds/#{reference_identifier_from(identifier)}", post, :put)
|
|
229
89
|
end
|
|
230
90
|
|
|
231
|
-
|
|
232
|
-
#
|
|
233
|
-
# Returns the money debited from a card to the card from the
|
|
234
|
-
# marketplace's escrow balance.
|
|
235
|
-
#
|
|
236
|
-
# ==== Parameters
|
|
237
|
-
#
|
|
238
|
-
# * <tt>debit_uri</tt> -- The uri of the original transaction against
|
|
239
|
-
# which the refund is being issued.
|
|
240
|
-
# * <tt>options</tt> -- A hash of parameters.
|
|
241
|
-
#
|
|
242
|
-
# ==== Options
|
|
243
|
-
#
|
|
244
|
-
# * <tt>`:amount`<tt> -- specify an amount if you want to perform a
|
|
245
|
-
# partial refund. This value will default to the total amount of the
|
|
246
|
-
# debit that has not been refunded so far.
|
|
247
|
-
def refund(amount, debit_uri = "deprecated", options = {})
|
|
248
|
-
if(debit_uri == "deprecated" || debit_uri.kind_of?(Hash))
|
|
249
|
-
deprecated "Calling the refund method without an amount parameter is deprecated and will be removed in a future version."
|
|
250
|
-
return refund(options[:amount], amount, options)
|
|
251
|
-
end
|
|
252
|
-
|
|
253
|
-
requires!(debit_uri)
|
|
91
|
+
def refund(money, identifier, options = {})
|
|
254
92
|
post = {}
|
|
255
|
-
post
|
|
256
|
-
post[:amount] = amount
|
|
93
|
+
add_amount(post, money)
|
|
257
94
|
post[:description] = options[:description]
|
|
258
95
|
add_common_params(post, options)
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
failed_response(ex.response)
|
|
96
|
+
|
|
97
|
+
commit('refunds', "debits/#{reference_identifier_from(identifier)}/refunds", post)
|
|
262
98
|
end
|
|
263
99
|
|
|
264
|
-
|
|
265
|
-
#
|
|
266
|
-
# ==== Parameters
|
|
267
|
-
#
|
|
268
|
-
# * <tt>credit_card</tt> --
|
|
269
|
-
def store(credit_card, options = {})
|
|
270
|
-
requires!(options, :email)
|
|
100
|
+
def store(credit_card, options={})
|
|
271
101
|
post = {}
|
|
272
|
-
account_uri = create_or_find_account(post, options)
|
|
273
|
-
if credit_card.respond_to? :number
|
|
274
|
-
card_uri = add_credit_card(post, credit_card, options)
|
|
275
|
-
else
|
|
276
|
-
card_uri = associate_card_to_account(account_uri, credit_card)
|
|
277
|
-
end
|
|
278
102
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
103
|
+
post[:number] = credit_card.number
|
|
104
|
+
post[:expiration_month] = credit_card.month
|
|
105
|
+
post[:expiration_year] = credit_card.year
|
|
106
|
+
post[:cvv] = credit_card.verification_value if credit_card.verification_value?
|
|
107
|
+
post[:name] = credit_card.name if credit_card.name
|
|
108
|
+
|
|
109
|
+
add_address(post, options)
|
|
283
110
|
|
|
284
|
-
|
|
285
|
-
rescue Error => ex
|
|
286
|
-
failed_response(ex.response)
|
|
111
|
+
commit('cards', 'cards', post)
|
|
287
112
|
end
|
|
288
113
|
|
|
289
114
|
private
|
|
290
115
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
116
|
+
def reference_identifier_from(identifier)
|
|
117
|
+
case identifier
|
|
118
|
+
when %r{\|}
|
|
119
|
+
uri = identifier.
|
|
120
|
+
split('|').
|
|
121
|
+
detect { |part| part.size > 0 }
|
|
122
|
+
uri.split('/')[2]
|
|
123
|
+
when %r{\/}
|
|
124
|
+
identifier.split('/')[5]
|
|
125
|
+
else
|
|
126
|
+
identifier
|
|
297
127
|
end
|
|
298
|
-
response['items'][0]
|
|
299
128
|
end
|
|
300
129
|
|
|
301
|
-
def
|
|
302
|
-
|
|
303
|
-
@holds_uri = marketplace['holds_uri']
|
|
304
|
-
@debits_uri = marketplace['debits_uri']
|
|
305
|
-
@cards_uri = marketplace['cards_uri']
|
|
306
|
-
@accounts_uri = marketplace['accounts_uri']
|
|
307
|
-
@refunds_uri = marketplace['refunds_uri']
|
|
130
|
+
def card_identifier_from(identifier)
|
|
131
|
+
identifier.split('/').last
|
|
308
132
|
end
|
|
309
133
|
|
|
310
|
-
def
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
if options.has_key? :account_uri
|
|
314
|
-
account_uri = options[:account_uri]
|
|
315
|
-
end
|
|
316
|
-
|
|
317
|
-
if account_uri == nil
|
|
318
|
-
post[:name] = options[:name] if options[:name]
|
|
319
|
-
post[:email_address] = options[:email]
|
|
320
|
-
post[:meta] = options[:meta] if options[:meta]
|
|
321
|
-
|
|
322
|
-
# create an account
|
|
323
|
-
response = http_request(:post, @accounts_uri, post)
|
|
324
|
-
|
|
325
|
-
if response.has_key? 'uri'
|
|
326
|
-
account_uri = response['uri']
|
|
327
|
-
elsif error?(response)
|
|
328
|
-
# lookup account from Balanced, account_uri should be in the
|
|
329
|
-
# exception in a dictionary called extras
|
|
330
|
-
account_uri = response['extras']['account_uri']
|
|
331
|
-
raise Error.new(response) unless account_uri
|
|
332
|
-
end
|
|
333
|
-
end
|
|
334
|
-
|
|
335
|
-
post[:account_uri] = account_uri
|
|
336
|
-
|
|
337
|
-
account_uri
|
|
134
|
+
def add_amount(post, money)
|
|
135
|
+
post[:amount] = amount(money) if money
|
|
338
136
|
end
|
|
339
137
|
|
|
340
|
-
def add_address(
|
|
341
|
-
|
|
342
|
-
if
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
138
|
+
def add_address(post, options)
|
|
139
|
+
address = (options[:billing_address] || options[:address])
|
|
140
|
+
if(address && address[:zip].present?)
|
|
141
|
+
post[:address] = {}
|
|
142
|
+
post[:address][:line1] = address[:address1] if address[:address1]
|
|
143
|
+
post[:address][:line2] = address[:address2] if address[:address2]
|
|
144
|
+
post[:address][:city] = address[:city] if address[:city]
|
|
145
|
+
post[:address][:state] = address[:state] if address[:state]
|
|
146
|
+
post[:address][:postal_code] = address[:zip] if address[:zip]
|
|
147
|
+
post[:address][:country_code] = address[:country] if address[:country]
|
|
347
148
|
end
|
|
348
149
|
end
|
|
349
150
|
|
|
350
151
|
def add_common_params(post, options)
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
:meta
|
|
355
|
-
]
|
|
356
|
-
post.update(options.select{|key, _| common_params.include?(key)})
|
|
152
|
+
post[:appears_on_statement_as] = options[:appears_on_statement_as]
|
|
153
|
+
post[:on_behalf_of_uri] = options[:on_behalf_of_uri]
|
|
154
|
+
post[:meta] = options[:meta]
|
|
357
155
|
end
|
|
358
156
|
|
|
359
|
-
def
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
add_address(card, options)
|
|
369
|
-
|
|
370
|
-
response = http_request(:post, @cards_uri, card)
|
|
371
|
-
if error?(response)
|
|
372
|
-
raise CardDeclined, response
|
|
373
|
-
end
|
|
374
|
-
card_uri = response['uri']
|
|
375
|
-
|
|
376
|
-
associate_card_to_account(post[:account_uri], card_uri)
|
|
377
|
-
|
|
378
|
-
post[:card_uri] = card_uri
|
|
379
|
-
elsif credit_card.kind_of?(String)
|
|
380
|
-
associate_card_to_account(post[:account_uri], credit_card) unless options[:account_uri]
|
|
381
|
-
post[:card_uri] = credit_card
|
|
382
|
-
end
|
|
383
|
-
|
|
384
|
-
post[:card_uri]
|
|
385
|
-
end
|
|
386
|
-
|
|
387
|
-
def associate_card_to_account(account_uri, card_uri)
|
|
388
|
-
http_request(:put, account_uri, :card_uri => card_uri)
|
|
389
|
-
end
|
|
390
|
-
|
|
391
|
-
def http_request(method, url, parameters={}, meta={})
|
|
392
|
-
begin
|
|
393
|
-
if method == :get
|
|
394
|
-
raw_response = ssl_get(LIVE_URL + url, headers(meta))
|
|
395
|
-
else
|
|
396
|
-
raw_response = ssl_request(method,
|
|
397
|
-
LIVE_URL + url,
|
|
398
|
-
post_data(parameters),
|
|
399
|
-
headers(meta))
|
|
400
|
-
end
|
|
401
|
-
parse(raw_response)
|
|
157
|
+
def commit(entity_name, path, post, method=:post)
|
|
158
|
+
raw_response = begin
|
|
159
|
+
parse(ssl_request(
|
|
160
|
+
method,
|
|
161
|
+
live_url + "/#{path}",
|
|
162
|
+
post_data(post),
|
|
163
|
+
headers
|
|
164
|
+
))
|
|
402
165
|
rescue ResponseError => e
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
rescue JSON::ParserError
|
|
406
|
-
json_error(raw_response)
|
|
166
|
+
raise unless(e.response.code.to_s =~ /4\d\d/)
|
|
167
|
+
parse(e.response.body)
|
|
407
168
|
end
|
|
408
|
-
end
|
|
409
|
-
|
|
410
|
-
def create_transaction(method, url, parameters, meta={})
|
|
411
|
-
response = http_request(method, url, parameters, meta)
|
|
412
|
-
success = !error?(response)
|
|
413
169
|
|
|
414
|
-
Response.new(
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
170
|
+
Response.new(
|
|
171
|
+
success_from(entity_name, raw_response),
|
|
172
|
+
message_from(raw_response),
|
|
173
|
+
raw_response,
|
|
174
|
+
authorization: authorization_from(entity_name, raw_response),
|
|
175
|
+
test: test?
|
|
419
176
|
)
|
|
420
177
|
end
|
|
421
178
|
|
|
422
|
-
def
|
|
423
|
-
|
|
424
|
-
if
|
|
425
|
-
|
|
179
|
+
def success_from(entity_name, raw_response)
|
|
180
|
+
entity = (raw_response[entity_name] || []).first
|
|
181
|
+
if(!entity)
|
|
182
|
+
false
|
|
183
|
+
elsif((entity_name == 'refunds') && entity.include?('status'))
|
|
184
|
+
%w(succeeded pending).include?(entity['status'])
|
|
185
|
+
elsif(entity.include?('status'))
|
|
186
|
+
(entity['status'] == 'succeeded')
|
|
187
|
+
elsif(entity_name == 'cards')
|
|
188
|
+
!!entity['id']
|
|
189
|
+
else
|
|
190
|
+
false
|
|
426
191
|
end
|
|
427
|
-
|
|
428
|
-
Response.new(false,
|
|
429
|
-
response["description"],
|
|
430
|
-
response,
|
|
431
|
-
:test => is_test
|
|
432
|
-
)
|
|
433
192
|
end
|
|
434
193
|
|
|
435
|
-
def
|
|
436
|
-
|
|
194
|
+
def message_from(raw_response)
|
|
195
|
+
if(raw_response['errors'])
|
|
196
|
+
error = raw_response['errors'].first
|
|
197
|
+
(error['additional'] || error['message'] || error['description'])
|
|
198
|
+
else
|
|
199
|
+
'Success'
|
|
200
|
+
end
|
|
437
201
|
end
|
|
438
202
|
|
|
439
|
-
def
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
rescue JSON::ParserError
|
|
443
|
-
json_error(raw_response)
|
|
444
|
-
end
|
|
203
|
+
def authorization_from(entity_name, raw_response)
|
|
204
|
+
entity = (raw_response[entity_name] || []).first
|
|
205
|
+
(entity && entity['id'])
|
|
445
206
|
end
|
|
446
207
|
|
|
447
|
-
def
|
|
448
|
-
|
|
449
|
-
|
|
208
|
+
def parse(body)
|
|
209
|
+
JSON.parse(body)
|
|
210
|
+
rescue JSON::ParserError
|
|
211
|
+
message = 'Invalid response received from the Balanced API. Please contact support@balancedpayments.com if you continue to receive this message.'
|
|
212
|
+
message += " (The raw response returned by the API was #{raw_response.inspect})"
|
|
450
213
|
{
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
}
|
|
214
|
+
'errors' => [{
|
|
215
|
+
'message' => message
|
|
216
|
+
}]
|
|
454
217
|
}
|
|
455
218
|
end
|
|
456
219
|
|
|
457
|
-
def error?(response)
|
|
458
|
-
response.key?('status_code')
|
|
459
|
-
end
|
|
460
|
-
|
|
461
220
|
def post_data(params)
|
|
462
221
|
return nil unless params
|
|
463
222
|
|
|
@@ -472,23 +231,24 @@ module ActiveMerchant #:nodoc:
|
|
|
472
231
|
else
|
|
473
232
|
"#{key}=#{CGI.escape(value.to_s)}"
|
|
474
233
|
end
|
|
475
|
-
end.compact.join(
|
|
234
|
+
end.compact.join('&')
|
|
476
235
|
end
|
|
477
236
|
|
|
478
|
-
def headers
|
|
479
|
-
@@ua ||= JSON.dump(
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
237
|
+
def headers
|
|
238
|
+
@@ua ||= JSON.dump(
|
|
239
|
+
bindings_version: ActiveMerchant::VERSION,
|
|
240
|
+
lang: 'ruby',
|
|
241
|
+
lang_version: "#{RUBY_VERSION} p#{RUBY_PATCHLEVEL} (#{RUBY_RELEASE_DATE})",
|
|
242
|
+
lib_version: BalancedGateway::VERSION,
|
|
243
|
+
platform: RUBY_PLATFORM,
|
|
244
|
+
publisher: 'active_merchant'
|
|
245
|
+
)
|
|
487
246
|
|
|
488
247
|
{
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
248
|
+
'Authorization' => 'Basic ' + Base64.encode64(@options[:login].to_s + ':').strip,
|
|
249
|
+
'User-Agent' => "Balanced/v1.1 ActiveMerchantBindings/#{ActiveMerchant::VERSION}",
|
|
250
|
+
'Accept' => 'application/vnd.api+json;revision=1.1',
|
|
251
|
+
'X-Balanced-User-Agent' => @@ua,
|
|
492
252
|
}
|
|
493
253
|
end
|
|
494
254
|
end
|