activemerchant 1.56.0 → 1.66.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +331 -0
  3. data/README.md +9 -9
  4. data/lib/active_merchant/billing/check.rb +3 -0
  5. data/lib/active_merchant/billing/credit_card.rb +8 -3
  6. data/lib/active_merchant/billing/credit_card_methods.rb +41 -1
  7. data/lib/active_merchant/billing/gateway.rb +14 -6
  8. data/lib/active_merchant/billing/gateways/adyen.rb +228 -0
  9. data/lib/active_merchant/billing/gateways/authorize_net.rb +157 -44
  10. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +7 -4
  11. data/lib/active_merchant/billing/gateways/barclaycard_smartpay.rb +283 -0
  12. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +68 -2
  13. data/lib/active_merchant/billing/gateways/blue_pay.rb +2 -2
  14. data/lib/active_merchant/billing/gateways/blue_snap.rb +348 -0
  15. data/lib/active_merchant/billing/gateways/bpoint.rb +1 -1
  16. data/lib/active_merchant/billing/gateways/braintree_blue.rb +58 -20
  17. data/lib/active_merchant/billing/gateways/bridge_pay.rb +37 -8
  18. data/lib/active_merchant/billing/gateways/card_stream.rb +161 -40
  19. data/lib/active_merchant/billing/gateways/cashnet.rb +1 -0
  20. data/lib/active_merchant/billing/gateways/checkout_v2.rb +5 -2
  21. data/lib/active_merchant/billing/gateways/citrus_pay.rb +24 -0
  22. data/lib/active_merchant/billing/gateways/clearhaus.rb +24 -40
  23. data/lib/active_merchant/billing/gateways/conekta.rb +6 -1
  24. data/lib/active_merchant/billing/gateways/creditcall.rb +1 -1
  25. data/lib/active_merchant/billing/gateways/credorax.rb +310 -0
  26. data/lib/active_merchant/billing/gateways/culqi.rb +279 -0
  27. data/lib/active_merchant/billing/gateways/cyber_source.rb +80 -64
  28. data/lib/active_merchant/billing/gateways/data_cash.rb +10 -304
  29. data/lib/active_merchant/billing/gateways/digitzs.rb +292 -0
  30. data/lib/active_merchant/billing/gateways/elavon.rb +40 -26
  31. data/lib/active_merchant/billing/gateways/element.rb +356 -0
  32. data/lib/active_merchant/billing/gateways/fat_zebra.rb +16 -2
  33. data/lib/active_merchant/billing/gateways/firstdata_e4.rb +6 -1
  34. data/lib/active_merchant/billing/gateways/forte.rb +10 -2
  35. data/lib/active_merchant/billing/gateways/global_collect.rb +311 -0
  36. data/lib/active_merchant/billing/gateways/global_transport.rb +1 -0
  37. data/lib/active_merchant/billing/gateways/iats_payments.rb +13 -0
  38. data/lib/active_merchant/billing/gateways/in_context_paypal_express.rb +15 -0
  39. data/lib/active_merchant/billing/gateways/iveri.rb +251 -0
  40. data/lib/active_merchant/billing/gateways/jetpay.rb +33 -19
  41. data/lib/active_merchant/billing/gateways/kushki.rb +217 -0
  42. data/lib/active_merchant/billing/gateways/latitude19.rb +416 -0
  43. data/lib/active_merchant/billing/gateways/linkpoint.rb +2 -0
  44. data/lib/active_merchant/billing/gateways/litle.rb +29 -13
  45. data/lib/active_merchant/billing/gateways/mastercard.rb +268 -0
  46. data/lib/active_merchant/billing/gateways/maxipago.rb +145 -122
  47. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +15 -1
  48. data/lib/active_merchant/billing/gateways/merchant_warrior.rb +10 -7
  49. data/lib/active_merchant/billing/gateways/mercury.rb +13 -5
  50. data/lib/active_merchant/billing/gateways/metrics_global.rb +1 -1
  51. data/lib/active_merchant/billing/gateways/migs.rb +23 -1
  52. data/lib/active_merchant/billing/gateways/monei.rb +1 -1
  53. data/lib/active_merchant/billing/gateways/moneris.rb +21 -1
  54. data/lib/active_merchant/billing/gateways/nab_transact.rb +12 -0
  55. data/lib/active_merchant/billing/gateways/ncr_secure_pay.rb +165 -0
  56. data/lib/active_merchant/billing/gateways/netbanx.rb +245 -0
  57. data/lib/active_merchant/billing/gateways/nmi.rb +30 -9
  58. data/lib/active_merchant/billing/gateways/omise.rb +9 -5
  59. data/lib/active_merchant/billing/gateways/openpay.rb +10 -1
  60. data/lib/active_merchant/billing/gateways/opp.rb +362 -0
  61. data/lib/active_merchant/billing/gateways/orbital.rb +28 -7
  62. data/lib/active_merchant/billing/gateways/pagarme.rb +248 -0
  63. data/lib/active_merchant/billing/gateways/pay_junction_v2.rb +190 -0
  64. data/lib/active_merchant/billing/gateways/payeezy.rb +61 -12
  65. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +1 -1
  66. data/lib/active_merchant/billing/gateways/payflow.rb +6 -0
  67. data/lib/active_merchant/billing/gateways/payment_express.rb +1 -1
  68. data/lib/active_merchant/billing/gateways/paymill.rb +29 -11
  69. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +1 -1
  70. data/lib/active_merchant/billing/gateways/paypal_express.rb +1 -6
  71. data/lib/active_merchant/billing/gateways/payu_in.rb +3 -2
  72. data/lib/active_merchant/billing/gateways/payu_latam.rb +402 -0
  73. data/lib/active_merchant/billing/gateways/pin.rb +6 -3
  74. data/lib/active_merchant/billing/gateways/pro_pay.rb +326 -0
  75. data/lib/active_merchant/billing/gateways/psl_card.rb +3 -3
  76. data/lib/active_merchant/billing/gateways/quickpay/quickpay_common.rb +1 -1
  77. data/lib/active_merchant/billing/gateways/quickpay/quickpay_v10.rb +0 -2
  78. data/lib/active_merchant/billing/gateways/quickpay/quickpay_v4to7.rb +1 -1
  79. data/lib/active_merchant/billing/gateways/quickpay.rb +3 -3
  80. data/lib/active_merchant/billing/gateways/qvalent.rb +44 -1
  81. data/lib/active_merchant/billing/gateways/redsys.rb +3 -0
  82. data/lib/active_merchant/billing/gateways/s5.rb +8 -5
  83. data/lib/active_merchant/billing/gateways/safe_charge.rb +220 -0
  84. data/lib/active_merchant/billing/gateways/sage.rb +397 -128
  85. data/lib/active_merchant/billing/gateways/sage_pay.rb +45 -20
  86. data/lib/active_merchant/billing/gateways/secure_net.rb +0 -5
  87. data/lib/active_merchant/billing/gateways/secure_pay.rb +1 -1
  88. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +12 -0
  89. data/lib/active_merchant/billing/gateways/securion_pay.rb +46 -17
  90. data/lib/active_merchant/billing/gateways/stripe.rb +125 -29
  91. data/lib/active_merchant/billing/gateways/telr.rb +275 -0
  92. data/lib/active_merchant/billing/gateways/tns.rb +13 -222
  93. data/lib/active_merchant/billing/gateways/trans_first.rb +40 -16
  94. data/lib/active_merchant/billing/gateways/trans_first_transaction_express.rb +606 -0
  95. data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +114 -9
  96. data/lib/active_merchant/billing/gateways/vanco.rb +14 -10
  97. data/lib/active_merchant/billing/gateways/visanet_peru.rb +209 -0
  98. data/lib/active_merchant/billing/gateways/wepay.rb +73 -38
  99. data/lib/active_merchant/billing/gateways/wirecard.rb +1 -0
  100. data/lib/active_merchant/billing/gateways/world_net.rb +344 -0
  101. data/lib/active_merchant/billing/gateways/worldpay.rb +48 -16
  102. data/lib/active_merchant/billing/network_tokenization_credit_card.rb +15 -0
  103. data/lib/active_merchant/country.rb +6 -4
  104. data/lib/active_merchant/posts_data.rb +1 -1
  105. data/lib/active_merchant/version.rb +1 -1
  106. metadata +32 -13
  107. data/lib/active_merchant/billing/gateways/app55.rb +0 -176
  108. data/lib/active_merchant/billing/gateways/barclays_epdq.rb +0 -314
  109. data/lib/active_merchant/billing/gateways/certo_direct.rb +0 -278
  110. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +0 -89
  111. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +0 -115
  112. data/lib/active_merchant/billing/gateways/sage/sage_vault.rb +0 -149
  113. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +0 -97
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8a7fa5a42dbb05e1c335a93e8cefc85781e7cbae
4
- data.tar.gz: 928d0561eab8bc6a0fcac4245ccc2342d4e8fa6a
3
+ metadata.gz: 5c4bbd0ee52bf39713dad270b4e4b923d24d193c
4
+ data.tar.gz: 304ee11c40f4c5c68d108ccbab8a6eceaddb0315
5
5
  SHA512:
