issuer_response_codes 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +11 -9
- data/README.md +107 -8
- data/lib/issuer_response_codes.rb +1 -0
- data/lib/issuer_response_codes/code.rb +8 -2
- data/lib/issuer_response_codes/context.rb +4 -0
- data/lib/issuer_response_codes/locale_library.rb +1 -0
- data/lib/issuer_response_codes/tds_code.rb +36 -0
- data/lib/issuer_response_codes/version.rb +1 -1
- data/lib/locale/da.yml +85 -38
- data/lib/locale/ee.yml +86 -38
- data/lib/locale/en.yml +84 -37
- data/lib/locale/lt.yml +85 -38
- data/lib/locale/lv.yml +85 -38
- data/lib/locale/pl.yml +84 -37
- data/lib/locale/sv.yml +85 -38
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fdf114e3233ad8d9aa121a2c12bc2819e9c110c6671a4e364ae00f5a69987e9
|
4
|
+
data.tar.gz: 9e22b8b8973d9577b47623b921ef0e2b2ea470b8175861b836656ec57fe35aac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 238de0b95f1203dc1d93855c8badca49bd5792e3ad43c3ffb7d7df078cae4c68bf7bd28ae77204ffdf733d671a4c873e1e43a574169ce9185e720bdc26be44fc
|
7
|
+
data.tar.gz: 5d537189d5e4c074ec9fd4b4cbce724f97b9c2d64697a103be37fa1d348ff469d92fd697fe3b3dcaab3b34eca21ff7486ae880a0310297e1f08e1dd5fe7944df
|
data/Gemfile.lock
CHANGED
@@ -1,27 +1,28 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
issuer_response_codes (0.
|
4
|
+
issuer_response_codes (0.2.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
9
|
ast (2.4.2)
|
10
|
-
backport (1.
|
10
|
+
backport (1.2.0)
|
11
11
|
benchmark (0.1.1)
|
12
12
|
bundler-audit (0.8.0)
|
13
13
|
bundler (>= 1.2.0, < 3)
|
14
14
|
thor (~> 1.0)
|
15
15
|
byebug (11.1.3)
|
16
|
+
diff-lcs (1.4.4)
|
16
17
|
e2mmap (0.1.0)
|
17
18
|
jaro_winkler (1.5.4)
|
18
19
|
kramdown (2.3.1)
|
19
20
|
rexml
|
20
21
|
kramdown-parser-gfm (1.1.0)
|
21
22
|
kramdown (~> 2.0)
|
22
|
-
mini_portile2 (2.5.
|
23
|
+
mini_portile2 (2.5.3)
|
23
24
|
minitest (5.14.4)
|
24
|
-
nokogiri (1.11.
|
25
|
+
nokogiri (1.11.7)
|
25
26
|
mini_portile2 (~> 2.5.0)
|
26
27
|
racc (~> 1.4)
|
27
28
|
parallel (1.20.1)
|
@@ -34,22 +35,23 @@ GEM
|
|
34
35
|
reverse_markdown (2.0.0)
|
35
36
|
nokogiri
|
36
37
|
rexml (3.2.5)
|
37
|
-
rubocop (1.
|
38
|
+
rubocop (1.18.2)
|
38
39
|
parallel (~> 1.10)
|
39
40
|
parser (>= 3.0.0.0)
|
40
41
|
rainbow (>= 2.2.2, < 4.0)
|
41
42
|
regexp_parser (>= 1.8, < 3.0)
|
42
43
|
rexml
|
43
|
-
rubocop-ast (>= 1.
|
44
|
+
rubocop-ast (>= 1.7.0, < 2.0)
|
44
45
|
ruby-progressbar (~> 1.7)
|
45
46
|
unicode-display_width (>= 1.4.0, < 3.0)
|
46
|
-
rubocop-ast (1.
|
47
|
+
rubocop-ast (1.7.0)
|
47
48
|
parser (>= 3.0.1.1)
|
48
49
|
ruby-progressbar (1.11.0)
|
49
|
-
solargraph (0.
|
50
|
-
backport (~> 1.
|
50
|
+
solargraph (0.42.3)
|
51
|
+
backport (~> 1.2)
|
51
52
|
benchmark
|
52
53
|
bundler (>= 1.17.2)
|
54
|
+
diff-lcs (~> 1.4)
|
53
55
|
e2mmap
|
54
56
|
jaro_winkler (~> 1.5)
|
55
57
|
kramdown (~> 2.3)
|
data/README.md
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# IssuerResponseCodes
|
2
2
|
|
3
|
-
This gem provides a quite comprehensive library of Issuer Response Code descriptions (for both cardholders and merchants) with suggested actions in 7 languages:
|
3
|
+
This gem provides a quite comprehensive library of Issuer Response Code and 3D-Secure Status Code descriptions (for both cardholders and merchants) with suggested actions in 7 languages:
|
4
4
|
- Complete locales:
|
5
|
-
|
6
|
-
|
5
|
+
- en
|
6
|
+
- pl
|
7
7
|
|
8
8
|
- Incomplete locales:
|
9
9
|
- da
|
@@ -59,11 +59,22 @@ def response_code_description
|
|
59
59
|
::ISSUER_RESPONSE_CODES.code(id: '43', locale: :pl).description
|
60
60
|
#=> "Karta oznaczona jako skradziona. Skontaktuj się z Twoim bankiem w celu wyjaśnienia przyczyny problemu."
|
61
61
|
end
|
62
|
+
|
63
|
+
def tds_code_description
|
64
|
+
::ISSUER_RESPONSE_CODES.tds_code(id: '09').description
|
65
|
+
#=> "Security failure"
|
66
|
+
|
67
|
+
::ISSUER_RESPONSE_CODES.tds_code(id: '09', target: :cardholder).description
|
68
|
+
#=> "Card authentication failed"
|
69
|
+
|
70
|
+
::ISSUER_RESPONSE_CODES.tds_code(id: '09', locale: :pl).description
|
71
|
+
#=> "Niepowodzenie autoryzacji karty"
|
72
|
+
end
|
62
73
|
```
|
63
74
|
|
64
75
|
## Usage
|
65
76
|
|
66
|
-
This gem provides an easy way of handling Issuer Response Codes. Whether you need detailed descriptions, short reasons or suggestions of what to do when a certain Code appeared, we've got you covered. Certain more explicit codes like `Stolen card' are masked behind more generic terms when you choose to target cardholders.
|
77
|
+
This gem provides an easy way of handling Issuer Response Codes and 3D-Secure Status Codes. Whether you need detailed descriptions, short reasons or suggestions of what to do when a certain Code appeared, we've got you covered. Certain more explicit codes like `Stolen card' are masked behind more generic terms when you choose to target cardholders.
|
67
78
|
|
68
79
|
### IssuerResponseCodes::Code
|
69
80
|
#### Creation options
|
@@ -135,7 +146,7 @@ code.reason #=> "Karta utraciła ważność."
|
|
135
146
|
|
136
147
|
#### Methods
|
137
148
|
|
138
|
-
#####
|
149
|
+
##### reason
|
139
150
|
|
140
151
|
The `reason` method returns a relatively short description of the main reason why the Issuer Response Code appeared in the first place.
|
141
152
|
|
@@ -150,7 +161,7 @@ code = ::IssuerResponseCodes::Code.new(id: '59')
|
|
150
161
|
code.reason #=> "Your bank has declined this transaction"
|
151
162
|
```
|
152
163
|
|
153
|
-
#####
|
164
|
+
##### behaviour
|
154
165
|
|
155
166
|
The `behaviour` method returns a suggestion of what to do when the Issuer Response Code appeared. Mainly for cardholders.
|
156
167
|
|
@@ -165,9 +176,9 @@ code = ::IssuerResponseCodes::Code.new(id: '59')
|
|
165
176
|
code.behaviour #=> "Please contact your card issuer to get more details and try again later."
|
166
177
|
```
|
167
178
|
|
168
|
-
#####
|
179
|
+
##### description
|
169
180
|
|
170
|
-
The `description` method is a combination of both the `reason` and `behaviour` of a Issuer Response Code
|
181
|
+
The `description` method (aliased as `humanize`) is a combination of both the `reason` and `behaviour` of a Issuer Response Code
|
171
182
|
|
172
183
|
```ruby
|
173
184
|
code = ::IssuerResponseCodes::Code.new(id: '14')
|
@@ -180,6 +191,91 @@ code = ::IssuerResponseCodes::Code.new(id: '59')
|
|
180
191
|
code.description #=> "Your bank has declined this transaction. Please contact your card issuer to get more details and try again later."
|
181
192
|
```
|
182
193
|
|
194
|
+
##### fraudulent_code?
|
195
|
+
|
196
|
+
The `fraudulent_code?` method returns `true` when the Code indicates fraud.
|
197
|
+
|
198
|
+
```ruby
|
199
|
+
code = ::IssuerResponseCodes::Code.new(id: '14')
|
200
|
+
code.fraudulent_code? #=> false
|
201
|
+
|
202
|
+
code = ::IssuerResponseCodes::Code.new(id: '04')
|
203
|
+
code.fraudulent_code? #=> true
|
204
|
+
|
205
|
+
code = ::IssuerResponseCodes::Code.new(id: '43')
|
206
|
+
code.fraudulent_code? #=> true
|
207
|
+
```
|
208
|
+
|
209
|
+
### IssuerResponseCodes::TdsCode
|
210
|
+
#### Creation options
|
211
|
+
|
212
|
+
##### Targets
|
213
|
+
|
214
|
+
You can choose the main target of these descriptions (certain details are hidden for cardholders)
|
215
|
+
|
216
|
+
```ruby
|
217
|
+
# Default values are as follows:
|
218
|
+
# target: :merchant, locale: :en
|
219
|
+
|
220
|
+
# fraud_notice is set to true by default when target = :merchant
|
221
|
+
code = ::IssuerResponseCodes::TdsCode.new(id: '11')
|
222
|
+
code.reason #=> "Suspected fraud"
|
223
|
+
|
224
|
+
code = ::IssuerResponseCodes::TdsCode.new(id: '11', target: :merchant)
|
225
|
+
code.reason #=> "Suspected fraud"
|
226
|
+
|
227
|
+
# fraud_notice is set to false by default when target = :cardholder
|
228
|
+
code = ::IssuerResponseCodes::TdsCode.new(id: '11', target: :cardholder)
|
229
|
+
code.reason #=> "Card authentication failed"
|
230
|
+
```
|
231
|
+
|
232
|
+
##### Locale
|
233
|
+
|
234
|
+
The default locale is `:en`. There are 7 in total: `%i[en pl da ee lt lv sv]`. Only the first two are complete, the rest are partially in English.
|
235
|
+
|
236
|
+
```ruby
|
237
|
+
code = ::IssuerResponseCodes::TdsCode.new(id: '11')
|
238
|
+
code.reason #=> "Suspected fraud"
|
239
|
+
|
240
|
+
code = ::IssuerResponseCodes::TdsCode.new(id: '11', locale: :en)
|
241
|
+
code.reason #=> "Suspected fraud"
|
242
|
+
|
243
|
+
code = ::IssuerResponseCodes::TdsCode.new(id: '11', locale: :pl)
|
244
|
+
code.reason #=> "Podejrzenie oszustwa"
|
245
|
+
```
|
246
|
+
|
247
|
+
#### Methods
|
248
|
+
|
249
|
+
##### description/reason
|
250
|
+
|
251
|
+
The `description` (also aliased as `reason`) method returns a relatively short description of the main reason why the Issuer Response Code appeared in the first place.
|
252
|
+
|
253
|
+
```ruby
|
254
|
+
code = ::IssuerResponseCodes::TdsCode.new(id: '08')
|
255
|
+
code.description #=> "No Card record"
|
256
|
+
|
257
|
+
code = ::IssuerResponseCodes::TdsCode.new(id: '22')
|
258
|
+
code.description #=> "ACS technical issue"
|
259
|
+
|
260
|
+
code = ::IssuerResponseCodes::TdsCode.new(id: '26')
|
261
|
+
code.description #=> "Authentication attempted but not performed by the cardholder"
|
262
|
+
```
|
263
|
+
|
264
|
+
##### fraudulent_code?
|
265
|
+
|
266
|
+
The `fraudulent_code?` method returns `true` when the TdsCode indicates fraud.
|
267
|
+
|
268
|
+
```ruby
|
269
|
+
code = ::IssuerResponseCodes::TdsCode.new(id: '11')
|
270
|
+
code.fraudulent_code? #=> true
|
271
|
+
|
272
|
+
code = ::IssuerResponseCodes::TdsCode.new(id: '22')
|
273
|
+
code.fraudulent_code? #=> false
|
274
|
+
|
275
|
+
code = ::IssuerResponseCodes::TdsCode.new(id: '26')
|
276
|
+
code.fraudulent_code? #=> false
|
277
|
+
```
|
278
|
+
|
183
279
|
### Custom default configuration
|
184
280
|
|
185
281
|
You can make use of the `Context` class to easily create your own default configurations. Contexts work as proxies which create codes for you.
|
@@ -198,6 +294,9 @@ code = ISSUER_RESPONSE_CODES.code(id: '43')
|
|
198
294
|
code.reason #=> "Bank odrzucił autoryzację."
|
199
295
|
code.behaviour #=> "Skontaktuj się z Twoim bankiem w celu wyjaśnienia przyczyny problemu. UWAGA: Nie należy powtarzać obciążeń dla tej karty! Może to zostać uznane za próbę oszustwa!"
|
200
296
|
|
297
|
+
tds_code = ISSUER_RESPONSE_CODES.tds_code(id: '11')
|
298
|
+
tds_code.reason #=> "Niepowodzenie autoryzacji karty"
|
299
|
+
|
201
300
|
# these can always be overridden
|
202
301
|
code = ISSUER_RESPONSE_CODES.code(id: '43', locale: :en, target: :merchant, fraud_notice: false)
|
203
302
|
code.reason #=> "Stolen card."
|
@@ -4,6 +4,7 @@ require "issuer_response_codes/version"
|
|
4
4
|
require "issuer_response_codes/locale_library"
|
5
5
|
require "issuer_response_codes/context"
|
6
6
|
require "issuer_response_codes/code"
|
7
|
+
require "issuer_response_codes/tds_code"
|
7
8
|
|
8
9
|
module IssuerResponseCodes
|
9
10
|
class IllegalTarget < StandardError; end
|
@@ -32,9 +32,15 @@ module IssuerResponseCodes
|
|
32
32
|
LOCALE_LIBRARY.dig(path: id, scope: "issuer_response_codes.targeted.#{target}", locale: locale, default: :unknown)
|
33
33
|
end
|
34
34
|
|
35
|
+
def fraudulent_code?
|
36
|
+
@fraudulent_code ||= LOCALE_LIBRARY.dig(path: id, scope: "issuer_response_codes.fraudulent_codes", locale: locale)
|
37
|
+
end
|
38
|
+
|
35
39
|
def behaviour
|
36
|
-
|
37
|
-
|
40
|
+
behaviour_str = LOCALE_LIBRARY.dig(path: id, scope: "issuer_response_codes.behaviour", locale: locale, default: :unknown)
|
41
|
+
return behaviour_str unless fraud_notice && fraudulent_code?
|
42
|
+
|
43
|
+
"#{behaviour_str} #{LOCALE_LIBRARY.dig(path: 'issuer_response_codes.fraud_notice')}"
|
38
44
|
end
|
39
45
|
end
|
40
46
|
end
|
@@ -24,5 +24,9 @@ module IssuerResponseCodes
|
|
24
24
|
def code(id:, target: default_target, locale: default_locale, fraud_notice: fraud_notice_by_default)
|
25
25
|
Code.new(id: id, target: target, locale: locale, fraud_notice: fraud_notice)
|
26
26
|
end
|
27
|
+
|
28
|
+
def tds_code(id:, target: default_target, locale: default_locale, fraud_notice: fraud_notice_by_default)
|
29
|
+
TdsCode.new(id: id, target: target, locale: locale, fraud_notice: fraud_notice)
|
30
|
+
end
|
27
31
|
end
|
28
32
|
end
|
@@ -18,6 +18,7 @@ module IssuerResponseCodes
|
|
18
18
|
def dig(path:, locale: :en, scope: '', default: nil, substitute: '')
|
19
19
|
result = __dig__(path: path, locale: locale, scope: scope, default: default)
|
20
20
|
return result unless result
|
21
|
+
return result unless result.is_a? ::String
|
21
22
|
|
22
23
|
result.gsub(/%{substitute}/, substitute)
|
23
24
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module IssuerResponseCodes
|
4
|
+
class TdsCode
|
5
|
+
attr_reader :id, :target, :locale, :fraud_notice
|
6
|
+
|
7
|
+
NOT_PROVIDED = ::Object.new
|
8
|
+
|
9
|
+
def initialize(id:, target: :merchant, locale: :en, fraud_notice: NOT_PROVIDED)
|
10
|
+
@id = id
|
11
|
+
@target = target
|
12
|
+
@locale = locale
|
13
|
+
|
14
|
+
raise IllegalLocale, "No such locale: #{locale.inspect}" unless AVAILABLE_LOCALES.include?(locale)
|
15
|
+
raise IllegalTarget, "No such target: #{target.inspect}" unless AVAILABLE_TARGETS.include?(target)
|
16
|
+
|
17
|
+
if fraud_notice != NOT_PROVIDED
|
18
|
+
@fraud_notice = fraud_notice
|
19
|
+
return
|
20
|
+
end
|
21
|
+
|
22
|
+
@fraud_notice = target == :merchant
|
23
|
+
end
|
24
|
+
|
25
|
+
def reason
|
26
|
+
LOCALE_LIBRARY.dig(path: id, scope: "tds_status_codes.targeted.#{target}", locale: locale, default: :unknown)
|
27
|
+
end
|
28
|
+
|
29
|
+
alias humanize reason
|
30
|
+
alias description reason
|
31
|
+
|
32
|
+
def fraudulent_code?
|
33
|
+
@fraudulent_code ||= LOCALE_LIBRARY.dig(path: id, scope: "tds_status_codes.fraudulent_codes", locale: locale)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/locale/da.yml
CHANGED
@@ -1,41 +1,88 @@
|
|
1
1
|
da:
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
2
|
+
tds_status_codes:
|
3
|
+
fraudulent_codes:
|
4
|
+
'09': true
|
5
|
+
'10': true
|
6
|
+
'11': true
|
7
|
+
universal: &universal_tds_status_codes
|
8
|
+
unknown: "Unknown reason."
|
9
|
+
'01': Card authentication failed
|
10
|
+
'02': Unknown Device
|
11
|
+
'03': Unsupported Device
|
12
|
+
'04': Exceeds authentication frequency limit
|
13
|
+
'05': Expired card
|
14
|
+
'06': Invalid card number
|
15
|
+
'07': Invalid transaction
|
16
|
+
'08': No Card record
|
17
|
+
'12': Transaction not permitted to cardholder
|
18
|
+
'13': Cardholder not enrolled in service
|
19
|
+
'14': Transaction timed out at the ACS
|
20
|
+
'15': Low confidence
|
21
|
+
'16': Medium confidence
|
22
|
+
'17': High confidence
|
23
|
+
'18': Very High confidence
|
24
|
+
'19': Exceeds ACS maximum challenges
|
25
|
+
'20': Non-Payment transaction not supported
|
26
|
+
'21': 3RI transaction not supported
|
27
|
+
'22': ACS technical issue
|
28
|
+
'23': Decoupled Authentication required by ACS but not requested by 3DS Requestor
|
29
|
+
'24': 3DS Requestor Decoupled Max Expiry Time exceeded
|
30
|
+
'25': Decoupled Authentication was provided insufficient time to authenticate cardholder. ACS will not make attempt
|
31
|
+
'26': Authentication attempted but not performed by the cardholder
|
32
|
+
|
33
|
+
targeted:
|
34
|
+
cardholder:
|
35
|
+
<<: *universal_tds_status_codes
|
36
|
+
'09': Card authentication failed # Security failure
|
37
|
+
'10': Card authentication failed # Stolen card
|
38
|
+
'11': Card authentication failed # Suspected fraud
|
39
|
+
merchant:
|
40
|
+
<<: *universal_tds_status_codes
|
41
|
+
'09': Security failure
|
42
|
+
'10': Stolen card
|
43
|
+
'11': Suspected fraud
|
36
44
|
issuer_response_codes:
|
37
45
|
suggestion: 'Suggestion'
|
38
46
|
fraud_notice: 'IMPORTANT NOTICE: It is forbidden to retry transactions that ended with this code. It may be recognized as a fraud attempt!'
|
47
|
+
fraudulent_codes:
|
48
|
+
'04': true
|
49
|
+
'07': true
|
50
|
+
'41': true
|
51
|
+
'43': true
|
52
|
+
universal: &issuer_response_code
|
53
|
+
'00': "En fejl opstod. Transaktionen blev afvist af Elavon på grund af ikke-understøttet korttype eller forkerte kortdata, intet svar fra udsteder / bank eller inaktiv Merchant-konto."
|
54
|
+
'05': "Banken har afvist transaktionen på grund af sikkerhedskontrol (brugt kort understøtter ikke tilbagebetalinger eller betaling uden CVV-kode), midlerne er blevet frosset eller grænsen overskredet, eller kortet understøtter ikke MOTO / internet-transaktioner."
|
55
|
+
'13': "MOTO / eCommerce betalinger på kort er inaktive eller beløbsgrænse overstiger."
|
56
|
+
'14': "Ugyldigt kortnummer."
|
57
|
+
'N7': "Negative CVV / CVC resultater."
|
58
|
+
'51': "Ikke nok penge."
|
59
|
+
'54': "Udgået kort."
|
60
|
+
'57': "Banken har afvist transaktionen, da dette kreditkort ikke kan bruges til denne type transaktion (e-handel, MOTO eller tilbagevendende)."
|
61
|
+
'61': "Banken har afvist transaktionen."
|
62
|
+
'82': "Negative CVV / CVC resultater."
|
63
|
+
# incomplete translations
|
64
|
+
unknown: "Unknown reason."
|
65
|
+
'01': "Authorization Error."
|
66
|
+
'02': "Authorization Error."
|
67
|
+
'03': "Authorization Error."
|
68
|
+
'12': "No privileges to execute this transaction for your card."
|
69
|
+
'30': "Your bank has declined this transaction"
|
70
|
+
'58': "Your bank has declined this transaction as this credit card cannot be used for this type of transaction (eccommerce, MOTO or recurring)."
|
71
|
+
'59': "Your bank has declined this transaction"
|
72
|
+
'62': "Your card can be not supported due to restrictions placed on the card or Seller country exclusion (imposition an embargo), or bank blocked a card eg. due to unacceptable debit balance."
|
73
|
+
'65': "Activity count limit exceeded."
|
74
|
+
'75': "Invalid activity count limit exceeded."
|
75
|
+
'78': "Inactive card."
|
76
|
+
'91': "Temporary issuer error."
|
77
|
+
'92': "Temporary issuer error."
|
78
|
+
'94': "Temporary issuer error."
|
79
|
+
'96': "Temporary issuer error."
|
80
|
+
'98': "Temporary issuer error."
|
81
|
+
'E3': "Transaction not executed due to a 3D-Secure error."
|
82
|
+
'E4': "Transaction not executed due to a negative 3D-Secure confirmation from your bank."
|
83
|
+
'E5': "Temporary 3D-Secure error."
|
84
|
+
'R0': "Refused by Issuer because Customer requested stop of specific recurring payments."
|
85
|
+
'R1': "Refused by Issuer because Customer requested stop of all recurring payments."
|
39
86
|
behaviour:
|
40
87
|
'00': "Prøv igen senere, kontakt med sælger eller med Espago Support Team."
|
41
88
|
'05': "Tjek venligst dine kortindstillinger for disse transaktionstyper eller brug et andet kort."
|
@@ -52,12 +99,12 @@ da:
|
|
52
99
|
'01': "Please contact your card issuer."
|
53
100
|
'02': "Please contact your card issuer."
|
54
101
|
'03': "Please contact your card issuer and try again later."
|
55
|
-
'04': "Please contact your card issuer and try again later.
|
56
|
-
'07': "Please contact your card issuer and try again later.
|
102
|
+
'04': "Please contact your card issuer and try again later."
|
103
|
+
'07': "Please contact your card issuer and try again later."
|
57
104
|
'12': "Please contact your card issuer to get more details and try again later."
|
58
105
|
'30': "Please contact your card issuer to get more details and try again later."
|
59
|
-
'41': "Please contact your card issuer to get more details and try again later.
|
60
|
-
'43': "Please contact your card issuer to get more details and try again later.
|
106
|
+
'41': "Please contact your card issuer to get more details and try again later."
|
107
|
+
'43': "Please contact your card issuer to get more details and try again later."
|
61
108
|
'58': "Please check your card settings for those transaction types or use another card."
|
62
109
|
'59': "Please contact your card issuer to get more details and try again later."
|
63
110
|
'62': "Please contact your bank."
|