activemerchant 1.29.3 → 1.30.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.
- data.tar.gz.sig +0 -0
- data/CHANGELOG +39 -0
- data/CONTRIBUTORS +19 -0
- data/README.md +43 -41
- data/lib/active_merchant/billing/check.rb +15 -11
- data/lib/active_merchant/billing/credit_card.rb +5 -1
- data/lib/active_merchant/billing/credit_card_formatting.rb +8 -8
- data/lib/active_merchant/billing/gateway.rb +1 -1
- data/lib/active_merchant/billing/gateways/authorize_net.rb +9 -1
- data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +15 -4
- data/lib/active_merchant/billing/gateways/balanced.rb +9 -3
- data/lib/active_merchant/billing/gateways/banwire.rb +15 -1
- data/lib/active_merchant/billing/gateways/beanstream.rb +26 -24
- data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +6 -2
- data/lib/active_merchant/billing/gateways/braintree_blue.rb +5 -2
- data/lib/active_merchant/billing/gateways/cyber_source.rb +55 -22
- data/lib/active_merchant/billing/gateways/eway.rb +114 -171
- data/lib/active_merchant/billing/gateways/eway_managed.rb +52 -22
- data/lib/active_merchant/billing/gateways/firstdata_e4.rb +222 -0
- data/lib/active_merchant/billing/gateways/ideal_rabobank.rb +13 -2
- data/lib/active_merchant/billing/gateways/litle.rb +50 -19
- data/lib/active_merchant/billing/gateways/merchant_ware.rb +44 -9
- data/lib/active_merchant/billing/gateways/merchant_warrior.rb +190 -0
- data/lib/active_merchant/billing/gateways/moneris.rb +2 -4
- data/lib/active_merchant/billing/gateways/nab_transact.rb +20 -3
- data/lib/active_merchant/billing/gateways/netbilling.rb +1 -0
- data/lib/active_merchant/billing/gateways/netpay.rb +223 -0
- data/lib/active_merchant/billing/gateways/optimal_payment.rb +18 -3
- data/lib/active_merchant/billing/gateways/orbital.rb +9 -5
- data/lib/active_merchant/billing/gateways/payment_express.rb +62 -1
- data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +1 -1
- data/lib/active_merchant/billing/gateways/paypal_express.rb +2 -0
- data/lib/active_merchant/billing/gateways/pin.rb +157 -0
- data/lib/active_merchant/billing/gateways/qbms.rb +3 -2
- data/lib/active_merchant/billing/gateways/quickpay.rb +66 -28
- data/lib/active_merchant/billing/gateways/sage_pay.rb +6 -0
- data/lib/active_merchant/billing/gateways/smart_ps.rb +1 -1
- data/lib/active_merchant/billing/gateways/spreedly_core.rb +235 -0
- data/lib/active_merchant/billing/gateways/stripe.rb +1 -0
- data/lib/active_merchant/billing/gateways/wirecard.rb +15 -9
- data/lib/active_merchant/billing/integrations/payflow_link/helper.rb +4 -1
- data/lib/active_merchant/billing/integrations/paypal/notification.rb +39 -31
- data/lib/active_merchant/billing/integrations/quickpay/helper.rb +13 -10
- data/lib/active_merchant/billing/integrations/quickpay/notification.rb +14 -14
- data/lib/active_merchant/version.rb +1 -1
- metadata +109 -49
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG
CHANGED
@@ -1,7 +1,46 @@
|
|
1
1
|
= ActiveMerchant CHANGELOG
|
2
2
|
|
3
|
+
== Version 1.30.0 (February 13, 2013)
|
4
|
+
|
5
|
+
* Add FirstData Global Gateway e4 [frobcode]
|
6
|
+
* PaymentExpress: Add support for optional fields: ClientType and TxnData [moklett]
|
7
|
+
* PaymentExpress: Limit MerchantReference/description to 64 chars [moklett]
|
8
|
+
* Wirecard: description must be no more than 32 characters [moklett]
|
9
|
+
* Litle: Add support for passing a token to the authorize and purchase methods [forest]
|
10
|
+
* PayPal Common: Allow searching for transactions by ProfileID [aq1018]
|
11
|
+
* Add Spreedly Core gateway [duff]
|
12
|
+
* eWay Gateway: Return proper value for authorization [duff]
|
13
|
+
* eWay Gateway: Add support for refunds [duff]
|
14
|
+
* Quickpay: Add support for protocols 5 & 6 [twarberg]
|
15
|
+
* Banwire gateway: Handle JSON::ParserError [duff]
|
16
|
+
* Balanced gateway: Fix unspecified marketplace [duff]
|
17
|
+
* QBMS gateway: Allow partial addresses [duff]
|
18
|
+
* Authorize.Net CIM: Allow omitting card expiration date [shanebonham]
|
19
|
+
* Authorize.Net CIM: Add support for extraOptions to createCustomerProfileTransaction [tpiekos]
|
20
|
+
* Add NETPAY gateway [samlown]
|
21
|
+
* Balanced gateway: Add amount to the refund method signature [ntalbott]
|
22
|
+
* Orbital gateway: Fix void method signature [aprofeit, ntalbott]
|
23
|
+
* Eway Managed: Add 'query_customer' API as #retrieve [cdaloisio]
|
24
|
+
* NetPay: Fix the signature for void [duff]
|
25
|
+
* Cybersource: Add check support [bowmande]
|
26
|
+
* Moneris: Use a capture of $0 for void [ntalbott]
|
27
|
+
* PayPal Express integration: Fix received_at time zone [ntalbott]
|
28
|
+
* NAB Transact: Add refund capability [nagash]
|
29
|
+
* Stripe: Add support for application_fee [duff]
|
30
|
+
* SagePay: Add support for GiftAidPayment [duff]
|
31
|
+
* Wirecard: Add support for partial captures [richardblair]
|
32
|
+
* Add Pin gateway [madpilot]
|
33
|
+
* Balanced: Added support for on_behalf_of_uri to capture [cwise]
|
34
|
+
* Litle: Add support for passing an order_source [forest]
|
35
|
+
* Add Merchant Warrior gateway [pronix, Fodoj, ntalbott]
|
36
|
+
* Use v4 of the MerchantWare API for voiding transactions [melari]
|
37
|
+
* Add support for Authorize.net in CA and GB [melari]
|
38
|
+
* Send customer's IP to Beanstream for fraud review [melari]
|
39
|
+
|
3
40
|
== Version 1.29.3 (December 7, 2012)
|
4
41
|
|
42
|
+
* Braintree Blue: Better wiredump_device support [ntalbott]
|
43
|
+
* Braintree: Store sets vault id as authorization [ntalbott]
|
5
44
|
* WorldPay: Fix currencies without fractions like JPY and HUF by rounding down amount [Soleone]
|
6
45
|
|
7
46
|
== Version 1.29.2 (December 7, 2012)
|
data/CONTRIBUTORS
CHANGED
@@ -357,3 +357,22 @@ Liqpay integration (November 2012)
|
|
357
357
|
eWay Rapid 3.0 gateway (December 2012)
|
358
358
|
|
359
359
|
* Nathaniel Talbott (ntalbott)
|
360
|
+
|
361
|
+
FirstData Global Gateway e4 (December 2012)
|
362
|
+
|
363
|
+
* Chris Sheppard (frobcode)
|
364
|
+
|
365
|
+
Spreedly Core gateway (December 2012)
|
366
|
+
|
367
|
+
* Duff OMelia (duff)
|
368
|
+
|
369
|
+
Pin gateway (February 2013)
|
370
|
+
|
371
|
+
* Myles Eftos (madpilot)
|
372
|
+
|
373
|
+
Merchant Warrior
|
374
|
+
|
375
|
+
* Ben Bruscella (benbruscella)
|
376
|
+
* Дмитрий Василец (pronix)
|
377
|
+
* Kirill Shirinkin (Fodoj)
|
378
|
+
* Nathaniel Talbott (ntalbott)
|
data/README.md
CHANGED
@@ -4,11 +4,13 @@ Active Merchant is an extraction from the e-commerce system [Shopify](http://www
|
|
4
4
|
Shopify's requirements for a simple and unified API to access dozens of different payment
|
5
5
|
gateways with very different internal APIs was the chief principle in designing the library.
|
6
6
|
|
7
|
-
Active Merchant has been in production use since June 2006 and is now used in most modern
|
8
|
-
Ruby applications which deal with financial transactions.
|
9
|
-
|
10
7
|
It was developed for usage in Ruby on Rails web applications and integrates seamlessly
|
11
|
-
as a plugin but it also works excellently as a stand alone library.
|
8
|
+
as a Rails plugin, but it also works excellently as a stand alone Ruby library.
|
9
|
+
|
10
|
+
Active Merchant has been in production use since June 2006 and is now used in most modern
|
11
|
+
Ruby applications which deal with financial transactions. It is maintained by the
|
12
|
+
[Shopify](http://www.shopify.com) and [Spreedly](https://spreedly.com) teams, with much help
|
13
|
+
from an ever-growing set of contributors.
|
12
14
|
|
13
15
|
See {file:GettingStarted.md} if you want to learn more about using Active Merchant in your
|
14
16
|
applications.
|
@@ -21,61 +23,54 @@ You can check out the latest source from git:
|
|
21
23
|
|
22
24
|
git clone git://github.com/Shopify/active_merchant.git
|
23
25
|
|
24
|
-
### As a Rails plugin
|
25
|
-
|
26
|
-
ActiveMerchant includes an init.rb file. This means that Rails will automatically load ActiveMerchant on startup. Run
|
27
|
-
the following command from the root directory of your Rails project to install ActiveMerchant as a Rails plugin:
|
28
|
-
|
29
|
-
script/plugin install git://github.com/Shopify/active_merchant.git
|
30
|
-
|
31
26
|
### From RubyGems
|
32
27
|
|
33
|
-
Installation from RubyGems
|
28
|
+
Installation from RubyGems:
|
34
29
|
|
35
30
|
gem install activemerchant
|
36
31
|
|
37
|
-
|
32
|
+
Or, if you're using Bundler, just add the following to your Gemfile:
|
38
33
|
|
39
|
-
gem 'activemerchant'
|
34
|
+
gem 'activemerchant'
|
40
35
|
|
41
36
|
## Usage
|
42
37
|
|
43
38
|
This simple example demonstrates how a purchase can be made using a person's
|
44
39
|
credit card details.
|
45
40
|
|
46
|
-
|
47
|
-
|
41
|
+
require 'rubygems'
|
42
|
+
require 'active_merchant'
|
48
43
|
|
49
|
-
|
50
|
-
|
44
|
+
# Use the TrustCommerce test servers
|
45
|
+
ActiveMerchant::Billing::Base.mode = :test
|
51
46
|
|
52
|
-
|
53
|
-
|
54
|
-
|
47
|
+
gateway = ActiveMerchant::Billing::TrustCommerceGateway.new(
|
48
|
+
:login => 'TestMerchant',
|
49
|
+
:password => 'password')
|
55
50
|
|
56
|
-
|
57
|
-
|
51
|
+
# ActiveMerchant accepts all amounts as Integer values in cents
|
52
|
+
amount = 1000 # $10.00
|
58
53
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
54
|
+
# The card verification value is also known as CVV2, CVC2, or CID
|
55
|
+
credit_card = ActiveMerchant::Billing::CreditCard.new(
|
56
|
+
:first_name => 'Bob',
|
57
|
+
:last_name => 'Bobsen',
|
58
|
+
:number => '4242424242424242',
|
59
|
+
:month => '8',
|
60
|
+
:year => Time.now.year+1,
|
61
|
+
:verification_value => '000')
|
67
62
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
63
|
+
# Validating the card automatically detects the card type
|
64
|
+
if credit_card.valid?
|
65
|
+
# Capture $10 from the credit card
|
66
|
+
response = gateway.purchase(amount, credit_card)
|
72
67
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
68
|
+
if response.success?
|
69
|
+
puts "Successfully charged $#{sprintf("%.2f", amount / 100)} to the credit card #{credit_card.display_number}"
|
70
|
+
else
|
71
|
+
raise StandardError, response.message
|
72
|
+
end
|
73
|
+
end
|
79
74
|
|
80
75
|
For more in-depth documentation and tutorials, see {file:GettingStarted.md} and the
|
81
76
|
[API documentation](http://rubydoc.info/github/Shopify/active_merchant/master/file/README.md).
|
@@ -104,6 +99,7 @@ The [ActiveMerchant Wiki](http://github.com/Shopify/active_merchant/wikis) conta
|
|
104
99
|
* [E-xact](http://www.e-xact.com) - CA, US
|
105
100
|
* [Fat Zebra](https://www.fatzebra.com.au) - AU
|
106
101
|
* [Federated Canada](http://www.federatedcanada.com/) - CA
|
102
|
+
* [FirstData Global Gateway e4](http://www.firstdata.com) - CA, US
|
107
103
|
* [FirstPay](http://www.first-pay.com) - US
|
108
104
|
* [Garanti Sanal POS](https://ccpos.garanti.com.tr/ccRaporlar/garanti/ccReports) - US, TR
|
109
105
|
* [HDFC](http://www.hdfcbank.com/sme/sme-details/merchant-services/guzh6m0i) - IN
|
@@ -116,6 +112,7 @@ The [ActiveMerchant Wiki](http://github.com/Shopify/active_merchant/wikis) conta
|
|
116
112
|
* [Litle](http://www.litle.com/) - US
|
117
113
|
* [Merchant e-Solutions](http://merchante-solutions.com/) - US
|
118
114
|
* [MerchantWare](http://merchantwarehouse.com/merchantware) - US
|
115
|
+
* [Merchant Warrior] (http://merchantwarrior.com) - AU
|
119
116
|
* [Mercury](http://www.mercurypay.com) - US
|
120
117
|
* [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
|
121
118
|
* [Modern Payments](http://www.modpay.com) - US
|
@@ -125,6 +122,7 @@ The [ActiveMerchant Wiki](http://github.com/Shopify/active_merchant/wikis) conta
|
|
125
122
|
* [NELiX TransaX Gateway](http://www.nelixtransax.com) - US
|
126
123
|
* [Netaxept](http://www.betalingsterminal.no/Netthandel-forside) - NO, DK, SE, FI
|
127
124
|
* [NETbilling](http://www.netbilling.com) - US
|
125
|
+
* [NetPay](http://www.netpay.com.mx) - MX
|
128
126
|
* [NetRegistry](http://www.netregistry.com.au) - AU
|
129
127
|
* [NMI](http://nmi.com/) - US
|
130
128
|
* [Ogone DirectLink](http://www.ogone.com) - BE, DE, FR, NL, AT, CH
|
@@ -142,6 +140,7 @@ The [ActiveMerchant Wiki](http://github.com/Shopify/active_merchant/wikis) conta
|
|
142
140
|
* [PayPal Website Payments Pro (US)](https://www.paypal.com/cgi-bin/webscr?cmd=_wp-pro-overview-outside) - US
|
143
141
|
* [PaySecure](http://www.commsecure.com.au/paysecure.shtml) - AU
|
144
142
|
* [PayWay](https://www.payway.com.au) - AU
|
143
|
+
* [Pin](http://www.pin.net.au/) - AU
|
145
144
|
* [Plug'n Pay](http://www.plugnpay.com/) - US
|
146
145
|
* [Psigate](http://www.psigate.com/) - CA
|
147
146
|
* [PSL Payment Solutions](http://www.paymentsolutionsltd.com/) - UK
|
@@ -159,6 +158,7 @@ The [ActiveMerchant Wiki](http://github.com/Shopify/active_merchant/wikis) conta
|
|
159
158
|
* [SecurePay](http://www.securepay.com/) - US
|
160
159
|
* [SecurePayTech](http://www.securepaytech.com/) - NZ
|
161
160
|
* [SkipJack](http://www.skipjack.com/) - US, CA
|
161
|
+
* [Spreedly Core](https://spreedlycore.com/) - AD, AE, AT, AU, BD, BE, BG, BN, CA, CH, CY, CZ, DE, DK, EE, EG, ES, FI, FR, GB, GI, GR, HK, HU, ID, IE, IL, IM, IN, IS, IT, JO, KW, LB, LI, LK, LT, LU, LV, MC, MT, MU, MV, MX, MY, NL, NO, NZ, OM, PH, PL, PT, QA, RO, SA, SE, SG, SI, SK, SM, TR, TT, UM, US, VA, VN, ZA
|
162
162
|
* [Stripe](https://stripe.com/) - US
|
163
163
|
* [TransFirst](http://www.transfirst.com/) - US
|
164
164
|
* [TrustCommerce](http://www.trustcommerce.com/) - US
|
@@ -211,3 +211,5 @@ Please don't touch the CHANGELOG in your pull requests, we'll add the appropriat
|
|
211
211
|
at release time.
|
212
212
|
|
213
213
|
[](http://travis-ci.org/Shopify/active_merchant)
|
214
|
+
|
215
|
+
[](https://codeclimate.com/github/Shopify/active_merchant)
|
@@ -3,21 +3,21 @@ module ActiveMerchant #:nodoc:
|
|
3
3
|
# The Check object is a plain old Ruby object, similar to CreditCard. It supports validation
|
4
4
|
# of necessary attributes such as checkholder's name, routing and account numbers, but it is
|
5
5
|
# not backed by any database.
|
6
|
-
#
|
6
|
+
#
|
7
7
|
# You may use Check in place of CreditCard with any gateway that supports it. Currently, only
|
8
8
|
# +BraintreeGateway+ supports the Check object.
|
9
9
|
class Check
|
10
10
|
include Validateable
|
11
|
-
|
11
|
+
|
12
12
|
attr_accessor :first_name, :last_name, :routing_number, :account_number, :account_holder_type, :account_type, :number
|
13
|
-
|
13
|
+
|
14
14
|
# Used for Canadian bank accounts
|
15
15
|
attr_accessor :institution_number, :transit_number
|
16
|
-
|
16
|
+
|
17
17
|
def name
|
18
18
|
@name ||= "#{@first_name} #{@last_name}".strip
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
def name=(value)
|
22
22
|
return if value.blank?
|
23
23
|
|
@@ -26,25 +26,29 @@ module ActiveMerchant #:nodoc:
|
|
26
26
|
@last_name = segments.pop
|
27
27
|
@first_name = segments.join(' ')
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
def validate
|
31
31
|
[:name, :routing_number, :account_number].each do |attr|
|
32
32
|
errors.add(attr, "cannot be empty") if self.send(attr).blank?
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
errors.add(:routing_number, "is invalid") unless valid_routing_number?
|
36
|
-
|
36
|
+
|
37
37
|
errors.add(:account_holder_type, "must be personal or business") if
|
38
38
|
!account_holder_type.blank? && !%w[business personal].include?(account_holder_type.to_s)
|
39
|
-
|
39
|
+
|
40
40
|
errors.add(:account_type, "must be checking or savings") if
|
41
41
|
!account_type.blank? && !%w[checking savings].include?(account_type.to_s)
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
def type
|
45
45
|
'check'
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
|
+
def check?
|
49
|
+
true
|
50
|
+
end
|
51
|
+
|
48
52
|
# Routing numbers may be validated by calculating a checksum and dividing it by 10. The
|
49
53
|
# formula is:
|
50
54
|
# (3(d1 + d4 + d7) + 7(d2 + d5 + d8) + 1(d3 + d6 + d9))mod 10 = 0
|
@@ -181,7 +181,7 @@ module ActiveMerchant #:nodoc:
|
|
181
181
|
def display_number
|
182
182
|
self.class.mask(number)
|
183
183
|
end
|
184
|
-
|
184
|
+
|
185
185
|
def first_digits
|
186
186
|
self.class.first_digits(number)
|
187
187
|
end
|
@@ -209,6 +209,10 @@ module ActiveMerchant #:nodoc:
|
|
209
209
|
require_verification_value
|
210
210
|
end
|
211
211
|
|
212
|
+
def check?
|
213
|
+
false
|
214
|
+
end
|
215
|
+
|
212
216
|
private
|
213
217
|
|
214
218
|
def before_validate #:nodoc:
|
@@ -1,21 +1,21 @@
|
|
1
1
|
module ActiveMerchant #:nodoc:
|
2
2
|
module Billing #:nodoc:
|
3
3
|
module CreditCardFormatting
|
4
|
-
|
5
|
-
# This method is used to format numerical information pertaining to credit cards.
|
6
|
-
#
|
4
|
+
|
5
|
+
# This method is used to format numerical information pertaining to credit cards.
|
6
|
+
#
|
7
7
|
# format(2005, :two_digits) # => "05"
|
8
8
|
# format(05, :four_digits) # => "0005"
|
9
9
|
def format(number, option)
|
10
10
|
return '' if number.blank?
|
11
|
-
|
11
|
+
|
12
12
|
case option
|
13
|
-
when :two_digits ; sprintf("%.2i", number)[-2..-1]
|
14
|
-
when :four_digits ; sprintf("%.4i", number)[-4..-1]
|
13
|
+
when :two_digits ; sprintf("%.2i", number.to_i)[-2..-1]
|
14
|
+
when :four_digits ; sprintf("%.4i", number.to_i)[-4..-1]
|
15
15
|
else number
|
16
16
|
end
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
end
|
20
20
|
end
|
21
|
-
end
|
21
|
+
end
|
@@ -62,7 +62,7 @@ module ActiveMerchant #:nodoc:
|
|
62
62
|
include Utils
|
63
63
|
|
64
64
|
DEBIT_CARDS = [ :switch, :solo ]
|
65
|
-
CURRENCIES_WITHOUT_FRACTIONS = [ 'JPY', 'HUF' ]
|
65
|
+
CURRENCIES_WITHOUT_FRACTIONS = [ 'JPY', 'HUF', 'TWD' ]
|
66
66
|
CREDIT_DEPRECATION_MESSAGE = "Support for using credit to refund existing transactions is deprecated and will be removed from a future release of ActiveMerchant. Please use the refund method instead."
|
67
67
|
|
68
68
|
cattr_reader :implementations
|
@@ -41,7 +41,9 @@ module ActiveMerchant #:nodoc:
|
|
41
41
|
RESPONSE_CODE, RESPONSE_REASON_CODE, RESPONSE_REASON_TEXT = 0, 2, 3
|
42
42
|
AVS_RESULT_CODE, TRANSACTION_ID, CARD_CODE_RESPONSE_CODE = 5, 6, 38
|
43
43
|
|
44
|
-
self.
|
44
|
+
self.default_currency = 'USD'
|
45
|
+
|
46
|
+
self.supported_countries = ['US', 'CA', 'GB']
|
45
47
|
self.supported_cardtypes = [:visa, :master, :american_express, :discover, :diners_club, :jcb]
|
46
48
|
self.homepage_url = 'http://www.authorize.net/'
|
47
49
|
self.display_name = 'Authorize.Net'
|
@@ -85,6 +87,7 @@ module ActiveMerchant #:nodoc:
|
|
85
87
|
# * <tt>options</tt> -- A hash of optional parameters.
|
86
88
|
def authorize(money, creditcard, options = {})
|
87
89
|
post = {}
|
90
|
+
add_currency_code(post, money, options)
|
88
91
|
add_invoice(post, options)
|
89
92
|
add_creditcard(post, creditcard)
|
90
93
|
add_address(post, options)
|
@@ -103,6 +106,7 @@ module ActiveMerchant #:nodoc:
|
|
103
106
|
# * <tt>options</tt> -- A hash of optional parameters.
|
104
107
|
def purchase(money, creditcard, options = {})
|
105
108
|
post = {}
|
109
|
+
add_currency_code(post, money, options)
|
106
110
|
add_invoice(post, options)
|
107
111
|
add_creditcard(post, creditcard)
|
108
112
|
add_address(post, options)
|
@@ -328,6 +332,10 @@ module ActiveMerchant #:nodoc:
|
|
328
332
|
request
|
329
333
|
end
|
330
334
|
|
335
|
+
def add_currency_code(post, money, options)
|
336
|
+
post[:currency_code] = options[:currency] || currency(money)
|
337
|
+
end
|
338
|
+
|
331
339
|
def add_invoice(post, options)
|
332
340
|
post[:invoice_num] = options[:order_id]
|
333
341
|
post[:description] = options[:description]
|
@@ -93,8 +93,8 @@ module ActiveMerchant #:nodoc:
|
|
93
93
|
# * <tt>:login</tt> -- The Authorize.Net API Login ID (REQUIRED)
|
94
94
|
# * <tt>:password</tt> -- The Authorize.Net Transaction Key. (REQUIRED)
|
95
95
|
# * <tt>:test</tt> -- +true+ or +false+. If true, perform transactions against the test server.
|
96
|
-
# * <tt>:delimiter</tt> -- The delimiter used in the direct response. Default is ',' (comma).
|
97
96
|
# Otherwise, perform transactions against the production server.
|
97
|
+
# * <tt>:delimiter</tt> -- The delimiter used in the direct response. Default is ',' (comma).
|
98
98
|
def initialize(options = {})
|
99
99
|
requires!(options, :login, :password)
|
100
100
|
super
|
@@ -468,7 +468,11 @@ module ActiveMerchant #:nodoc:
|
|
468
468
|
private
|
469
469
|
|
470
470
|
def expdate(credit_card)
|
471
|
-
|
471
|
+
if credit_card.year.present? && credit_card.month.present?
|
472
|
+
sprintf('%04d-%02d', credit_card.year, credit_card.month)
|
473
|
+
else
|
474
|
+
'XXXX'
|
475
|
+
end
|
472
476
|
end
|
473
477
|
|
474
478
|
def build_request(action, options = {})
|
@@ -599,8 +603,11 @@ module ActiveMerchant #:nodoc:
|
|
599
603
|
end
|
600
604
|
|
601
605
|
def build_create_customer_profile_transaction_request(xml, options)
|
606
|
+
options[:extra_options] ||= {}
|
607
|
+
options[:extra_options].merge!('x_test_request' => 'TRUE') if @options[:test]
|
608
|
+
|
602
609
|
add_transaction(xml, options[:transaction])
|
603
|
-
xml
|
610
|
+
tag_unless_blank(xml, 'extraOptions', format_extra_options(options[:extra_options]))
|
604
611
|
|
605
612
|
xml.target!
|
606
613
|
end
|
@@ -652,7 +659,7 @@ module ActiveMerchant #:nodoc:
|
|
652
659
|
tag_unless_blank(xml,'customerShippingAddressId', transaction[:customer_shipping_address_id])
|
653
660
|
xml.tag!('transId', transaction[:trans_id])
|
654
661
|
when :refund
|
655
|
-
#TODO - add lineItems
|
662
|
+
#TODO - add lineItems field
|
656
663
|
xml.tag!('amount', transaction[:amount])
|
657
664
|
tag_unless_blank(xml, 'customerProfileId', transaction[:customer_profile_id])
|
658
665
|
tag_unless_blank(xml, 'customerPaymentProfileId', transaction[:customer_payment_profile_id])
|
@@ -849,6 +856,10 @@ module ActiveMerchant #:nodoc:
|
|
849
856
|
xml.tag!(tag_name, data) unless data.blank? || data.nil?
|
850
857
|
end
|
851
858
|
|
859
|
+
def format_extra_options(options)
|
860
|
+
options.map{ |k, v| "#{k}=#{v}" }.join(',') unless options.nil?
|
861
|
+
end
|
862
|
+
|
852
863
|
def parse_direct_response(params)
|
853
864
|
delimiter = @options[:delimiter] || ','
|
854
865
|
direct_response = {'raw' => params}
|
@@ -91,8 +91,8 @@ module ActiveMerchant #:nodoc:
|
|
91
91
|
# * <tt>:login</tt> -- The Balanced API Secret (REQUIRED)
|
92
92
|
def initialize(options = {})
|
93
93
|
requires!(options, :login)
|
94
|
-
initialize_marketplace(options[:marketplace] || load_marketplace)
|
95
94
|
super
|
95
|
+
initialize_marketplace(options[:marketplace] || load_marketplace)
|
96
96
|
end
|
97
97
|
|
98
98
|
# Performs an authorization (Hold in Balanced nonclementure), which
|
@@ -197,6 +197,7 @@ module ActiveMerchant #:nodoc:
|
|
197
197
|
post[:hold_uri] = authorization
|
198
198
|
post[:amount] = money if money
|
199
199
|
post[:description] = options[:description] if options[:description]
|
200
|
+
post[:on_behalf_of_uri] = options[:on_behalf_of_uri] if options[:on_behalf_of_uri]
|
200
201
|
|
201
202
|
create_transaction(:post, @debits_uri, post)
|
202
203
|
rescue Error => ex
|
@@ -234,11 +235,16 @@ module ActiveMerchant #:nodoc:
|
|
234
235
|
# * <tt>`:amount`<tt> -- specify an amount if you want to perform a
|
235
236
|
# partial refund. This value will default to the total amount of the
|
236
237
|
# debit that has not been refunded so far.
|
237
|
-
def refund(debit_uri, options = {})
|
238
|
+
def refund(amount, debit_uri = "deprecated", options = {})
|
239
|
+
if(debit_uri == "deprecated" || debit_uri.kind_of?(Hash))
|
240
|
+
deprecated "Calling the refund method without an amount parameter is deprecated and will be removed in a future version."
|
241
|
+
return refund(options[:amount], amount, options)
|
242
|
+
end
|
243
|
+
|
238
244
|
requires!(debit_uri)
|
239
245
|
post = {}
|
240
246
|
post[:debit_uri] = debit_uri
|
241
|
-
post[:amount] =
|
247
|
+
post[:amount] = amount
|
242
248
|
post[:description] = options[:description]
|
243
249
|
create_transaction(:post, @refunds_uri, post)
|
244
250
|
rescue Error => ex
|