6
- metadata.gz: bf1511639e9a72d13e6be69a301e0f0553cd4b52e65205a0e9f777c951e355124c16440182716a622beb5cd56037d98aea1659e1bdf49541b20d0438d2bf3802
7
- data.tar.gz: 83dd4208bb147e5dce68f4751ff27e7298f03fffa0ef8c32f0f335fbf8fa79b1c4177d4839b236510fc7d9f66bedf98a4237085fbb2dcc94a9509d57f3004feb
6
+ metadata.gz: 69f9b2b2082147a44ec23c987b1f6ffaf139b44a2773e84c4c30e70b18812e02677c37714f36de005db44ebe66237b1617ddce74f58fae8731544d990accf216
7
+ data.tar.gz: 394bc190204e8e3cb01b1b1b5f5a27c6af430672c51767a760b2f816d0c07e29ef5cb0d9bb3346a616a0ba3083d954d43034d7d8333b721a5ce44bb06ef5e940
data/CHANGELOG CHANGED
@@ -1,5 +1,333 @@
1
1
  = ActiveMerchant CHANGELOG
2
2
 
3
+ == HEAD
4
+
5
+ == Version 1.66.0 (May 4, 2017)
6
+ * Support Rails 5.1 [jhawthorn] #2407
7
+ * ProPay: Add Canada as supported country [davidsantoso]
8
+ * ProPay: Add gateway support [davidsantoso] #2405
9
+ * SafeCharge: Support credit transactions [shasum] #2404
10
+ * WePay: Add scrub method [shasum] #2406
11
+ * iVeri: Add gateway support [curiousepic] #2400
12
+ * iVeri: Support 3DSecure data fields [davidsantoso] #2412
13
+
14
+ == Version 1.65.0 (April 26, 2017)
15
+ * Adyen: Add Adyen v18 gateway [adyenpayments] #2272
16
+ * Authorize.Net: Force refund of unsettled payments via void [bizla] #2399
17
+ * Barclays ePDQ: removed because it has been replaced by a new API [bdewater] #2331
18
+ * Beanstream: Map ISO province codes for US and CA [shasum] #2396
19
+ * Braintree Blue: Change :full_refund option to :force_full_refund_if_unsettled [bizla] #2403
20
+ * Braintree Blue: Force refund of unsettled payments via void [bizla] #2398
21
+ * Checkout V2: Fix sandbox URL [nicolas-maalouf-cko] #2391
22
+ * Checkout V2: Fix success_from not properly checking two possible success codes [davidsantoso]
23
+ * Cybersource: Rescue XML parse exception [shasum] #2380
24
+ * GlobalCollect: Make message and error reporting more robust [curiousepic] #2370
25
+ * GlobalCollect: Set REJECTED refunds as unsuccessful transactions [davidsantoso] #2365
26
+ * GlobalCollect: Truncate firstName field to 15 characters [davidsantoso]
27
+ * JetPay: Pass down authorization payment method token to refund a capture [davidsantoso]
28
+ * Openpay: Support card points [shasum] #2401
29
+ * Orbital: Don't send CVV indicator if CVV is not present [curiousepic] #2368
30
+ * PayU LATAM: Fix incorrect capture method definition [davidsantoso]
31
+ * Payeezy: Support dynamic soft descriptors [shasum] #2384
32
+ * Pin: Add metadata optional field [shasum] #2363
33
+ * Qvalent: Add soft descriptor fields. Add authorize, capture, and void [davidsantoso]
34
+ * SafeCharge: Add gateway [davidsantoso]
35
+ * SagePay: Support Repeat transactions [curiousepic] #2395
36
+ * Stripe: Support custom application in X-Stripe-Client-User-Agent header [davidsantoso]
37
+ * TransFirst Transaction Express: Support ACH [curiousepic] #2389
38
+ * WePay: Support unique_id for idempotent transactions [shasum] #2367
39
+ * Worldpay: Force refund of unsettled payments via void [bizla] #2402
40
+
41
+ == Version 1.64.0 (March 6, 2017)
42
+ * Authorize.net: Allow settings to be passed for CIM purchases [fwilkins] #2300
43
+ * Authorize.net: Use new `unsupported_feature` standard error code [jasonwebster] #2322
44
+ * Base Gateway: Add new `unsupported_feature` standard error code [jasonwebster] #2322
45
+ * Braintree Blue: Pass cardholder_name with card [curiousepic] #2324
46
+ * Braintree: Add Android Pay meta data fields [jknipp] #2347
47
+ * CardStream: Add additional of currencies [shasum] #2337
48
+ * Credorax: Return failure response reason [shasum] #2341
49
+ * Digitzs: Add gateway [davidsantoso]
50
+ * Digitzs: Remove merchant_id from gateway credentials [davidsantoso]
51
+ * GlobalCollect: Pass options to Refund [curiousepic] #2330
52
+ * Kushki: Add new gateway [shasum] #2326
53
+ * Kushki: Remove body from void call [shasum] #2348
54
+ * Linkpoint: Raise ArgumentError when trying to instantiate without `:pem` [jasonwebster] #2329
55
+ * Omise: Enable Japan, JPY and JCB support [zdk] #2284
56
+ * PayU LATAM: Count pending refunds as succeeded [curiousepic] #2336
57
+ * PayU LATAM: Let Refund take amount value [curiousepic] #2334
58
+ * Paymill: Send new required fields on tokenization requests [tschelabaumann] #2279
59
+ * Revert "Authorize.net: Allow settings to be passed for CIM purchases" [curiousepic] #2339
60
+ * Sage: Default billing state when outside US [shasum] #2340
61
+ * Stripe: Remove idempotency key from verify [shasum] #2335
62
+ * TransFirst Transaction Express: Don't send order_id with refunds [curiousepic] #2350
63
+ * TransFirst Transaction Express: Fix improper AVS and CVV response code mapping [shasum] #2342
64
+ * WePay: Update API version [shasum] #2349
65
+ * USA ePay Advanced: Add quick_update_customer action [joshreeves] #2229
66
+
67
+ == Version 1.63.0 (February 2, 2017)
68
+ * Authorize.net: Add #unstore support [jimryan] #2293
69
+ * AuthorizeNet: Fix line items quirk [shasum]
70
+ * CardStream: Add dynamic descriptor option fields [curiousepic]
71
+ * CardStream: Support PEN currency [shasum]
72
+ * Culqi: Add new gateway [shasum]
73
+ * CyberSource: Add Lebanon to supported countries [shasum]
74
+ * Element: Add AVS and CVV codes to response [shasum]
75
+ * Firstdata E4 (Payeezy): Set correct ECI value for card present swipes [jasonwebster] #2318
76
+ * GlobalCollect: On purchase skip capture if not required [davidsantoso]
77
+ * PaymentExpress: Update supported countries [shasum]
78
+ * Remove leading or trailing whitespace from credit card name [davidsantoso]
79
+ * Remove support for Ruby 2.0 [jasonwebster]
80
+ * Secure Pay AU: Add scrubbing support to Secure Pay AU [bruno] #2253
81
+ * Stripe: Fix error in handling of track-only contactless EMV data [jasonwebster]
82
+ * Vanco: Update test URL [davidsantoso]
83
+ * WePay: Build fee structure correctly [curiousepic]
84
+ * WePay: Remove null address fields from request [davidsantoso]
85
+ * WePay: Update WePay to API version 2016-12-07 [davidsantoso]
86
+ * Wirecard: Send customer data in requests [davidsantoso]
87
+ * Worldpay: Add session id attribute [shasum]
88
+ * Worldpay: Do not default address when not provided [shasum]
89
+
90
+ == Version 1.62.0 (December 5, 2016)
91
+ * AuthorizeNet: Map to standard AVSResult codes [shasum]
92
+ * CitrusPay: Add 3DSecureId field [davidsantoso]
93
+ * CyberSource: Only get alpha2 country code when it's a known country [bruno] #2238
94
+ * Fat Zebra: Add scrubbing to Fat Zebra gateway [bruno] #2037
95
+ * Monei: Add US and CA as new supported countries [davidgf] #2209
96
+ * NAB Transact: Add scrubbing to NAB Transact [bruno] #2038
97
+ * iATS: Add scrubbing support to iATS [bruno] #2228
98
+ * Stripe: Ensure ECI values for tokenized cards are padded [jasonwebster] #2250
99
+ * Forte: Fix incorrect authorization_code response mapping [davidsantoso]
100
+ * maxiPago: Send currency with request [curiousepic]
101
+ * Credorax: Map order_id to field H9 [curiousepic]
102
+ * Authorize.net: Remove duplicate country GB [shasum]
103
+ * PayU Latam: Add processWithoutCvv2 field [shasum]
104
+ * Fat Zebra: De-nest soft descriptor fields [curiousepic]
105
+ * Credorax: Only pass c5 field for billing address1 [davidsantoso]
106
+ * Orbital: Add support for CLP currency [curiousepic]
107
+ * Authorize.net: Add line item fields and additional transaction settings [shasum]
108
+ * Authorize.net: Pass through `header_email_receipt` [shasum]
109
+ * Stripe: Scrub additional network tokenization related sensitive data [jasonwebster] #2251
110
+ * Applying: Worldpay: Format non-fractional currency amounts correctly [jasonwebster] #2267
111
+
112
+ == Version 1.61.0 (November 7, 2016)
113
+ * Add codes AQ, BQ, SX, and SS to list of countries and update SD numeric code [zxlin]
114
+ * AuthorizeNet: Update supported countries list [shasum]
115
+ * Barclay SmartPay: Add support for credit [shasum]
116
+ * Barclaycard SmartPay: Update supported countries [shasum]
117
+ * BluePay: Add Canada to supported countries list [shasum]
118
+ * BlueSnap: Update countries list [shasum]
119
+ * Braintree Blue: Add Android Pay support [mrezentes]
120
+ * Braintree Blue: Add remote test to verify card token [shasum]
121
+ * Braintree Blue: Get Android Pay tx id from payment method, not options [mrezentes]
122
+ * CardStream: Add MXN currency code [curiousepic]
123
+ * CardStream: Set captureDelay to zero on purchase [davidsantoso]
124
+ * CitrusPay: Add gateway [duff]
125
+ * CitrusPay: Update URL to current API version [davidsantoso]
126
+ * Clearhaus: Fix refund of captures [duff]
127
+ * Clearhaus: Update list of non fractal currencies [curiousepic]
128
+ * Clearhaus: Use localized amount [curiouspic]
129
+ * Conekta: Add void action [MauricioMurga]
130
+ * Credorax: Add gateway support [davidsantoso]
131
+ * CyberSource, Paymill, Payflow: Add verify_credentials [duff]
132
+ * CyberSource: Combine auth_reversal with Void [curiousepic]
133
+ * CyberSource: Increase merchant defined data fields [davidsantoso]
134
+ * CyberSource: Look up alpha2 country code [curiousepic]
135
+ * CyberSource: Use localized_amount [curiousepic]
136
+ * Element: Pass order_id and shipping address [curiousepic]
137
+ * Fat Zebra: Add cavv, xid, and sli fields [curiousepic]
138
+ * Fat Zebra: Fix improper descriptor nesting [curiousepic]
139
+ * Find countries if they are differently cased [curiousepic]
140
+ * GlobalCollect: Update credit card brand list [curiousepic]
141
+ * Jetpay: Support endpoint for Canada [shasum]
142
+ * Linkpoint: Clean whitespace from PEM [curiousepic]
143
+ * Litle: Retain amount to send in auth reversals [curiousepic]
144
+ * Litle: add scrubbing support [bruno]
145
+ * MONEI: Update supported countries list [davidgf]
146
+ * MiGS: Handle IDR currency [curiousepic]
147
+ * Migs: Add support for void [mohsenottello]
148
+ * Migs: Support some additional fields [duff]
149
+ * Moneris: Fix unit test stubs [shasum]
150
+ * Moneris: add scrubbing support [bruno]
151
+ * NMI, FirstData: Support verify_credentials [curiousepic]
152
+ * Openpay: Add support for verify [duff]
153
+ * PayJunctionV2: Add gateway support [shasum]
154
+ * PayU Latam: Add new gateway [shasum]
155
+ * PayU Latam: Update supported countries list [shasum]
156
+ * Payflow: Update supported countries list [shasum]
157
+ * PaypalExpress: Add SoftDescriptor field [talyssonoc]
158
+ * Redsys: Added DOP and CRC currency [davidsantoso]
159
+ * Sage: Add support for scrubbing [bruno]
160
+ * SagePay: Fix truncation [duff]
161
+ * SecurionPay: Update supported countries list [shasum]
162
+ * Stripe: Increase authorize amount during verify [davidsantoso]
163
+ * Stripe: Set minimum authorize amount depending on currency [davidsantoso]
164
+ * Stripe: Support new network tokenization API params [methodmissing]
165
+ * Stripe: Update supported countries list [shasum]
166
+ * TNS and CitrusPay: Support scrub and verify_credentials [duff]
167
+ * TNS and CitrusPay: Update to version 36 of the API [duff]
168
+ * TNS: Try TLS v1 [duff]
169
+ * Telr: Add gateway support [curiousepic]
170
+ * TransFirsTransactionExpress: Remove blank cvv element [davidsantoso]
171
+ * TransFirsTransactionExpress: Take into account blank string CVV [davidsantoso]
172
+ * Vanco: Improve handling of success determination [duff]
173
+ * Worldpay: Add hcgAdditionalData element [davidsantoso]
174
+ * Worldpay: Report error code [curiousepic]
175
+
176
+ == Version 1.60.0 (July 4, 2016)
177
+ * Orbital: Fix CC num leak on profile calls [drewblas]
178
+ * VisaNetPeru: Add ability to refund [duff]
179
+ * AuthorizeNet: Fix store using new profile [duff]
180
+ * Clearhaus: Support private key for signature [curiousepic]
181
+ * Clearhaus: Copy private_key when stripping [curiousepic]
182
+ * CertoDirect: Remove gateway [shiroginne]
183
+ * Braintree: Extra error messaging [jordan-brough]
184
+ * AuthorizeNetCim: Set error code for AuthorizeNetCimGateway response [ka8725]
185
+ * Quickpay v10: Remove amount requirement for store [curiousepic]
186
+ * PSLCards: correct namespace in doc for Response object from ActiveRecord::Billing to ActiveMerchant::Billing [CJ Keeney]
187
+ * Pagar.me: Add pagar.me [chrisenytc]
188
+ * Stripe: Update Readme to show stripe support [rhlrjv]
189
+ * Orbital: Add support for the BRL currency [duff]
190
+ * GlobalTransport: Require TLSv1 [duff]
191
+ * Openpay: Allow currency to be specified [darkaz]
192
+ * DataCash: Use API version 2 [curiousepic]
193
+ * Stripe: Support verify_credentials [duff]
194
+ * AuthorizeNet: Support verify_credentials [duff]
195
+ * BraintreeBlue: Support verify_credentials [duff]
196
+ * Redsys: Added SAR currency [agseco]
197
+ * QuickPay: Adding customer_ip for authorize action in quickpay [dinesh]
198
+ * MaxiPago: add void and refund [shasum]
199
+ * MaxiPago: Allow processor_id override [duff]
200
+ * Stripe: Interpret string input to store method as token identifier [bizla]
201
+ * MaxiPago: Add verify and scrub [shasum]
202
+ * Stripe: Remove metadata restriction from EMV transactions [bizla]
203
+ * SagePay: Add optional fields to SagePay requests [cristianstanescu]
204
+ * CyberSource: Assign default with override for billing address and email [shasum]
205
+ * CyberSource: Assign default order_id [duff]
206
+ * TNS: Support asia_pacific endpoint [curiousepic]
207
+ * TransFirsTransactionExpress: Fix exception [duff]
208
+ * CyberSource: Add decision manager optional fields [shasum]
209
+ * CyberSource: Add decision manager optional fields [shasum]
210
+ * TNS: Add support for TLS v1.2 [curiousepic]
211
+ * QuickpayV7: Default description field for store operation [duff]
212
+ * Elavon: Support customer_number field [duff]
213
+ * Map test_mode_live_card code to new standard error code [berkcaputcu]
214
+ * Elavon: Pass customer_number correctly [duff]
215
+ * Stripe: add SG to supported_countries attribute [timbeiko]
216
+
217
+ == Version 1.59.0 (May 18, 2016)
218
+ * Orbital: Allow AVS parts to be sent sans country [duff]
219
+ * SecureNet: Return the right error message for declines [duff]
220
+ * Moneris: Add verify [anellis]
221
+ * Moneris: Add verify [anellis]
222
+ * Jetpay: Add support for origin field[anellis]
223
+ * Jetpay: Don't default origin field [duff]
224
+ * GlobalCollect: New gateway support [curiousepic]
225
+ * Openpay: Use strict_encode64 [duff]
226
+ * Sage: Always pass along the billing state [duff]
227
+ * VisaNet Peru: New gateway support [shasum]
228
+ * Worldpay: Allow installationId to be specified at transaction time [duff]
229
+ * SecurionPay: Support store [shasum]
230
+ * Barclaycard Smartpay: Proper AVS return codes [curiousepic]
231
+ * VisaNetPeru: Pass through CVV [duff]
232
+ * Barclaycard Smartpay: Use strict_encode64 [duff]
233
+ * VisaNetPeru: Fix error when billing address empty [shasum]
234
+ * Vanco: Update live_url [duff]
235
+ * Cardstream: Reference purchase [curiousepic]
236
+ * Paymill: Fix error handling [methodmissing]
237
+ * Latitude19: New gateway support [shasum]
238
+ * BraintreeBlue: remove invalid test assertions [prburke]
239
+ * Merchant e-Solutions: Pass order_id with capture [curiousepic]
240
+ * CyberSource: Add rescue for ResponseErrors [curiousepic]
241
+ * AuthorizeNet: Always pass recurringBilling flag if present [curiousepic]
242
+ * S5: Pass order_id to TransactionID [curiousepic]
243
+ * NMI: Set ACH sec_code from options if present [curiousepic]
244
+ * VisaNet Peru: Refactor merchant_id and purchase_number handling [shasum]
245
+ * Braintree Blue: Pass descriptor_url field [curiousepic]
246
+ * VisaNet Peru: Add merchant_define_data option [duff]
247
+ * Merchant e-Solutions: pass optional 3Dsecure params [curiousepic]
248
+ * NMI: Fix refunds and voids of echecks [duff]
249
+ * VisaNet Peru: Pass dummy email when not present [curiousepic]
250
+ * PayU India: Add Maestro as supported card [curiousepic]
251
+ * Cashnet: Don't retry [duff]
252
+ * CardStream: Make Void call Cancel instead of Refund [curiousepic]
253
+ * Remove AN and KV country codes as they're not recognized by ISO-3166-1 [apdunston]
254
+ * Worldpay: Pass unchanged amount with correct currency exponent [curiousepic]
255
+ * Improve our handling of currencies sans fractions [duff]
256
+ * Stripe: Added support for the contactless magstripe entry mode option [rbalsdon]
257
+ * VisaNet Peru: Change money format to dollars [shasum]
258
+ * BlueSnap: Add gateway [duff]
259
+ * VisaNet Peru: Select the most meaningful gateway error message [shasum]
260
+ * SecurionPay: Update country list [duff]
261
+ * Support for BIN 2 MasterCard brand detection [rbalsdon]
262
+ * CardStream: Fix signature calculation [duff]
263
+ * CyberSource: Update test and live URL [marquisong]
264
+ * AuthorizeNet: Truncate nameOnAccount field [duff]
265
+ * Tns: Fix ipAddress field [duff]
266
+ * WorldNet: New gateway support [varyonic]
267
+ * BraintreeBlue: Allow channel override [duff]
268
+ * MerchantWarrior: Use Truncated Order Id [ThereExistsX]
269
+
270
+
271
+ == Version 1.58.0 (March 1, 2016)
272
+ * Move Electron check out of CreditCard into CreditCardMethods [ThereExistsX]
273
+ * CardStream: Add AED and NZD currencies [sdball]
274
+ * App55: Remove Gateway [ThereExistsX]
275
+ * Mercury: Stripping the start and end sentinels on card-present track data for max-length track1 requests [ryanbalsdon]
276
+ * SagePay: Update VISA Electron ranges [sdball]
277
+ * Clearhaus: Make request signing more transparent & robust [sdball]
278
+ * NCRSecurePay: Fix production URL [rwdaigle]
279
+ * Add ACH support to Stripe [sdball]
280
+ * PayPal Express: Fixing list of currencies without fractions [Krystosterone]
281
+ * Cashnet: Default custcode option and proper redirect handling [rwdaigle]
282
+ * TransFirst: Fix missing address and remove CC only fields for ACH [davidsantoso]
283
+ * More prominent links to contribution docs [rwdaigle]
284
+
285
+
286
+ == Version 1.57.0 (February 1, 2016)
287
+ * AuthorizeNetCim: Add unmaskExpirationDate option [RamilGilmanov]
288
+ * Element: Add gateway support [davidsantoso]
289
+ * Cardstream: 3D-secure capture fix [duff]
290
+ * Auth.net: Update store to create payment profiles [davidsantoso]
291
+ * CyberSource: Add support for mdd_fields [duff]
292
+ * Worldpay: Add support for verify [davidsantoso]
293
+ * Element: Add guard clause to handle undocumented errors [davidsantoso]
294
+ * Clearhaus: Add tests for signed requests [anellis]
295
+ * Stripe: Support adding cards to account [anellis]
296
+ * Clearhaus: Add text_on_statement option [anellis]
297
+ * Payeezy: Void and verify support [davidsantoso]
298
+ * Creditcall: Use ecommerce rather than cnp [duff]
299
+ * Payeezy: Add support for echecks [davidsantoso]
300
+ * Bridgepay: Add ability to store cards and pay with token [anellis]
301
+ * Initial support for Android Pay network tokenization cards [mrezentes]
302
+ * Transfirst: Fix exception when not all eCheck information is present [davidsantoso]
303
+ * Auth.net: Add tests for echeck refunds [davidsantoso]
304
+ * Transfirst: use default values for some eCheck data [davidsantoso]
305
+ * Element: Update the live URL endpoint [davidsantoso]
306
+ * Element: Parse responses from unexpected API errors [davidsantoso]
307
+ * Transfirst: Remove unused fields for echeck [davidsantoso]
308
+ * Sage: Internal refactoring into a single gateway class w/ common http conn [anellis]
309
+ * Cardstream: Adjust authorize and capture transactions [anellis]
310
+ * NCRSecurePay: New gateway support (Monetra white-label) [rwdaigle]
311
+ * Element: Map ReferenceNumber to order_id [duff]
312
+ * Element: Use a better MotoECICode default [duff]
313
+ * BraintreeBlue: Return transaction id for failed transactions when available [prburke]
314
+ * PayPal: Add InContextPaypalExpressGateway [xuorig]
315
+ * TransFirst: CVV is a required tag [duff]
316
+ * Checkout V2: Add Descriptor Name and City Options [anellis]
317
+ * Forte: Pass order_id [anellis]
318
+ * Merchant ESolutioins: Truncate order_id [anellis]
319
+ * Transfirst Transaction Express: New gateway support [sdball]
320
+ * Stripe: Add `stripe_account` header option [anellis]
321
+ * Cardstream: Add AVS code and message [anellis]
322
+ * Barclaycard Smartpay: New gateway support [curiousepic]
323
+ * Transfirst: Fix missing address and remove CC only fields for ACH [davidsantoso]
324
+ * Stripe: Support ACH payments [sdball]
325
+ * NCRSecurePay: Fix production URL [rwdaigle]
326
+ * Clearhaus: Make request signing more transparent & robust [sdball]
327
+ * SagePay: Properly detect Electron brand [sdball]
328
+ * Mercury: Fix for max-length track 1 [ryanbalsdon]
329
+
330
+
3
331
  == Version 1.56.0 (December 1, 2015)
