active_merchant_first_data 1.0.0 → 1.1.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/README.md +8 -6
- data/lib/active_merchant/billing/first_data_gateway.rb +182 -33
- metadata +63 -34
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
First Data gateway for Active Merchant
|
2
|
-
|
1
|
+
First Data Latvia gateway for Active Merchant
|
2
|
+
=============================================
|
3
3
|
|
4
4
|
[](http://travis-ci.org/ebeigarts/active_merchant_first_data)
|
5
5
|
|
@@ -32,14 +32,16 @@ require "active_merchant_first_data"
|
|
32
32
|
|
33
33
|
3. Copy the 3 files you received in e-mail to `spec/certs/`:
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
|
35
|
+
```
|
36
|
+
1234567.pem
|
37
|
+
1234567_certificate_chain.p7.pem
|
38
|
+
ECOMM.pem
|
39
|
+
```
|
38
40
|
|
39
41
|
4. Convert the certificates and keys to `1234567_keystore.pem`
|
40
42
|
|
41
43
|
```bash
|
42
|
-
$ openssl pkcs12 -export -in 1234567.pem -out spec/certs/1234567_keystore.p12 -certfile spec/certs/ECOMM.pem -inkey spec/certs/1234567_key.pem
|
44
|
+
$ openssl pkcs12 -export -in spec/certs/1234567.pem -out spec/certs/1234567_keystore.p12 -certfile spec/certs/ECOMM.pem -inkey spec/certs/1234567_key.pem
|
43
45
|
Enter pass phrase for 1234567_key.pem: 81f174259v45
|
44
46
|
Enter Export Password: <empty>
|
45
47
|
```
|
@@ -18,15 +18,60 @@ module ActiveMerchant #:nodoc:
|
|
18
18
|
self.default_currency = '428' # LVL (http://en.wikipedia.org/wiki/ISO_4217)
|
19
19
|
self.money_format = :cents
|
20
20
|
|
21
|
+
CURRENCY_CODES = {
|
22
|
+
'ADP' => '020', 'AED' => '784', 'AFA' => '004', 'ALL' => '008', 'AMD' => '051',
|
23
|
+
'ANG' => '532', 'AOA' => '973', 'ARS' => '032', 'AUD' => '036', 'AWG' => '533',
|
24
|
+
'AZM' => '031', 'BAM' => '977', 'BBD' => '052', 'BDT' => '050', 'BGL' => '100',
|
25
|
+
'BGN' => '975', 'BHD' => '048', 'BIF' => '108', 'BMD' => '060', 'BND' => '096',
|
26
|
+
'BOB' => '068', 'BOV' => '984', 'BRL' => '986', 'BSD' => '044', 'BTN' => '064',
|
27
|
+
'BWP' => '072', 'BYR' => '974', 'BZD' => '084', 'CAD' => '124', 'CDF' => '976',
|
28
|
+
'CHF' => '756', 'CLF' => '990', 'CLP' => '152', 'CNY' => '156', 'COP' => '170',
|
29
|
+
'CRC' => '188', 'CUP' => '192', 'CVE' => '132', 'CYP' => '196', 'CZK' => '203',
|
30
|
+
'DJF' => '262', 'DKK' => '208', 'DOP' => '214', 'DZD' => '012', 'ECS' => '218',
|
31
|
+
'ECV' => '983', 'EEK' => '233', 'EGP' => '818', 'ERN' => '232', 'ETB' => '230',
|
32
|
+
'EUR' => '978', 'FJD' => '242', 'FKP' => '238', 'GBP' => '826', 'GEL' => '981',
|
33
|
+
'GHC' => '288', 'GIP' => '292', 'GMD' => '270', 'GNF' => '324', 'GTQ' => '320',
|
34
|
+
'GWP' => '624', 'GYD' => '328', 'HKD' => '344', 'HNL' => '340', 'HRK' => '191',
|
35
|
+
'HTG' => '332', 'HUF' => '348', 'IDR' => '360', 'ILS' => '376', 'INR' => '356',
|
36
|
+
'IQD' => '368', 'IRR' => '364', 'ISK' => '352', 'JMD' => '388', 'JOD' => '400',
|
37
|
+
'JPY' => '392', 'KES' => '404', 'KGS' => '417', 'KHR' => '116', 'KMF' => '174',
|
38
|
+
'KPW' => '408', 'KRW' => '410', 'KWD' => '414', 'KYD' => '136', 'KZT' => '398',
|
39
|
+
'LAK' => '418', 'LBP' => '422', 'LKR' => '144', 'LRD' => '430', 'LSL' => '426',
|
40
|
+
'LTL' => '440', 'LVL' => '428', 'LYD' => '434', 'MAD' => '504', 'MDL' => '498',
|
41
|
+
'MGF' => '450', 'MKD' => '807', 'MMK' => '104', 'MNT' => '496', 'MOP' => '446',
|
42
|
+
'MRO' => '478', 'MTL' => '470', 'MUR' => '480', 'MVR' => '462', 'MWK' => '454',
|
43
|
+
'MXN' => '484', 'MXV' => '979', 'MYR' => '458', 'MZM' => '508', 'NAD' => '516',
|
44
|
+
'NGN' => '566', 'NIO' => '558', 'NOK' => '578', 'NPR' => '524', 'NZD' => '554',
|
45
|
+
'OMR' => '512', 'PAB' => '590', 'PEN' => '604', 'PGK' => '598', 'PHP' => '608',
|
46
|
+
'PKR' => '586', 'PLN' => '985', 'PYG' => '600', 'QAR' => '634', 'ROL' => '642',
|
47
|
+
'RUB' => '643', 'RUR' => '810', 'RWF' => '646', 'SAR' => '682', 'SBD' => '090',
|
48
|
+
'SCR' => '690', 'SDD' => '736', 'SEK' => '752', 'SGD' => '702', 'SHP' => '654',
|
49
|
+
'SIT' => '705', 'SKK' => '703', 'SLL' => '694', 'SOS' => '706', 'SRG' => '740',
|
50
|
+
'STD' => '678', 'SVC' => '222', 'SYP' => '760', 'SZL' => '748', 'THB' => '764',
|
51
|
+
'TJS' => '972', 'TMM' => '795', 'TND' => '788', 'TOP' => '776', 'TPE' => '626',
|
52
|
+
'TRL' => '792', 'TRY' => '949', 'TTD' => '780', 'TWD' => '901', 'TZS' => '834',
|
53
|
+
'UAH' => '980', 'UGX' => '800', 'USD' => '840', 'UYU' => '858', 'UZS' => '860',
|
54
|
+
'VEB' => '862', 'VND' => '704', 'VUV' => '548', 'XAF' => '950', 'XCD' => '951',
|
55
|
+
'XOF' => '952', 'XPF' => '953', 'YER' => '886', 'YUM' => '891', 'ZAR' => '710',
|
56
|
+
'ZMK' => '894', 'ZWD' => '716'
|
57
|
+
}
|
58
|
+
|
59
|
+
class Error < StandardError
|
60
|
+
attr_reader :response
|
61
|
+
|
62
|
+
def initialize(response, msg=nil)
|
63
|
+
@response = response
|
64
|
+
super(msg || response[:error])
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
21
68
|
# Creates a new FirstDataGateway
|
22
69
|
#
|
23
70
|
# The gateway requires that a valid pem and password be passed
|
24
71
|
# in the +options+ hash.
|
25
72
|
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
# * <tt>:pem</tt> -- The First Data cert/key (REQUIRED)
|
29
|
-
# * <tt>:pem_password</tt> -- The First Data password. (REQUIRED)
|
73
|
+
# @option options [String] :pem First Data cert/key (REQUIRED)
|
74
|
+
# @option options [String] :pem_password First Data cert password (REQUIRED)
|
30
75
|
#
|
31
76
|
def initialize(options = {})
|
32
77
|
requires!(options, :pem, :pem_password)
|
@@ -37,12 +82,13 @@ module ActiveMerchant #:nodoc:
|
|
37
82
|
# Perform a purchase, which is essentially an authorization and capture in a single operation.
|
38
83
|
#
|
39
84
|
# Registering of SMS transaction
|
40
|
-
#
|
41
|
-
# @param
|
42
|
-
# @
|
43
|
-
# @
|
44
|
-
# @
|
45
|
-
# @
|
85
|
+
#
|
86
|
+
# @param [Integer] amount transaction amount in minor units, mandatory
|
87
|
+
# @option params [Integer, String] :currency transaction currency code, mandatory
|
88
|
+
# @option params [String] :client_ip_addr client's IP address, mandatory
|
89
|
+
# @option params [String] :description description of transaction, optional
|
90
|
+
# @option params [String] :language authorization language identificator, optional
|
91
|
+
# @return [ActiveSupport::HashWithIndifferentAccess] TRANSACTION_ID
|
46
92
|
#
|
47
93
|
def purchase(amount, params = {})
|
48
94
|
params = params.reverse_merge(
|
@@ -50,6 +96,7 @@ module ActiveMerchant #:nodoc:
|
|
50
96
|
:amount => amount,
|
51
97
|
:currency => default_currency
|
52
98
|
)
|
99
|
+
lookup_currency(params)
|
53
100
|
requires!(params, :amount, :currency, :client_ip_addr)
|
54
101
|
commit(params)
|
55
102
|
end
|
@@ -58,12 +105,13 @@ module ActiveMerchant #:nodoc:
|
|
58
105
|
# charge the card.
|
59
106
|
#
|
60
107
|
# Registering of DMS authorisation
|
61
|
-
#
|
62
|
-
# @param
|
63
|
-
# @
|
64
|
-
# @
|
65
|
-
# @
|
66
|
-
# @
|
108
|
+
#
|
109
|
+
# @param [Integer] amount transaction amount in minor units, mandatory
|
110
|
+
# @option params [Integer, String] :currency transaction currency code, mandatory
|
111
|
+
# @option params [String] :client_ip_addr client's IP address, mandatory
|
112
|
+
# @option params [String] :description description of transaction, optional
|
113
|
+
# @option params [String] :language authorization language identificator, optional
|
114
|
+
# @return [ActiveSupport::HashWithIndifferentAccess] TRANSACTION_ID
|
67
115
|
#
|
68
116
|
def authorize(amount, params = {})
|
69
117
|
params = params.reverse_merge(
|
@@ -72,6 +120,7 @@ module ActiveMerchant #:nodoc:
|
|
72
120
|
:amount => amount,
|
73
121
|
:currency => default_currency
|
74
122
|
)
|
123
|
+
lookup_currency(params)
|
75
124
|
requires!(params, :amount, :currency, :client_ip_addr, :msg_type)
|
76
125
|
commit(params)
|
77
126
|
end
|
@@ -79,12 +128,13 @@ module ActiveMerchant #:nodoc:
|
|
79
128
|
# Captures the funds from an authorized transaction.
|
80
129
|
#
|
81
130
|
# Making of DMS transaction
|
82
|
-
#
|
83
|
-
# @param
|
84
|
-
# @param
|
85
|
-
# @
|
86
|
-
# @
|
87
|
-
# @
|
131
|
+
#
|
132
|
+
# @param [Integer] amount transaction amount in minor units, mandatory
|
133
|
+
# @param [Integer] trans_id id of previously made successeful authorisation
|
134
|
+
# @option params [Integer, String] :currency transaction currency code, mandatory
|
135
|
+
# @option params [String] :client_ip_addr client's IP address, mandatory
|
136
|
+
# @option params [String] :description description of transaction, optional
|
137
|
+
# @return [ActiveSupport::HashWithIndifferentAccess] RESULT, RESULT_CODE, RRN, APPROVAL_CODE
|
88
138
|
#
|
89
139
|
def capture(amount, trans_id, params = {})
|
90
140
|
params = params.reverse_merge(
|
@@ -94,15 +144,16 @@ module ActiveMerchant #:nodoc:
|
|
94
144
|
:amount => amount,
|
95
145
|
:currency => default_currency
|
96
146
|
)
|
147
|
+
lookup_currency(params)
|
97
148
|
requires!(params, :trans_id, :amount, :currency, :client_ip_addr)
|
98
149
|
commit(params)
|
99
150
|
end
|
100
151
|
|
101
152
|
# Transaction result
|
102
153
|
#
|
103
|
-
# @param
|
104
|
-
# @
|
105
|
-
# @return
|
154
|
+
# @param [Integer] trans_id transaction identifier, mandatory
|
155
|
+
# @option params [String] :client_ip_addr client's IP address, mandatory
|
156
|
+
# @return [ActiveSupport::HashWithIndifferentAccess] RESULT, RESULT_CODE, 3DSECURE, AAV, RRN, APPROVAL_CODE
|
106
157
|
#
|
107
158
|
def result(trans_id, params = {})
|
108
159
|
params = params.reverse_merge(
|
@@ -113,14 +164,15 @@ module ActiveMerchant #:nodoc:
|
|
113
164
|
commit(params)
|
114
165
|
end
|
115
166
|
|
116
|
-
#
|
167
|
+
# refund() allows you to return money to a card that was previously billed.
|
117
168
|
#
|
118
169
|
# Transaction reversal
|
119
|
-
# @param int $trans_id transaction identifier, mandatory
|
120
|
-
# @param int $amount transaction amount in minor units, mandatory
|
121
|
-
# @return string RESULT, RESULT_CODE
|
122
170
|
#
|
123
|
-
|
171
|
+
# @param [Integer] amount transaction amount in minor units, mandatory
|
172
|
+
# @param [Integer] trans_id transaction identifier, mandatory
|
173
|
+
# @return [ActiveSupport::HashWithIndifferentAccess] RESULT, RESULT_CODE
|
174
|
+
#
|
175
|
+
def refund(amount, trans_id = nil)
|
124
176
|
params = {
|
125
177
|
:command => :r,
|
126
178
|
:trans_id => trans_id,
|
@@ -130,6 +182,95 @@ module ActiveMerchant #:nodoc:
|
|
130
182
|
commit(params)
|
131
183
|
end
|
132
184
|
|
185
|
+
def credit(amount, trans_id = nil)
|
186
|
+
deprecated CREDIT_DEPRECATION_MESSAGE
|
187
|
+
refund(amount, trans_id)
|
188
|
+
end
|
189
|
+
|
190
|
+
# Register new recurring payment along with the first payment
|
191
|
+
#
|
192
|
+
# @param [Integer] amount transaction amount in minor units, mandatory (up to 12 digits)
|
193
|
+
# @option params [Integer, String] :currency transaction currency code, mandatory
|
194
|
+
# @option params [String] :client_ip_addr client's IP address, mandatory
|
195
|
+
# @option params [String] :description transaction details, mandatory (up to 125 characters)
|
196
|
+
# @option params [String] :biller_client_id recurring payment identifier, mandatory (up to 30 characters)
|
197
|
+
# @option params [String] :perspayee_expiry preferred deadline for a Recurring payment, mandatory (MMYY)
|
198
|
+
# (system will compare two expiry dates - recurring payment expiry date provided by Merchant and
|
199
|
+
# card expiry date provided by Cardholder. In response Merchant will receive back the earliest expiry dates of both).
|
200
|
+
# For example, Recurring payment date is 1214 but card expiry date 1213 then Merchant will receive back 1213.
|
201
|
+
# First Data system will save the earliest expiry date as Recurring payment expiry date.
|
202
|
+
# @option params [Integer] :perspayee_overwrite set to 1 to overwrite existing recurring payment card data
|
203
|
+
# together with payment, optional
|
204
|
+
# @option params [String] :language authorization language identificator, optional
|
205
|
+
# @return [ActiveSupport::HashWithIndifferentAccess] TRANSACTION_ID
|
206
|
+
#
|
207
|
+
# Afterwards when transaction result is requested then result response includes also RECC_PMNT_ID and RECC_PMNT_EXPIRY
|
208
|
+
#
|
209
|
+
def recurring(amount, params = {})
|
210
|
+
params = params.reverse_merge(
|
211
|
+
:command => :z,
|
212
|
+
:amount => amount,
|
213
|
+
:currency => default_currency,
|
214
|
+
:msg_type => 'SMS',
|
215
|
+
:perspayee_gen => 1
|
216
|
+
)
|
217
|
+
lookup_currency(params)
|
218
|
+
requires!(params, :amount, :currency, :client_ip_addr, :description, :biller_client_id, :perspayee_expiry)
|
219
|
+
commit(params)
|
220
|
+
end
|
221
|
+
|
222
|
+
# Execute subsequent recurring payment
|
223
|
+
#
|
224
|
+
# @param [Integer] amount transaction amount in minor units, mandatory (up to 12 digits)
|
225
|
+
# @option params [Integer, String] :currency transaction currency code, mandatory
|
226
|
+
# @option params [String] :client_ip_addr client's IP address, mandatory
|
227
|
+
# (the same IP address which was provided when registered recurring payment)
|
228
|
+
# @option params [String] :description transaction details, mandatory (up to 125 characters)
|
229
|
+
# @option params [String] :biller_client_id recurring payment identifier, mandatory (up to 30 characters)
|
230
|
+
# @return [ActiveSupport::HashWithIndifferentAccess] TRANSACTION_ID, RESULT, RESULT_CODE, RRN, APPROVAL_CODE
|
231
|
+
#
|
232
|
+
def execute_recurring(amount, params = {})
|
233
|
+
params = params.reverse_merge(
|
234
|
+
:command => :e,
|
235
|
+
:amount => amount,
|
236
|
+
:currency => default_currency
|
237
|
+
)
|
238
|
+
lookup_currency(params)
|
239
|
+
requires!(params, :amount, :currency, :client_ip_addr, :description, :biller_client_id)
|
240
|
+
commit(params)
|
241
|
+
end
|
242
|
+
|
243
|
+
# Overwriting existing recurring payment card data without payment
|
244
|
+
#
|
245
|
+
# @option params [Integer, String] :currency transaction currency code, mandatory
|
246
|
+
# @option params [String] :client_ip_addr client's IP address, mandatory
|
247
|
+
# @option params [String] :description transaction details, mandatory (up to 125 characters)
|
248
|
+
# @option params [String] :biller_client_id existing recurring payment identifier, mandatory (up to 30 characters)
|
249
|
+
# @option params [String] :perspayee_expiry preferred deadline for a Recurring payment, mandatory (MMYY)
|
250
|
+
# (system will compare two expiry dates - recurring payment expiry date provided by Merchant and
|
251
|
+
# card expiry date provided by Cardholder. In response Merchant will receive back the earliest expiry dates of both).
|
252
|
+
# For example, Recurring payment date is 1214 but card expiry date 1213 then Merchant will receive back 1213.
|
253
|
+
# First Data system will save the earliest expiry date as Recurring payment expiry date.
|
254
|
+
# @option params [String] :language authorization language identificator, optional
|
255
|
+
# @return [ActiveSupport::HashWithIndifferentAccess] TRANSACTION_ID
|
256
|
+
#
|
257
|
+
# Afterwards when transaction result is requested then result response includes also RECC_PMNT_ID and RECC_PMNT_EXPIRY
|
258
|
+
#
|
259
|
+
def update_recurring(params = {})
|
260
|
+
params = params.reverse_merge(
|
261
|
+
:command => :p,
|
262
|
+
:amount => 0,
|
263
|
+
:currency => default_currency,
|
264
|
+
:msg_type => 'SMS',
|
265
|
+
:msg_type => 'AUTH',
|
266
|
+
:perspayee_gen => 1,
|
267
|
+
:perspayee_overwrite => 1
|
268
|
+
)
|
269
|
+
lookup_currency(params)
|
270
|
+
requires!(params, :currency, :client_ip_addr, :description, :biller_client_id, :perspayee_expiry)
|
271
|
+
commit(params)
|
272
|
+
end
|
273
|
+
|
133
274
|
# Close business day.
|
134
275
|
def close_day
|
135
276
|
commit({ :command => :b })
|
@@ -139,12 +280,18 @@ module ActiveMerchant #:nodoc:
|
|
139
280
|
test? ? test_url : live_url
|
140
281
|
end
|
141
282
|
|
142
|
-
def redirect_url
|
143
|
-
test? ? test_redirect_url : live_redirect_url
|
283
|
+
def redirect_url(trans_id = nil)
|
284
|
+
url = test? ? test_redirect_url : live_redirect_url
|
285
|
+
url += "?trans_id=#{CGI.escape trans_id}" if trans_id
|
286
|
+
url
|
144
287
|
end
|
145
288
|
|
146
289
|
private
|
147
290
|
|
291
|
+
def lookup_currency(params)
|
292
|
+
params[:currency] = CURRENCY_CODES[params[:currency]] || params[:currency]
|
293
|
+
end
|
294
|
+
|
148
295
|
# Convert HTTP response body to a Ruby Hash.
|
149
296
|
def parse(body)
|
150
297
|
results = ActiveSupport::HashWithIndifferentAccess.new
|
@@ -157,7 +304,9 @@ module ActiveMerchant #:nodoc:
|
|
157
304
|
|
158
305
|
def commit(params = {})
|
159
306
|
response = parse(ssl_post(endpoint_url, post_data(params)))
|
160
|
-
|
307
|
+
# FIXME: test cases 17 and 19 return unnecessary error even when result and result_code are present
|
308
|
+
# should be removed when this issue is fixed on gataway side
|
309
|
+
raise Error.new(response) if !response[:error].blank? && response[:result_code].blank?
|
161
310
|
response
|
162
311
|
end
|
163
312
|
|
metadata
CHANGED
@@ -1,73 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_merchant_first_data
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0
|
5
4
|
prerelease:
|
5
|
+
version: 1.1.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Edgars Beigarts
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
default_executable:
|
12
|
+
date: 2013-02-09 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
|
-
|
17
|
-
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.15.0
|
18
20
|
none: false
|
21
|
+
prerelease: false
|
22
|
+
name: activemerchant
|
23
|
+
requirement: !ruby/object:Gem::Requirement
|
19
24
|
requirements:
|
20
25
|
- - ! '>='
|
21
26
|
- !ruby/object:Gem::Version
|
22
27
|
version: 1.15.0
|
28
|
+
none: false
|
23
29
|
type: :runtime
|
24
|
-
prerelease: false
|
25
|
-
version_requirements: *2152366380
|
26
30
|
- !ruby/object:Gem::Dependency
|
27
|
-
|
28
|
-
|
31
|
+
version_requirements: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ! '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
29
36
|
none: false
|
37
|
+
prerelease: false
|
38
|
+
name: rake
|
39
|
+
requirement: !ruby/object:Gem::Requirement
|
30
40
|
requirements:
|
31
41
|
- - ! '>='
|
32
42
|
- !ruby/object:Gem::Version
|
33
43
|
version: '0'
|
44
|
+
none: false
|
34
45
|
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: *2152366000
|
37
46
|
- !ruby/object:Gem::Dependency
|
38
|
-
|
39
|
-
|
47
|
+
version_requirements: !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ~>
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '2.10'
|
40
52
|
none: false
|
53
|
+
prerelease: false
|
54
|
+
name: rspec
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
41
56
|
requirements:
|
42
57
|
- - ~>
|
43
58
|
- !ruby/object:Gem::Version
|
44
|
-
version: 2.
|
59
|
+
version: '2.10'
|
60
|
+
none: false
|
45
61
|
type: :development
|
46
|
-
prerelease: false
|
47
|
-
version_requirements: *2152365440
|
48
62
|
- !ruby/object:Gem::Dependency
|
49
|
-
|
50
|
-
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ~>
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '1.11'
|
51
68
|
none: false
|
69
|
+
prerelease: false
|
70
|
+
name: vcr
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
52
72
|
requirements:
|
53
|
-
- -
|
73
|
+
- - ~>
|
54
74
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
75
|
+
version: '1.11'
|
76
|
+
none: false
|
56
77
|
type: :development
|
57
|
-
prerelease: false
|
58
|
-
version_requirements: *2152365020
|
59
78
|
- !ruby/object:Gem::Dependency
|
60
|
-
|
61
|
-
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ~>
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '1.3'
|
62
84
|
none: false
|
85
|
+
prerelease: false
|
86
|
+
name: fakeweb
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
63
88
|
requirements:
|
64
|
-
- -
|
89
|
+
- - ~>
|
65
90
|
- !ruby/object:Gem::Version
|
66
|
-
version: '
|
91
|
+
version: '1.3'
|
92
|
+
none: false
|
67
93
|
type: :development
|
68
|
-
|
69
|
-
version_requirements: *2152364560
|
70
|
-
description: First Data gateway for Active Merchant
|
94
|
+
description: First Data Latvia gateway for Active Merchant
|
71
95
|
email:
|
72
96
|
- edgars.beigarts@makit.lv
|
73
97
|
executables: []
|
@@ -78,7 +102,6 @@ files:
|
|
78
102
|
- lib/active_merchant_first_data.rb
|
79
103
|
- README.md
|
80
104
|
- LICENSE
|
81
|
-
has_rdoc: true
|
82
105
|
homepage: https://github.com/ebeigarts/active_merchant_first_data
|
83
106
|
licenses: []
|
84
107
|
post_install_message:
|
@@ -86,21 +109,27 @@ rdoc_options: []
|
|
86
109
|
require_paths:
|
87
110
|
- lib
|
88
111
|
required_ruby_version: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
112
|
requirements:
|
91
113
|
- - ! '>='
|
92
114
|
- !ruby/object:Gem::Version
|
93
115
|
version: '0'
|
94
|
-
|
116
|
+
segments:
|
117
|
+
- 0
|
118
|
+
hash: 4550487914721957976
|
95
119
|
none: false
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
121
|
requirements:
|
97
122
|
- - ! '>='
|
98
123
|
- !ruby/object:Gem::Version
|
99
124
|
version: '0'
|
125
|
+
segments:
|
126
|
+
- 0
|
127
|
+
hash: 4550487914721957976
|
128
|
+
none: false
|
100
129
|
requirements: []
|
101
130
|
rubyforge_project:
|
102
|
-
rubygems_version: 1.
|
131
|
+
rubygems_version: 1.8.24
|
103
132
|
signing_key:
|
104
133
|
specification_version: 3
|
105
|
-
summary: First Data gateway for Active Merchant
|
134
|
+
summary: First Data Latvia gateway for Active Merchant
|
106
135
|
test_files: []
|