activemerchant 1.45.0 → 1.46.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 +4 -4
- checksums.yaml.gz.sig +3 -1
- data.tar.gz.sig +0 -0
- data/CHANGELOG +25 -0
- data/CONTRIBUTORS +9 -0
- data/README.md +6 -20
- data/lib/active_merchant.rb +9 -50
- data/lib/active_merchant/billing.rb +1 -0
- data/lib/active_merchant/billing/gateway.rb +10 -1
- data/lib/active_merchant/billing/gateways.rb +6 -11
- data/lib/active_merchant/billing/gateways/authorize_net.rb +58 -47
- data/lib/active_merchant/billing/gateways/beanstream.rb +1 -1
- data/lib/active_merchant/billing/gateways/beanstream_interac.rb +8 -8
- data/lib/active_merchant/billing/gateways/braintree.rb +2 -2
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +69 -22
- data/lib/active_merchant/billing/gateways/braintree_orange.rb +2 -2
- data/lib/active_merchant/billing/gateways/checkout.rb +7 -2
- data/lib/active_merchant/billing/gateways/cyber_source.rb +25 -9
- data/lib/active_merchant/billing/gateways/elavon.rb +1 -1
- data/lib/active_merchant/billing/gateways/eway_rapid.rb +6 -3
- data/lib/active_merchant/billing/gateways/finansbank.rb +1 -1
- data/lib/active_merchant/billing/gateways/hps.rb +0 -1
- data/lib/active_merchant/billing/gateways/ideal/ideal_base.rb +1 -1
- data/lib/active_merchant/billing/gateways/ideal/ideal_rabobank.pem +0 -0
- data/lib/active_merchant/billing/gateways/ideal_rabobank.rb +1 -1
- data/lib/active_merchant/billing/gateways/instapay.rb +0 -0
- data/lib/active_merchant/billing/gateways/ipp.rb +175 -0
- data/lib/active_merchant/billing/gateways/mercury.rb +4 -11
- data/lib/active_merchant/billing/gateways/migs.rb +1 -1
- data/lib/active_merchant/billing/gateways/modern_payments.rb +1 -1
- data/lib/active_merchant/billing/gateways/orbital.rb +2 -2
- data/lib/active_merchant/billing/gateways/pay_gate_xml.rb +26 -0
- data/lib/active_merchant/billing/gateways/payflow.rb +3 -3
- data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +16 -5
- data/lib/active_merchant/billing/gateways/payflow_express.rb +3 -3
- data/lib/active_merchant/billing/gateways/payflow_express_uk.rb +2 -2
- data/lib/active_merchant/billing/gateways/payflow_uk.rb +4 -4
- data/lib/active_merchant/billing/gateways/paypal.rb +15 -3
- data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +10 -1
- data/lib/active_merchant/billing/gateways/paypal/paypal_recurring_api.rb +1 -1
- data/lib/active_merchant/billing/gateways/paypal_ca.rb +1 -1
- data/lib/active_merchant/billing/gateways/paypal_digital_goods.rb +3 -3
- data/lib/active_merchant/billing/gateways/paypal_express.rb +4 -4
- data/lib/active_merchant/billing/gateways/pin.rb +10 -1
- data/lib/active_merchant/billing/gateways/quickbooks.rb +278 -0
- data/lib/active_merchant/billing/gateways/redsys.rb +2 -2
- data/lib/active_merchant/billing/gateways/sage.rb +3 -3
- data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +1 -1
- data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +1 -1
- data/lib/active_merchant/billing/gateways/secure_pay.rb +1 -1
- data/lib/active_merchant/billing/gateways/skip_jack.rb +0 -1
- data/lib/active_merchant/billing/gateways/stripe.rb +13 -2
- data/lib/active_merchant/billing/gateways/wirecard.rb +0 -1
- data/lib/active_merchant/billing/payment_token.rb +1 -1
- data/lib/active_merchant/connection.rb +169 -0
- data/lib/active_merchant/network_connection_retries.rb +78 -0
- data/lib/active_merchant/post_data.rb +24 -0
- data/lib/active_merchant/posts_data.rb +78 -0
- data/lib/active_merchant/version.rb +1 -1
- data/lib/certs/cacert.pem +3866 -0
- metadata +22 -44
- metadata.gz.sig +0 -0
- data/lib/active_merchant/offsite_payments_shim.rb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fef1eb0d503d1d6aff1334d0a6715ac163f4f6fe
|
4
|
+
data.tar.gz: 4ae14dcf7fc8883c819ee1b2c36d00c95f63a7cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 337e1502bcf24ff67fc58da0128d2526bb449089df5908c38b02645c56024c760b8239eaaf675570aefcd99fcf654e1c87ad7daeeaf7c34511bcc1a089db1671
|
7
|
+
data.tar.gz: e0d8140445aa478bee95d90dd672df544aec404976b21b5f2583335713518281090509d92e0eeb240dcb618e8741de8d3f287290ea049c06fa61ca3a8bb42a84
|
checksums.yaml.gz.sig
CHANGED
@@ -1 +1,3 @@
|
|
1
|
-
|
1
|
+
f���g��b��eܸ���H7��%G\hPQ9��+��-�s�2�'d�C��<�d6�&��Ǽ�Ȧof�<.'�<���ݗy~e��D�
|
2
|
+
D�b�+������I[�}���2G��v2µ� (�~�O �{P^&B�[�E}'[r�<��"��`n�ת�����uG��[�d��O�AH&@V�P��B�D^�� ��
|
3
|
+
oF\w^��I5
|
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG
CHANGED
@@ -1,5 +1,30 @@
|
|
1
1
|
= ActiveMerchant CHANGELOG
|
2
2
|
|
3
|
+
== Version 1.46.0 (January 20, 2015)
|
4
|
+
|
5
|
+
* CHANGE: drop `offsite_payments` and `active_utils` as dependencies. [wvanbergen]
|
6
|
+
* CHANGE: remove `OffsitePaymentShim`. You will have to add offsite_payments as a dependency,
|
7
|
+
and update any mentions of `ActiveSupport::Billing::Integration` to
|
8
|
+
`OffsitePayments::Integrations`. [wvanbergen]
|
9
|
+
* QuickBooks Payments: Add adapter [ivanfer, bizla]
|
10
|
+
* Quickbooks: Remove requirement of oauth gem.
|
11
|
+
* PayGate: Add support for refunds [StephanAtG2]
|
12
|
+
* PayPal: Add #scrub for scrubbing PCI information out of HTTP transcripts [girasquid]
|
13
|
+
* Stripe: Add #scrub for scrubbing PCI information out of HTTP transcripts [girasquid]
|
14
|
+
* Cybersource: Add ability to verify a card [duff]
|
15
|
+
* BraintreeBlue: Expose the error code in the response params [duff]
|
16
|
+
* eWay Rapid: Update supported countries and card types [incarnate]
|
17
|
+
* PayPal: Allow specifying ButtonSource at init [ntalbott]
|
18
|
+
* Payflow: Add fraud_review support [ntalbott]
|
19
|
+
* Add IPP gateway [InfraRuby]
|
20
|
+
* Redsys: Fix order_id truncation [duff]
|
21
|
+
* AuthorizeNet: Improve duplicate_window handling [duff]
|
22
|
+
* PayPal: Fix ButtonSource bug [ntalbott]
|
23
|
+
* Checkout: Prevent multiple trackids from being passed [markabe]
|
24
|
+
* Pin: Handle JSON parsing exception in response [duff]
|
25
|
+
* Improve test suite to test against multiple ActiveSupport versions [wvanbergen]
|
26
|
+
* Misc. code cleanup [wvanbergen]
|
27
|
+
|
3
28
|
== Version 1.45.0 (December 1, 2014)
|
4
29
|
|
5
30
|
* HPS: Always pass CardHolderData element [SecureSubmit, ntalbott]
|
data/CONTRIBUTORS
CHANGED
data/README.md
CHANGED
@@ -41,7 +41,6 @@ This simple example demonstrates how a purchase can be made using a person's
|
|
41
41
|
credit card details.
|
42
42
|
|
43
43
|
```ruby
|
44
|
-
require 'rubygems'
|
45
44
|
require 'active_merchant'
|
46
45
|
|
47
46
|
# Use the TrustCommerce test servers
|
@@ -112,7 +111,7 @@ The [ActiveMerchant Wiki](http://github.com/Shopify/active_merchant/wikis) conta
|
|
112
111
|
* [ePay](http://epay.dk/) - DK, SE, NO
|
113
112
|
* [EVO Canada](http://www.evocanada.com/) - CA
|
114
113
|
* [eWAY](http://www.eway.com.au/) - AU, NZ, GB
|
115
|
-
* [eWAY Rapid
|
114
|
+
* [eWAY Rapid](http://www.eway.com.au/) - AU, NZ, GB, SG
|
116
115
|
* [E-xact](http://www.e-xact.com) - CA, US
|
117
116
|
* [Fat Zebra](https://www.fatzebra.com.au/) - AU
|
118
117
|
* [Federated Canada](http://www.federatedcanada.com/) - CA
|
@@ -127,6 +126,7 @@ The [ActiveMerchant Wiki](http://github.com/Shopify/active_merchant/wikis) conta
|
|
127
126
|
* [iATS Payments](http://home.iatspayments.com/) - AU, BR, CA, CH, DE, DK, ES, FI, FR, GR, HK, IE, IT, NL, NO, PT, SE, SG, TR, UK, US
|
128
127
|
* [Inspire Commerce](http://www.inspiregateway.com) - US
|
129
128
|
* [InstaPay](http://www.instapayllc.com) - US
|
129
|
+
* [IPP](http://www.ippayments.com.au/) - AU
|
130
130
|
* [Iridium](http://www.iridiumcorp.co.uk/) - GB, ES
|
131
131
|
* [iTransact](http://www.itransact.com/) - US
|
132
132
|
* [JetPay](http://www.jetpay.com/) - US
|
@@ -137,7 +137,7 @@ The [ActiveMerchant Wiki](http://github.com/Shopify/active_merchant/wikis) conta
|
|
137
137
|
* [Merchant One Gateway](http://merchantone.com/) - US
|
138
138
|
* [MerchantWARE](http://merchantwarehouse.com/merchantware) - US
|
139
139
|
* [MerchantWarrior](http://www.merchantwarrior.com/) - AU
|
140
|
-
* [Mercury](http://www.mercurypay.com) - US
|
140
|
+
* [Mercury](http://www.mercurypay.com) - US, CA
|
141
141
|
* [Metrics Global](http://www.metricsglobal.com) - US
|
142
142
|
* [MasterCard Internet Gateway Service (MiGS)](http://mastercard.com/mastercardsps) - AU, AE, BD, BN, EG, HK, ID, IN, JO, KW, LB, LK, MU, MV, MY, NZ, OM, PH, QA, SA, SG, TT, VN
|
143
143
|
* [Modern Payments](http://www.modpay.com) - US
|
@@ -177,6 +177,7 @@ The [ActiveMerchant Wiki](http://github.com/Shopify/active_merchant/wikis) conta
|
|
177
177
|
* [Psigate](http://www.psigate.com/) - CA
|
178
178
|
* [PSL Payment Solutions](http://www.paymentsolutionsltd.com/) - GB
|
179
179
|
* [QuickBooks Merchant Services](http://payments.intuit.com/) - US
|
180
|
+
* [QuickBooks Payments](http://payments.intuit.com/) - US
|
180
181
|
* [Quantum Gateway](http://www.quantumgateway.com) - US
|
181
182
|
* [QuickPay](http://quickpay.net/) - DE, DK, ES, FI, FR, FO, GB, IS, NO, SE
|
182
183
|
* [Raven PacNet](http://www.pacnetservices.com/) - US
|
@@ -208,21 +209,6 @@ The [ActiveMerchant Wiki](http://github.com/Shopify/active_merchant/wikis) conta
|
|
208
209
|
* [Worldpay](http://www.worldpay.com/) - HK, US, GB, AU, AD, BE, CH, CY, CZ, DE, DK, ES, FI, FR, GI, GR, HU, IE, IL, IT, LI, LU, MC, MT, NL, NO, NZ, PL, PT, SE, SG, SI, SM, TR, UM, VA
|
209
210
|
* [Worldpay US](http://www.worldpay.com/us) - US
|
210
211
|
|
211
|
-
##
|
212
|
-
|
213
|
-
Deprecated functionality is removed on major version changes - for example, deprecations from 2.x are removed in 3.x.
|
214
|
-
|
215
|
-
## Contributing
|
216
|
-
|
217
|
-
1. [Fork it](http://github.com/Shopify/active_merchant/fork) and clone your new repo
|
218
|
-
2. Create a branch (`git checkout -b my_awesome_feature`)
|
219
|
-
3. Commit your changes (`git add my/awesome/file.rb; git commit -m "Added my awesome feature"`)
|
220
|
-
4. Push your changes to your fork (`git push origin my_awesome_feature`)
|
221
|
-
5. Open a [Pull Request](https://github.com/shopify/active_merchant/pulls)
|
222
|
-
|
223
|
-
Please see the [ActiveMerchant Guide to Contributing](http://github.com/Shopify/active_merchant/wikis/contributing) for
|
224
|
-
information on adding a new gateway to ActiveMerchant.
|
225
|
-
|
226
|
-
Please don't touch the CHANGELOG in your pull requests, we'll add the appropriate CHANGELOG entries
|
227
|
-
at release time.
|
212
|
+
## API stability policy
|
228
213
|
|
214
|
+
Functionality or APIs that are deprecated will be marked as such. Deprecated functionality is removed on major version changes - for example, deprecations from 2.x are removed in 3.x.
|
data/lib/active_merchant.rb
CHANGED
@@ -27,7 +27,7 @@ require 'active_support/core_ext/hash/indifferent_access'
|
|
27
27
|
require 'active_support/core_ext/hash/conversions'
|
28
28
|
require 'active_support/core_ext/object/conversions'
|
29
29
|
require 'active_support/core_ext/class/attribute'
|
30
|
-
require 'active_support/core_ext/enumerable
|
30
|
+
require 'active_support/core_ext/enumerable'
|
31
31
|
|
32
32
|
if(!defined?(ActiveSupport::VERSION) || (ActiveSupport::VERSION::STRING < "4.1"))
|
33
33
|
require 'active_support/core_ext/class/attribute_accessors'
|
@@ -36,22 +36,7 @@ end
|
|
36
36
|
require 'active_support/core_ext/class/delegating_attributes'
|
37
37
|
require 'active_support/core_ext/module/attribute_accessors'
|
38
38
|
|
39
|
-
|
40
|
-
require 'active_support/base64'
|
41
|
-
|
42
|
-
unless defined?(Base64)
|
43
|
-
Base64 = ActiveSupport::Base64
|
44
|
-
end
|
45
|
-
|
46
|
-
unless Base64.respond_to?(:strict_encode64)
|
47
|
-
def Base64.strict_encode64(v)
|
48
|
-
ActiveSupport::Base64.encode64s(v)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
rescue LoadError
|
52
|
-
require 'base64'
|
53
|
-
end
|
54
|
-
|
39
|
+
require 'base64'
|
55
40
|
require 'securerandom'
|
56
41
|
require 'builder'
|
57
42
|
require 'cgi'
|
@@ -59,44 +44,16 @@ require 'rexml/document'
|
|
59
44
|
require 'timeout'
|
60
45
|
require 'socket'
|
61
46
|
|
62
|
-
require '
|
63
|
-
|
64
|
-
require '
|
65
|
-
require '
|
47
|
+
require 'active_merchant/network_connection_retries'
|
48
|
+
require 'active_merchant/connection'
|
49
|
+
require 'active_merchant/post_data'
|
50
|
+
require 'active_merchant/posts_data'
|
66
51
|
|
67
52
|
require 'active_merchant/billing'
|
68
53
|
require 'active_merchant/version'
|
69
54
|
require 'active_merchant/country'
|
70
55
|
|
71
|
-
|
72
|
-
|
73
|
-
module ActiveMerchant #:nodoc:
|
74
|
-
OFFSITE_PAYMENT_EXTRACTION_MESSAGE = "Integrations have been extracted into a separate gem (https://github.com/Shopify/offsite_payments) and will no longer be loaded by ActiveMerchant 2.x."
|
75
|
-
|
76
|
-
module Billing #:nodoc:
|
77
|
-
def self.const_missing(name)
|
78
|
-
if name.to_s == "Integrations"
|
79
|
-
ActiveMerchant.deprecated(OFFSITE_PAYMENT_EXTRACTION_MESSAGE)
|
80
|
-
require "active_merchant/offsite_payments_shim"
|
81
|
-
ActiveMerchant::OffsitePaymentsShim
|
82
|
-
else
|
83
|
-
super
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
def self.included(klass)
|
88
|
-
def klass.const_missing(name)
|
89
|
-
if name.to_s == "Integrations"
|
90
|
-
ActiveMerchant.deprecated(OFFSITE_PAYMENT_EXTRACTION_MESSAGE)
|
91
|
-
require "active_merchant/offsite_payments_shim"
|
92
|
-
ActiveMerchant::OffsitePaymentsShim
|
93
|
-
else
|
94
|
-
super
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
56
|
+
module ActiveMerchant
|
100
57
|
def self.deprecated(message, caller=Kernel.caller[1])
|
101
58
|
warning = caller + ": " + message
|
102
59
|
if(respond_to?(:logger) && logger.present?)
|
@@ -106,3 +63,5 @@ module ActiveMerchant #:nodoc:
|
|
106
63
|
end
|
107
64
|
end
|
108
65
|
end
|
66
|
+
|
67
|
+
I18n.enforce_available_locales = false
|
@@ -128,7 +128,7 @@ module ActiveMerchant #:nodoc:
|
|
128
128
|
|
129
129
|
# The application making the calls to the gateway
|
130
130
|
# Useful for things like the PayPal build notation (BN) id fields
|
131
|
-
|
131
|
+
class_attribute :application_id, instance_writer: false
|
132
132
|
self.application_id = 'ActiveMerchant'
|
133
133
|
|
134
134
|
attr_reader :options
|
@@ -181,6 +181,15 @@ module ActiveMerchant #:nodoc:
|
|
181
181
|
(@options.has_key?(:test) ? @options[:test] : Base.test?)
|
182
182
|
end
|
183
183
|
|
184
|
+
# Does this gateway know how to scrub sensitive information out of HTTP transcripts?
|
185
|
+
def supports_scrubbing?
|
186
|
+
false
|
187
|
+
end
|
188
|
+
|
189
|
+
def scrub(transcript)
|
190
|
+
raise RuntimeError.new("This gateway does not support scrubbing.")
|
191
|
+
end
|
192
|
+
|
184
193
|
protected # :nodoc: all
|
185
194
|
|
186
195
|
def normalize(field)
|
@@ -1,17 +1,12 @@
|
|
1
1
|
module ActiveMerchant
|
2
2
|
module Billing
|
3
|
-
|
3
|
+
load_path = Pathname.new(__FILE__ + '/../../..')
|
4
|
+
Dir[File.dirname(__FILE__) + '/gateways/**/*.rb'].each do |filename|
|
5
|
+
gateway_name = File.basename(filename, '.rb')
|
6
|
+
gateway_classname = "#{gateway_name}_gateway".camelize
|
7
|
+
gateway_filename = Pathname.new(filename).relative_path_from(load_path).sub_ext('')
|
4
8
|
|
5
|
-
|
6
|
-
# Get camelized class name
|
7
|
-
filename = File.basename(f, '.rb')
|
8
|
-
# Add _gateway suffix
|
9
|
-
gateway_name = filename + '_gateway'
|
10
|
-
# Camelize the string to get the class name
|
11
|
-
gateway_class = gateway_name.camelize
|
12
|
-
|
13
|
-
# Register for autoloading
|
14
|
-
autoload gateway_class, f
|
9
|
+
autoload(gateway_classname, gateway_filename)
|
15
10
|
end
|
16
11
|
end
|
17
12
|
end
|
@@ -41,8 +41,9 @@ module ActiveMerchant #:nodoc:
|
|
41
41
|
commit("AUTH_CAPTURE") do |xml|
|
42
42
|
add_order_id(xml, options)
|
43
43
|
xml.transactionRequest do
|
44
|
-
xml.transactionType
|
45
|
-
xml.amount
|
44
|
+
xml.transactionType('authCaptureTransaction')
|
45
|
+
xml.amount(amount(amount))
|
46
|
+
|
46
47
|
add_payment_source(xml, payment)
|
47
48
|
add_invoice(xml, options)
|
48
49
|
add_customer_data(xml, payment, options)
|
@@ -57,8 +58,9 @@ module ActiveMerchant #:nodoc:
|
|
57
58
|
commit("AUTH_ONLY") do |xml|
|
58
59
|
add_order_id(xml, options)
|
59
60
|
xml.transactionRequest do
|
60
|
-
xml.transactionType
|
61
|
-
xml.amount
|
61
|
+
xml.transactionType('authOnlyTransaction')
|
62
|
+
xml.amount(amount(amount))
|
63
|
+
|
62
64
|
add_payment_source(xml, payment)
|
63
65
|
add_invoice(xml, options)
|
64
66
|
add_customer_data(xml, payment, options)
|
@@ -72,9 +74,10 @@ module ActiveMerchant #:nodoc:
|
|
72
74
|
commit("PRIOR_AUTH_CAPTURE") do |xml|
|
73
75
|
add_order_id(xml, options)
|
74
76
|
xml.transactionRequest do
|
75
|
-
xml.transactionType
|
76
|
-
xml.amount
|
77
|
-
xml.refTransId
|
77
|
+
xml.transactionType('priorAuthCaptureTransaction')
|
78
|
+
xml.amount(amount(amount))
|
79
|
+
xml.refTransId(split_authorization(authorization)[0])
|
80
|
+
|
78
81
|
add_invoice(xml, options)
|
79
82
|
add_user_fields(xml, amount, options)
|
80
83
|
end
|
@@ -85,15 +88,16 @@ module ActiveMerchant #:nodoc:
|
|
85
88
|
transaction_id, card_number = split_authorization(authorization)
|
86
89
|
commit("CREDIT") do |xml|
|
87
90
|
xml.transactionRequest do
|
88
|
-
xml.transactionType
|
89
|
-
xml.amount
|
91
|
+
xml.transactionType('refundTransaction')
|
92
|
+
xml.amount(amount.nil? ? 0 : amount(amount))
|
90
93
|
xml.payment do
|
91
94
|
xml.creditCard do
|
92
95
|
xml.cardNumber(card_number || options[:card_number])
|
93
|
-
xml.expirationDate
|
96
|
+
xml.expirationDate('XXXX')
|
94
97
|
end
|
95
98
|
end
|
96
|
-
xml.refTransId
|
99
|
+
xml.refTransId(transaction_id)
|
100
|
+
|
97
101
|
add_customer_data(xml, nil, options)
|
98
102
|
add_user_fields(xml, amount, options)
|
99
103
|
end
|
@@ -104,8 +108,9 @@ module ActiveMerchant #:nodoc:
|
|
104
108
|
commit("VOID") do |xml|
|
105
109
|
add_order_id(xml, options)
|
106
110
|
xml.transactionRequest do
|
107
|
-
xml.transactionType
|
108
|
-
xml.refTransId
|
111
|
+
xml.transactionType('voidTransaction')
|
112
|
+
xml.refTransId(split_authorization(authorization)[0])
|
113
|
+
|
109
114
|
add_user_fields(xml, nil, options)
|
110
115
|
end
|
111
116
|
end
|
@@ -133,33 +138,40 @@ module ActiveMerchant #:nodoc:
|
|
133
138
|
|
134
139
|
def add_settings(xml, source, options)
|
135
140
|
xml.transactionSettings do
|
136
|
-
if
|
141
|
+
if card_brand(source) == "check" && options[:recurring]
|
137
142
|
xml.setting do
|
138
|
-
xml.settingName
|
139
|
-
xml.settingValue
|
143
|
+
xml.settingName("recurringBilling")
|
144
|
+
xml.settingValue("true")
|
140
145
|
end
|
141
146
|
end
|
142
|
-
if
|
143
|
-
xml
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
+
if options[:duplicate_window]
|
148
|
+
set_duplicate_window(xml, options[:duplicate_window])
|
149
|
+
elsif self.class.duplicate_window
|
150
|
+
ActiveMerchant.deprecated "Using the duplicate_window class_attribute is deprecated. Use the transaction options hash instead."
|
151
|
+
set_duplicate_window(xml, self.class.duplicate_window)
|
147
152
|
end
|
148
153
|
end
|
149
154
|
end
|
150
155
|
|
156
|
+
def set_duplicate_window(xml, value)
|
157
|
+
xml.setting do
|
158
|
+
xml.settingName("duplicateWindow")
|
159
|
+
xml.settingValue(value)
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
151
163
|
def add_user_fields(xml, amount, options)
|
152
164
|
xml.userFields do
|
153
|
-
if
|
165
|
+
if currency = (options[:currency] || currency(amount))
|
154
166
|
xml.userField do
|
155
|
-
xml.name
|
156
|
-
xml.value
|
167
|
+
xml.name("x_currency_code")
|
168
|
+
xml.value(currency)
|
157
169
|
end
|
158
170
|
end
|
159
|
-
if
|
171
|
+
if application_id.present? && application_id != "ActiveMerchant"
|
160
172
|
xml.userField do
|
161
|
-
xml.name
|
162
|
-
xml.value
|
173
|
+
xml.name("x_solution_id")
|
174
|
+
xml.value(application_id)
|
163
175
|
end
|
164
176
|
end
|
165
177
|
end
|
@@ -171,10 +183,10 @@ module ActiveMerchant #:nodoc:
|
|
171
183
|
else
|
172
184
|
xml.payment do
|
173
185
|
xml.creditCard do
|
174
|
-
xml.cardNumber
|
175
|
-
xml.expirationDate
|
186
|
+
xml.cardNumber(credit_card.number)
|
187
|
+
xml.expirationDate(format(credit_card.month, :two_digits) + '/' + format(credit_card.year, :four_digits))
|
176
188
|
unless empty?(credit_card.verification_value)
|
177
|
-
xml.cardCode
|
189
|
+
xml.cardCode(credit_card.verification_value)
|
178
190
|
end
|
179
191
|
end
|
180
192
|
end
|
@@ -198,8 +210,8 @@ module ActiveMerchant #:nodoc:
|
|
198
210
|
def add_apple_pay_payment_token(xml, apple_pay_payment_token)
|
199
211
|
xml.payment do
|
200
212
|
xml.opaqueData do
|
201
|
-
xml.dataDescriptor
|
202
|
-
xml.dataValue
|
213
|
+
xml.dataDescriptor(APPLE_PAY_DATA_DESCRIPTOR)
|
214
|
+
xml.dataValue(Base64.strict_encode64(apple_pay_payment_token.payment_data.to_json))
|
203
215
|
end
|
204
216
|
end
|
205
217
|
end
|
@@ -208,7 +220,7 @@ module ActiveMerchant #:nodoc:
|
|
208
220
|
return unless valid_track_data
|
209
221
|
xml.retail do
|
210
222
|
# As per http://www.authorize.net/support/CP_guide.pdf, '2' is for Retail, the only current market_type
|
211
|
-
xml.marketType
|
223
|
+
xml.marketType(2)
|
212
224
|
end
|
213
225
|
end
|
214
226
|
|
@@ -219,12 +231,12 @@ module ActiveMerchant #:nodoc:
|
|
219
231
|
def add_check(xml, check)
|
220
232
|
xml.payment do
|
221
233
|
xml.bankAccount do
|
222
|
-
xml.routingNumber
|
223
|
-
xml.accountNumber
|
224
|
-
xml.nameOnAccount
|
225
|
-
xml.echeckType
|
226
|
-
xml.bankName
|
227
|
-
xml.checkNumber
|
234
|
+
xml.routingNumber(check.routing_number)
|
235
|
+
xml.accountNumber(check.account_number)
|
236
|
+
xml.nameOnAccount(check.name)
|
237
|
+
xml.echeckType("WEB")
|
238
|
+
xml.bankName(check.bank_name)
|
239
|
+
xml.checkNumber(check.number)
|
228
240
|
end
|
229
241
|
end
|
230
242
|
end
|
@@ -271,19 +283,19 @@ module ActiveMerchant #:nodoc:
|
|
271
283
|
xml.customerIP(options[:ip]) unless empty?(options[:ip])
|
272
284
|
|
273
285
|
xml.cardholderAuthentication do
|
274
|
-
xml.authenticationIndicator
|
275
|
-
xml.cardholderAuthenticationValue
|
286
|
+
xml.authenticationIndicator(options[:authentication_indicator])
|
287
|
+
xml.cardholderAuthenticationValue(options[:cardholder_authentication_value])
|
276
288
|
end
|
277
289
|
end
|
278
290
|
|
279
291
|
def add_order_id(xml, options)
|
280
|
-
xml.refId
|
292
|
+
xml.refId(truncate(options[:order_id], 20))
|
281
293
|
end
|
282
294
|
|
283
295
|
def add_invoice(xml, options)
|
284
296
|
xml.order do
|
285
|
-
xml.invoiceNumber
|
286
|
-
xml.description
|
297
|
+
xml.invoiceNumber(truncate(options[:order_id], 20))
|
298
|
+
xml.description(truncate(options[:description], 255))
|
287
299
|
end
|
288
300
|
end
|
289
301
|
|
@@ -318,8 +330,8 @@ module ActiveMerchant #:nodoc:
|
|
318
330
|
Nokogiri::XML::Builder.new do |xml|
|
319
331
|
xml.createTransactionRequest('xmlns' => 'AnetApi/xml/v1/schema/AnetApiSchema.xsd') do
|
320
332
|
xml.merchantAuthentication do
|
321
|
-
xml.name
|
322
|
-
xml.transactionKey
|
333
|
+
xml.name(@options[:login])
|
334
|
+
xml.transactionKey(@options[:password])
|
323
335
|
end
|
324
336
|
yield(xml)
|
325
337
|
end
|
@@ -413,7 +425,6 @@ module ActiveMerchant #:nodoc:
|
|
413
425
|
return nil unless value
|
414
426
|
value.to_s[0, max_size]
|
415
427
|
end
|
416
|
-
|
417
428
|
end
|
418
429
|
end
|
419
430
|
end
|