4
332
  * Add Cardknox gateway [dlehren]
5
333
  * Mercury: Add support for card present track 2 [ryanbalsdon]
@@ -201,6 +529,9 @@
201
529
  * Paystation: No longer require order_id everywhere [duff]
202
530
  * Checkout: Support descriptor_name and descriptor_city [duff]
203
531
  * Add supports_network_tokenization? to gateways [jnormore]
532
+ * Bpoint: Handle message for invalid login [anellis]
533
+ * TransFirst: Add scrubbing [davidsantoso]
534
+ * TransFirst: Add back a few request fields [davidsantoso]
204
535
 
205
536
 
206
537
  == Version 1.50.0 (June 1, 2015)
data/README.md CHANGED
@@ -17,6 +17,8 @@ from an ever-growing set of contributors.
17
17
  See [GettingStarted.md](GettingStarted.md) if you want to learn more about using Active Merchant in your
18
18
  applications.
19
19
 
20
+ If you'd like to contribute to Active Merchant, please start with our [contribution guide](CONTRIBUTING.md).
21
+
20
22
  ## Installation
21
23
 
22
24
  ### From Git
@@ -82,7 +84,6 @@ For more in-depth documentation and tutorials, see [GettingStarted.md](GettingSt
82
84
 
83
85
  The [ActiveMerchant Wiki](http://github.com/activemerchant/active_merchant/wikis) contains a [table of features supported by each gateway](http://github.com/activemerchant/active_merchant/wikis/gatewayfeaturematrix).
84
86
 
85
- * [App55](https://www.app55.com/) - AU, BR, CA, CH, CL, CN, CO, CZ, DK, EU, GB, HK, HU, ID, IS, JP, KE, KR, MX, MY, NO, NZ, PH, PL, TH, TW, US, VN, ZA
86
87
  * [Authorize.Net CIM](http://www.authorize.net/) - US
87
88
  * [Authorize.Net](http://www.authorize.net/) - AD, AT, AU, BE, BG, CA, CH, CY, CZ, DE, DK, ES, FI, FR, GB, GB, GI, GR, HU, IE, IT, LI, LU, MC, MT, NL, NO, PL, PT, RO, SE, SI, SK, SM, TR, US, VA
88
89
  * [Axcess MS](http://www.axcessms.com/) - AD, AT, BE, BG, BR, CA, CH, CY, CZ, DE, DK, EE, ES, FI, FO, FR, GB, GI, GR, HR, HU, IE, IL, IM, IS, IT, LI, LT, LU, LV, MC, MT, MX, NL, NO, PL, PT, RO, RU, SE, SI, SK, TR, US, VA
@@ -90,12 +91,11 @@ The [ActiveMerchant Wiki](http://github.com/activemerchant/active_merchant/wikis
90
91
  * [Bank Frick](http://www.bankfrickacquiring.com/) - LI, US
91
92
  * [Banwire](http://www.banwire.com/) - MX
92
93
  * [Barclays ePDQ Extra Plus](http://www.barclaycard.co.uk/business/accepting-payments/epdq-ecomm/) - GB
93
- * [Barclays ePDQ MPI](http://www.barclaycard.co.uk/business/accepting-payments/epdq-mpi/) - GB
94
94
  * [Be2Bill](http://www.be2bill.com/) - FR
95
95
  * [Beanstream.com](http://www.beanstream.com/) - CA, US
96
96
  * [BluePay](http://www.bluepay.com/) - US
97
97
  * [Borgun](https://www.borgun.is/) - IS
98
- * [Braintree](http://www.braintreepaymentsolutions.com) - US, CA, AU, AD, AT, BE, BG, CY, CZ, DK, EE, FI, FR, GI, DE, GR, HU, IS, IM, IE, IT, LV, LI, LT, LU, MT, MC, NL, NO, PL, PT, RO, SM, SK, SI, ES, SE, CH, TR, GB
98
+ * [Braintree](https://www.braintreepayments.com) - US, CA, AU, AD, AT, BE, BG, CY, CZ, DK, EE, FI, FR, GI, DE, GR, HU, IS, IM, IE, IT, LV, LI, LT, LU, MT, MC, NL, NO, PL, PT, RO, SM, SK, SI, ES, SE, CH, TR, GB
99
99
  * [BridgePay](http://www.bridgepaynetwork.com/) - CA, US
100
100
  * [Cardknox](https://www.cardknox.com/) - US, CA, GB
101
101
  * [CardSave](http://www.cardsave.net/) - GB
@@ -104,7 +104,6 @@ The [ActiveMerchant Wiki](http://github.com/activemerchant/active_merchant/wikis
104
104
  * [Cecabank](http://www.ceca.es/es/) - ES
105
105
  * [Cenpos](https://www.cenpos.com/) - AD, AI, AG, AR, AU, AT, BS, BB, BE, BZ, BM, BR, BN, BG, CA, HR, CY, CZ, DK, DM, EE, FI, FR, DE, GR, GD, GY, HK, HU, IS, IN, IL, IT, JP, LV, LI, LT, LU, MY, MT, MX, MC, MS, NL, PA, PL, PT, KN, LC, MF, VC, SM, SG, SK, SI, ZA, ES, SR, SE, CH, TR, GB, US, UY
106
106
  * [CAMS: Central Account Management System](https://www.centralams.com/) - US
107
- * [CertoDirect](http://www.certodirect.com/) - BE, BG, CZ, DK, DE, EE, IE, EL, ES, FR, IT, CY, LV, LT, LU, HU, MT, NL, AT, PL, PT, RO, SI, SK, FI, SE, GB
108
107
  * [Checkout.com](https://www.checkout.com/) - AT, BE, BG, CY, CZ, DE, DK, EE, ES, FI, FR, GR, HR, HU, IE, IS, IT, LI, LT, LU, LV, MT, MU, NL, NO, PL, PT, RO, SE, SI, SK, US
109
108
  * [Clearhaus](https://www.clearhaus.com) - AD, AT, BE, BG, CH, CY, CZ, DE, DK, EE, ES, FI, FO, FR, GB, GL, GR, HR, HU, IE, IS, IT, LI, LT, LU, LV, MT, NL, NO, PL, PT, RO, SE, SI, SK
110
109
  * [Commercegate](http://www.commercegate.com/) - AD, AT, AX, BE, BG, CH, CY, CZ, DE, DK, ES, FI, FR, GB, GG, GI, GR, HR, HU, IE, IM, IS, IT, JE, LI, LT, LU, LV, MC, MT, NL, NO, PL, PT, RO, SE, SI, SK, VA
@@ -150,7 +149,7 @@ The [ActiveMerchant Wiki](http://github.com/activemerchant/active_merchant/wikis
150
149
  * [Metrics Global](http://www.metricsglobal.com) - US
151
150
  * [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
152
151
  * [Modern Payments](http://www.modpay.com) - US
153
- * [MONEI](http://www.monei.net/) - ES
152
+ * [MONEI](http://www.monei.net/) - AD, AT, BE, BG, CA, CH, CY, CZ, DE, DK, EE, ES, FI, FO, FR, GB, GI, GR, HU, IE, IL, IS, IT, LI, LT, LU, LV, MT, NL, NO, PL, PT, RO, SE, SI, SK, TR, US, VA
154
153
  * [Moneris](http://www.moneris.com/) - CA
155
154
  * [Moneris (US)](http://www.monerisusa.com/) - US
156
155
  * [MoneyMovers](http://mmoa.us/) - US
@@ -162,10 +161,11 @@ The [ActiveMerchant Wiki](http://github.com/activemerchant/active_merchant/wikis
162
161
  * [NETPAY Gateway](http://www.netpay.com.mx) - MX
163
162
  * [NMI](http://nmi.com/) - US
164
163
  * [Ogone](http://www.ogone.com/) - BE, DE, FR, NL, AT, CH
165
- * [Omise](https://www.omise.co/) - TH
164
+ * [Omise](https://www.omise.co/) - TH, JP
166
165
  * [Openpay](Openpay) - MX
167
166
  * [Optimal Payments](http://www.optimalpayments.com/) - CA, US, GB
168
167
  * [Orbital Paymentech](http://chasepaymentech.com/) - US, CA
168
+ * [Pagar.me](https://pagar.me/) - BR
169
169
  * [PagoFacil](http://www.pagofacil.net/) - MX
170
170
  * [PayConex](http://www.bluefincommerce.com/) - US, CA
171
171
  * [PayGate PayXML](http://paygate.co.za/) - US, ZA
@@ -207,11 +207,11 @@ The [ActiveMerchant Wiki](http://github.com/activemerchant/active_merchant/wikis
207
207
  * [SecureNet](http://www.securenet.com/) - US
208
208
  * [SecurePay](http://www.securepay.com/) - US, CA, GB, AU
209
209
  * [SecurePayTech](http://www.securepaytech.com/) - NZ
210
- * [SecurionPay](https://securionpay.com/) - AD, AE, AF, AG, AI, AL, AM, AN, AO, AR, AS, AT, AU, AW, AX, AZ, BA, BB, BD, BE, BF, BG, BH, BI, BJ, BL, BM, BN, BO, BR, BS, BT, BV, BW, BY, BZ, CA, CC, CD, CF, CG, CH, CI, CK, CL, CM, CN, CO, CR, CU, CV, CW, CX, CY, CZ, DE, DJ, DK, DM, DO, DZ, EC, EE, EG, EH, ER, ES, ET, FI, FJ, FK, FM, FO, FR, GA, GB, GD, GE, GF, GG, GH, GI, GL, GM, GN, GP, GQ, GR, GS, GT, GU, GW, GY, HK, HM, HN, HR, HT, HU, ID, IE, IL, IM, IN, IO, IQ, IR, IS, IT, JE, JM, JO, JP, KE, KG, KH, KI, KM, KN, KP, KR, KV, KW, KY, KZ, LA, LB, LC, LI, LK, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MF, MG, MH, MK, ML, MM, MN, MO, MP, MQ, MR, MS, MT, MU, MV, MW, MX, MY, MZ, NA, NC, NE, NF, NG, NI, NL, NO, NP, NR, NU, NZ, OM, PA, PE, PF, PG, PH, PK, PL, PM, PN, PR, PS, PT, PW, PY, QA, RE, RO, RS, RU, RW, SA, SB, SC, SD, SE, SG, SH, SI, SJ, SK, SL, SM, SN, SO, SR, ST, SV, SY, SZ, TC, TD, TF, TG, TH, TJ, TK, TL, TM, TN, TO, TR, TT, TV, TW, TZ, UA, UG, UM, US, UY, UZ, VA, VC, VE, VG, VI, VN, VU, WF, WS, YE, YT, ZA, ZM, ZW
210
+ * [SecurionPay](https://securionpay.com/) - AD, AE, AF, AG, AI, AL, AM, AO, AR, AS, AT, AU, AW, AX, AZ, BA, BB, BD, BE, BF, BG, BH, BI, BJ, BL, BM, BN, BO, BR, BS, BT, BV, BW, BY, BZ, CA, CC, CD, CF, CG, CH, CI, CK, CL, CM, CN, CO, CR, CU, CV, CW, CX, CY, CZ, DE, DJ, DK, DM, DO, DZ, EC, EE, EG, EH, ER, ES, ET, FI, FJ, FK, FM, FO, FR, GA, GB, GD, GE, GF, GG, GH, GI, GL, GM, GN, GP, GQ, GR, GS, GT, GU, GW, GY, HK, HM, HN, HR, HT, HU, ID, IE, IL, IM, IN, IO, IQ, IR, IS, IT, JE, JM, JO, JP, KE, KG, KH, KI, KM, KN, KP, KR, KW, KY, KZ, LA, LB, LC, LI, LK, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MF, MG, MH, MK, ML, MM, MN, MO, MP, MQ, MR, MS, MT, MU, MV, MW, MX, MY, MZ, NA, NC, NE, NF, NG, NI, NL, NO, NP, NR, NU, NZ, OM, PA, PE, PF, PG, PH, PK, PL, PM, PN, PR, PS, PT, PW, PY, QA, RE, RO, RS, RU, RW, SA, SB, SC, SD, SE, SG, SH, SI, SJ, SK, SL, SM, SN, SO, SR, ST, SV, SY, SZ, TC, TD, TF, TG, TH, TJ, TK, TL, TM, TN, TO, TR, TT, TV, TW, TZ, UA, UG, UM, US, UY, UZ, VA, VC, VE, VG, VI, VN, VU, WF, WS, YE, YT, ZA, ZM, ZW
211
211
  * [SkipJack](http://www.skipjack.com/) - US, CA
212
212
  * [SoEasyPay](http://www.soeasypay.com/) - US, CA, AT, BE, BG, HR, CY, CZ, DK, EE, FI, FR, DE, GR, HU, IE, IT, LV, LT, LU, MT, NL, PL, PT, RO, SK, SI, ES, SE, GB, IS, NO, CH
213
213
  * [Spreedly](https://spreedly.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
214
- * [Stripe](https://stripe.com/) - AT, AU, BE, CA, CH, DE, DK, ES, FI, FR, GB, IE, IT, LU, NL, NO, SE, US
214
+ * [Stripe](https://stripe.com/) - AT, AU, BE, CA, CH, DE, DK, ES, FI, FR, GB, IE, IT, LU, NL, NO, SE, SG, US
215
215
  * [Swipe](https://www.swipehq.com/checkout) - CA, NZ
216
216
  * [TNS](http://www.tnsi.com/) - AR, AU, BR, FR, DE, HK, MX, NZ, SG, GB, US
217
217
  * [Transact Pro](https://www.transactpro.lv/business/online-payments-acceptance) - US
@@ -226,7 +226,7 @@ The [ActiveMerchant Wiki](http://github.com/activemerchant/active_merchant/wikis
226
226
  * [WePay](https://www.wepay.com/) - US
227
227
  * [Wirecard](http://www.wirecard.com) - AD, CY, GI, IM, MT, RO, CH, AT, DK, GR, IT, MC, SM, TR, BE, EE, HU, LV, NL, SK, GB, BG, FI, IS, LI, NO, SI, VA, FR, IL, LT, PL, ES, CZ, DE, IE, LU, PT, SE
228
228
  * [Worldpay Global](http://www.worldpay.com/) - HK, 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
229
- * [Worlpay Online](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
229
+ * [Worldpay Online](https://online.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
230
230
  * [Worldpay US](http://www.worldpay.com/us) - US
231
231
 
232
232
  ## API stability policy
@@ -50,6 +50,9 @@ module ActiveMerchant #:nodoc:
50
50
  'check'
51
51
  end
52
52
 
53
+ def credit_card?
54
+ false
55
+ end
53
56
  # Routing numbers may be validated by calculating a checksum and dividing it by 10. The
54
57
  # formula is:
55
58
  # (3(d1 + d4 + d7) + 7(d2 + d5 + d8) + 1(d3 + d6 + d9))mod 10 = 0
@@ -182,10 +182,15 @@ module ActiveMerchant #:nodoc:
182
182
  # @return [String]
183
183
  attr_accessor :fallback_reason
184
184
 
185
- # Returns or sets whether card-present card data has been read contactlessly.
185
+ # Returns or sets whether card-present EMV data has been read contactlessly.
186
186
  #
187
187
  # @return [true, false]
188
- attr_accessor :contactless
188
+ attr_accessor :contactless_emv
189
+
190
+ # Returns or sets whether card-present magstripe data has been read contactlessly.
191
+ #
192
+ # @return [true, false]
193
+ attr_accessor :contactless_magstripe
189
194
 
190
195
  # Returns the ciphertext of the card's encrypted PIN.
191
196
  #
@@ -240,7 +245,7 @@ module ActiveMerchant #:nodoc:
240
245
  #
241
246
  # @return [String] the full name of the card holder
242
247
  def name
243
- [first_name, last_name].compact.join(' ')
248
+ "#{first_name} #{last_name}".strip
244
249
  end
245
250
 
246
251
  def name=(full_name)
@@ -4,7 +4,7 @@ module ActiveMerchant #:nodoc:
4
4
  module CreditCardMethods
5
5
  CARD_COMPANIES = {
6
6
  'visa' => /^4\d{12}(\d{3})?(\d{3})?$/,
7
- 'master' => /^(5[1-5]\d{4}|677189)\d{10}$/,
7
+ 'master' => /^(5[1-5]\d{4}|677189|222[1-9]\d{2}|22[3-9]\d{3}|2[3-6]\d{4}|27[01]\d{3}|2720\d{2})\d{10}$/,
8
8
  'discover' => /^(6011|65\d{2}|64[4-9]\d)\d{12}|(62\d{14})$/,
9
9
  'american_express' => /^3[47]\d{13}$/,
10
10
  'diners_club' => /^3(0[0-5]|[68]\d)\d{11}$/,
@@ -17,6 +17,26 @@ module ActiveMerchant #:nodoc:
17
17
  'laser' => /^(6304|6706|6709|6771(?!89))\d{8}(\d{4}|\d{6,7})?$/
18
18
  }
19
19
 
20
+ # http://www.barclaycard.co.uk/business/files/bin_rules.pdf
21
+ ELECTRON_RANGES = [
22
+ [400115],
23
+ (400837..400839),
24
+ (412921..412923),
25
+ [417935],
26
+ (419740..419741),
27
+ (419773..419775),
28
+ [424519],
29
+ (424962..424963),
30
+ [437860],
31
+ [444000],
32
+ [459472],
33
+ (484406..484411),
34
+ (484413..484414),
35
+ (484418..484418),
36
+ (484428..484455),
37
+ (491730..491759),
38
+ ]
39
+
20
40
  def self.included(base)
21
41
  base.extend(ClassMethods)
22
42
  end
@@ -25,6 +45,10 @@ module ActiveMerchant #:nodoc:
25
45
  (1..12).include?(month.to_i)
26
46
  end
27
47
 
48
+ def credit_card?
49
+ true
50
+ end
51
+
28
52
  def valid_expiry_year?(year)
29
53
  (Time.now.year..Time.now.year + 20).include?(year.to_i)
30
54
  end
@@ -58,6 +82,11 @@ module ActiveMerchant #:nodoc:
58
82
  (number.to_s =~ /^\d{1,2}$/)
59
83
  end
60
84
 
85
+ # Returns if the card matches known Electron BINs
86
+ def electron?
87
+ self.class.electron?(number)
88
+ end
89
+
61
90
  module ClassMethods
62
91
  # Returns true if it validates. Optionally, you can pass a card brand as an argument and
63
92
  # make sure it is of the correct brand.
@@ -106,6 +135,17 @@ module ActiveMerchant #:nodoc:
106
135
  return nil
107
136
  end
108
137
 
138
+ def electron?(number)
139
+ return false unless [16, 19].include?(number.length)
140
+
141
+ # don't recalculate for each range
142
+ bank_identification_number = first_digits(number).to_i
143
+
144
+ ELECTRON_RANGES.any? do |range|
145
+ range.include?(bank_identification_number)
146
+ end
147
+ end
148
+
109
149
  def type?(number)
110
150
  ActiveMerchant.deprecated "CreditCard#type? is deprecated and will be removed from a future release of ActiveMerchant. Please use CreditCard#brand? instead."
111
151
  brand?(number)
@@ -57,7 +57,6 @@ module ActiveMerchant #:nodoc:
57
57
  include CreditCardFormatting
58
58
 
59
59
  DEBIT_CARDS = [ :switch, :solo ]
60
- CURRENCIES_WITHOUT_FRACTIONS = %w(BIF BYR CLP CVE DJF GNF HUF ISK JPY KMF KRW PYG RWF UGX VND VUV XAF XOF XPF)
61
60
 
62
61
  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."
63
62
  RECURRING_DEPRECATION_MESSAGE = "Recurring functionality in ActiveMerchant is deprecated and will be removed in a future version. Please contact the ActiveMerchant maintainers if you have an interest in taking ownership of a separate gem that continues support for it."
@@ -66,10 +65,10 @@ module ActiveMerchant #:nodoc:
66
65
  #
67
66
  # :incorrect_number - Card number does not comply with ISO/IEC 7812 numbering standard
68
67
  # :invalid_number - Card number was not matched by processor
69
- # :invalid_expiry_date - Expiry date deos not match correct formatting
68
+ # :invalid_expiry_date - Expiry date does not match correct formatting
70
69
  # :invalid_cvc - Security codes does not match correct format (3-4 digits)
71
70
  # :expired_card - Card number is expired
72
- # :incorrect_cvc - Secerity code was not matched by the processor
71
+ # :incorrect_cvc - Security code was not matched by the processor
73
72
  # :incorrect_zip - Zip code is not in correct format
74
73
  # :incorrect_address - Billing address info was not matched by the processor
75
74
  # :incorrect_pin - Card PIN is incorrect
@@ -77,6 +76,10 @@ module ActiveMerchant #:nodoc:
77
76
  # :processing_error - Processor error
78
77
  # :call_issuer - Transaction requires voice authentication, call issuer
79
78
  # :pickup_card - Issuer requests that you pickup the card from merchant
79
+ # :test_mode_live_card - Card was declined. Request was in test mode, but used a non test card.
80
+ # :unsupported_feature - Transaction failed due to gateway or merchant
81
+ # configuration not supporting a feature used, such
82
+ # as network tokenization.
80
83
 
81
84
  STANDARD_ERROR_CODE = {
82
85
  :incorrect_number => 'incorrect_number',
@@ -92,7 +95,9 @@ module ActiveMerchant #:nodoc:
92
95
  :processing_error => 'processing_error',
93
96
  :call_issuer => 'call_issuer',
94
97
  :pickup_card => 'pick_up_card',
95
- :config_error => 'config_error'
98
+ :config_error => 'config_error',
99
+ :test_mode_live_card => 'test_mode_live_card',
100
+ :unsupported_feature => 'unsupported_feature',
96
101
  }
97
102
 
98
103
  cattr_reader :implementations
@@ -120,6 +125,9 @@ module ActiveMerchant #:nodoc:
120
125
  class_attribute :supported_cardtypes
121
126
  self.supported_cardtypes = []
122
127
 
128
+ class_attribute :currencies_without_fractions
129
+ self.currencies_without_fractions = %w(BIF BYR CLP CVE DJF GNF HUF ISK JPY KMF KRW PYG RWF UGX VND VUV XAF XOF XPF)
130
+
123
131
  class_attribute :homepage_url
124
132
  class_attribute :display_name
125
133
 
@@ -132,7 +140,7 @@ module ActiveMerchant #:nodoc:
132
140
  # The application making the calls to the gateway
133
141
  # Useful for things like the PayPal build notation (BN) id fields
134
142
  class_attribute :application_id, instance_writer: false
135
- self.application_id = 'ActiveMerchant'
143
+ self.application_id = nil
136
144
 
137
145
  attr_reader :options
138
146
 
@@ -252,7 +260,7 @@ module ActiveMerchant #:nodoc:
252
260
  end
253
261
 
254
262
  def non_fractional_currency?(currency)
255
- CURRENCIES_WITHOUT_FRACTIONS.include?(currency.to_s)
263
+ self.currencies_without_fractions.include?(currency.to_s)
256
264
  end
257
265
 
258
266
  def localized_amount(money, currency)