issuer_response_codes 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.byebug_history +38 -0
- data/.gitignore +8 -0
- data/.rubocop.yml +75 -0
- data/.ruby-version +1 -0
- data/.travis.yml +6 -0
- data/.vscode/extensions.json +12 -0
- data/.vscode/settings.json +11 -0
- data/Gemfile +9 -0
- data/Gemfile.lock +82 -0
- data/LICENSE +21 -0
- data/LICENSE.txt +21 -0
- data/README.md +221 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/issuer_response_codes.gemspec +34 -0
- data/lib/issuer_response_codes.rb +16 -0
- data/lib/issuer_response_codes/code.rb +40 -0
- data/lib/issuer_response_codes/context.rb +28 -0
- data/lib/issuer_response_codes/locale_library.rb +65 -0
- data/lib/issuer_response_codes/version.rb +5 -0
- data/lib/locale/da.yml +89 -0
- data/lib/locale/ee.yml +89 -0
- data/lib/locale/en.yml +87 -0
- data/lib/locale/lt.yml +89 -0
- data/lib/locale/lv.yml +90 -0
- data/lib/locale/pl.yml +87 -0
- data/lib/locale/sv.yml +89 -0
- metadata +145 -0
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "issuer_response_codes"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'lib/issuer_response_codes/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "issuer_response_codes"
|
7
|
+
spec.version = IssuerResponseCodes::VERSION
|
8
|
+
spec.authors = ["Espago", "Mateusz Drewniak"]
|
9
|
+
spec.email = ["m.drewniak@espago.com"]
|
10
|
+
|
11
|
+
spec.summary = "Issuer Response Code descriptions for cardholders and merchants"
|
12
|
+
spec.description = "A simple Ruby gem which provides Issuer Response Code descriptions and suggestions for cardholders and merchants"
|
13
|
+
spec.homepage = "https://github.com/espago/issuer_response_codes"
|
14
|
+
spec.license = "MIT"
|
15
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.7")
|
16
|
+
|
17
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
18
|
+
spec.metadata["source_code_uri"] = "https://github.com/espago/issuer_response_codes"
|
19
|
+
|
20
|
+
# Specify which files should be added to the gem when it is released.
|
21
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
22
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
23
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
24
|
+
end
|
25
|
+
spec.bindir = "exe"
|
26
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
|
+
spec.require_paths = ["lib"]
|
28
|
+
|
29
|
+
spec.add_development_dependency 'bundler'
|
30
|
+
spec.add_development_dependency 'bundler-audit'
|
31
|
+
spec.add_development_dependency 'byebug'
|
32
|
+
spec.add_development_dependency 'rubocop'
|
33
|
+
spec.add_development_dependency 'solargraph'
|
34
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "issuer_response_codes/version"
|
4
|
+
require "issuer_response_codes/locale_library"
|
5
|
+
require "issuer_response_codes/context"
|
6
|
+
require "issuer_response_codes/code"
|
7
|
+
|
8
|
+
module IssuerResponseCodes
|
9
|
+
class IllegalTarget < StandardError; end
|
10
|
+
class IllegalLocale < StandardError; end
|
11
|
+
|
12
|
+
AVAILABLE_TARGETS = %i[merchant cardholder].freeze
|
13
|
+
AVAILABLE_LOCALES = %i[en pl da ee lt lv sv].freeze
|
14
|
+
|
15
|
+
LOCALE_LIBRARY = LocaleLibrary.new
|
16
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module IssuerResponseCodes
|
4
|
+
class Code
|
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 humanize
|
26
|
+
"#{reason} #{behaviour}"
|
27
|
+
end
|
28
|
+
|
29
|
+
alias description humanize
|
30
|
+
|
31
|
+
def reason
|
32
|
+
LOCALE_LIBRARY.dig(path: id, scope: "issuer_response_codes.targeted.#{target}", locale: locale, default: :unknown)
|
33
|
+
end
|
34
|
+
|
35
|
+
def behaviour
|
36
|
+
fraud_notice_str = fraud_notice ? LOCALE_LIBRARY.dig(path: 'issuer_response_codes.fraud_notice') : ''
|
37
|
+
LOCALE_LIBRARY.dig(path: id, substitute: fraud_notice_str, scope: "issuer_response_codes.behaviour", locale: locale, default: :unknown)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module IssuerResponseCodes
|
4
|
+
class Context
|
5
|
+
attr_reader :default_target, :default_locale, :fraud_notice_by_default
|
6
|
+
|
7
|
+
NOT_PROVIDED = ::Object.new
|
8
|
+
|
9
|
+
def initialize(default_target: :merchant, default_locale: :en, fraud_notice_by_default: NOT_PROVIDED)
|
10
|
+
@default_target = default_target
|
11
|
+
@default_locale = default_locale
|
12
|
+
|
13
|
+
raise IllegalLocale, "No such locale: #{default_locale.inspect}" unless AVAILABLE_LOCALES.include?(default_locale)
|
14
|
+
raise IllegalTarget, "No such target: #{default_target.inspect}" unless AVAILABLE_TARGETS.include?(default_target)
|
15
|
+
|
16
|
+
if fraud_notice_by_default != NOT_PROVIDED
|
17
|
+
@fraud_notice_by_default = fraud_notice_by_default
|
18
|
+
return
|
19
|
+
end
|
20
|
+
|
21
|
+
@fraud_notice_by_default = default_target == :merchant
|
22
|
+
end
|
23
|
+
|
24
|
+
def code(id:, target: default_target, locale: default_locale, fraud_notice: fraud_notice_by_default)
|
25
|
+
Code.new(id: id, target: target, locale: locale, fraud_notice: fraud_notice)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
require 'byebug'
|
5
|
+
|
6
|
+
module IssuerResponseCodes
|
7
|
+
class LocaleLibrary
|
8
|
+
attr_reader :locale_hash
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@locale_hash = {}
|
12
|
+
|
13
|
+
AVAILABLE_LOCALES.each do |locale|
|
14
|
+
load_locale(locale)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def dig(path:, locale: :en, scope: '', default: nil, substitute: '')
|
19
|
+
result = __dig__(path: path, locale: locale, scope: scope, default: default)
|
20
|
+
return result unless result
|
21
|
+
|
22
|
+
result.gsub(/%{substitute}/, substitute)
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.symbolize_keys(hash)
|
26
|
+
h = hash.map do |k, v|
|
27
|
+
v_sym = if v.instance_of? Hash
|
28
|
+
symbolize_keys(v)
|
29
|
+
else
|
30
|
+
v
|
31
|
+
end
|
32
|
+
|
33
|
+
[k.to_sym, v_sym]
|
34
|
+
end
|
35
|
+
|
36
|
+
h.to_h
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def __dig__(path:, locale: :en, scope: '', default: nil)
|
42
|
+
result = dig_provided_path(path, scope, locale)
|
43
|
+
return result if result || !default
|
44
|
+
|
45
|
+
return default.to_s if default.is_a?(String) || scope.empty?
|
46
|
+
|
47
|
+
dig_provided_path(default.to_s, scope, locale)
|
48
|
+
end
|
49
|
+
|
50
|
+
def dig_provided_path(path, scope, locale)
|
51
|
+
full_path_array = [locale]
|
52
|
+
full_path_array.append(*scope.split('.').map(&:to_sym))
|
53
|
+
full_path_array.append(*path.split('.').map(&:to_sym))
|
54
|
+
|
55
|
+
locale_hash.dig(*full_path_array)
|
56
|
+
end
|
57
|
+
|
58
|
+
def load_locale(name)
|
59
|
+
name_str = name.to_s
|
60
|
+
|
61
|
+
single_locale_hash = self.class.symbolize_keys(::YAML.load_file("lib/locale/#{name_str}.yml")[name_str])
|
62
|
+
@locale_hash[name] = single_locale_hash
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/lib/locale/da.yml
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
da:
|
2
|
+
issuer_response_code: &issuer_response_code
|
3
|
+
'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."
|
4
|
+
'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."
|
5
|
+
'13': "MOTO / eCommerce betalinger på kort er inaktive eller beløbsgrænse overstiger."
|
6
|
+
'14': "Ugyldigt kortnummer."
|
7
|
+
'N7': "Negative CVV / CVC resultater."
|
8
|
+
'51': "Ikke nok penge."
|
9
|
+
'54': "Udgået kort."
|
10
|
+
'57': "Banken har afvist transaktionen, da dette kreditkort ikke kan bruges til denne type transaktion (e-handel, MOTO eller tilbagevendende)."
|
11
|
+
'61': "Banken har afvist transaktionen."
|
12
|
+
'82': "Negative CVV / CVC resultater."
|
13
|
+
# incomplete translations
|
14
|
+
unknown: "Unknown reason."
|
15
|
+
'01': "Authorization Error."
|
16
|
+
'02': "Authorization Error."
|
17
|
+
'03': "Authorization Error."
|
18
|
+
'12': "No privileges to execute this transaction for your card."
|
19
|
+
'30': "Your bank has declined this transaction"
|
20
|
+
'58': "Your bank has declined this transaction as this credit card cannot be used for this type of transaction (eccommerce, MOTO or recurring)."
|
21
|
+
'59': "Your bank has declined this transaction"
|
22
|
+
'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."
|
23
|
+
'65': "Activity count limit exceeded."
|
24
|
+
'75': "Invalid activity count limit exceeded."
|
25
|
+
'78': "Inactive card."
|
26
|
+
'91': "Temporary issuer error."
|
27
|
+
'92': "Temporary issuer error."
|
28
|
+
'94': "Temporary issuer error."
|
29
|
+
'96': "Temporary issuer error."
|
30
|
+
'98': "Temporary issuer error."
|
31
|
+
'E3': "Transaction not executed due to a 3D-Secure error."
|
32
|
+
'E4': "Transaction not executed due to a negative 3D-Secure confirmation from your bank."
|
33
|
+
'E5': "Temporary 3D-Secure error."
|
34
|
+
'R0': "Refused by Issuer because Customer requested stop of specific recurring payments."
|
35
|
+
'R1': "Refused by Issuer because Customer requested stop of all recurring payments."
|
36
|
+
issuer_response_codes:
|
37
|
+
suggestion: 'Suggestion'
|
38
|
+
fraud_notice: 'IMPORTANT NOTICE: It is forbidden to retry transactions that ended with this code. It may be recognized as a fraud attempt!'
|
39
|
+
behaviour:
|
40
|
+
'00': "Prøv igen senere, kontakt med sælger eller med Espago Support Team."
|
41
|
+
'05': "Tjek venligst dine kortindstillinger for disse transaktionstyper eller brug et andet kort."
|
42
|
+
'13': "Tjek venligst indstillinger for din konto og konfigurationer af grænser. Kontakt venligst din kortudsteder og prøv igen senere."
|
43
|
+
'14': "Kontroller indtastede data og prøv igen."
|
44
|
+
'N7': "Kontroller indtastede data og prøv igen."
|
45
|
+
'51': "Tjek venligst penge på din konto og prøv igen senere."
|
46
|
+
'54': "Kontrollér dit kort eller prøv et andet."
|
47
|
+
'57': "Tjek venligst dine kortindstillinger for disse transaktionstyper eller brug et andet kort."
|
48
|
+
'61': "Tjek venligst indstillinger for din konto og konfigurationer af grænser. Kontakt venligst din kortudsteder og prøv igen senere."
|
49
|
+
'82': "Kontroller indtastede data og prøv igen."
|
50
|
+
# incomplete translations
|
51
|
+
unknown: "Please contact our support team."
|
52
|
+
'01': "Please contact your card issuer."
|
53
|
+
'02': "Please contact your card issuer."
|
54
|
+
'03': "Please contact your card issuer and try again later."
|
55
|
+
'04': "Please contact your card issuer and try again later. %{substitute}"
|
56
|
+
'07': "Please contact your card issuer and try again later. %{substitute}"
|
57
|
+
'12': "Please contact your card issuer to get more details and try again later."
|
58
|
+
'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. %{substitute}"
|
60
|
+
'43': "Please contact your card issuer to get more details and try again later. %{substitute}"
|
61
|
+
'58': "Please check your card settings for those transaction types or use another card."
|
62
|
+
'59': "Please contact your card issuer to get more details and try again later."
|
63
|
+
'62': "Please contact your bank."
|
64
|
+
'65': "Change your limits settings or try again later."
|
65
|
+
'75': "Please check your CVV/CVC/PIN code on your card."
|
66
|
+
'78': "Please activate your card and try again later."
|
67
|
+
'91': "Please try again later."
|
68
|
+
'92': "Please try again later."
|
69
|
+
'94': "Please try again later."
|
70
|
+
'96': "Please try again later."
|
71
|
+
'98': "Please try again later."
|
72
|
+
'E3': "Please try again later."
|
73
|
+
'E4': "Please try again later or contact your card issuer to get more details"
|
74
|
+
'E5': "Please try again later or contact your card issuer to get more details"
|
75
|
+
'R0': "Please contact your card issuer to get more details and try again later."
|
76
|
+
'R1': "Please contact your card issuer to get more details and try again later."
|
77
|
+
targeted:
|
78
|
+
merchant:
|
79
|
+
<<: *issuer_response_code
|
80
|
+
'04': "Pickup card."
|
81
|
+
'07': "Pickup card."
|
82
|
+
'41': "Lost card."
|
83
|
+
'43': "Stolen card."
|
84
|
+
cardholder:
|
85
|
+
<<: *issuer_response_code
|
86
|
+
'04': "Your bank has declined this transaction."
|
87
|
+
'07': "Your bank has declined this transaction."
|
88
|
+
'41': "Your bank has declined this transaction."
|
89
|
+
'43': "Your bank has declined this transaction."
|
data/lib/locale/ee.yml
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
ee:
|
2
|
+
issuer_response_code: &issuer_response_code
|
3
|
+
'00': "Tekkis viga. Tehing lükati Elavoni poolt tagasi sobimatu kaardiliigi, valede kaardiandmete, väljaandja / panga loa puudumise või kaupmehe suletud konto tõttu."
|
4
|
+
'05': "Pank lükkas tehingu tagasi, kuna turvalisuskontrollis avastati puudusi (kasutatud kaardiga ei saa teostada korduvtehinguid / makseid ilma CVV-koodita), rahalised vahendid on külmutatud, limiidid ületatud või kaart ei toeta MOTO-/internetitehinguid."
|
5
|
+
'13': "MOTO/eCommerce mitteaktiivne või summa limiit ületatud."
|
6
|
+
'14': "Kehtetu kaardi number."
|
7
|
+
'N7': "Vale CVV-kood."
|
8
|
+
'51': "Puuduvad piisavad vahendid."
|
9
|
+
'54': "Kehtivuse kaotanud kaart."
|
10
|
+
'57': "Pank lükkas tehingu tagasi, kuna antud krediitkaarti ei saa seda liiki tehingu teostamiseks kasutada (eCommerce, MOTO või korduvtehing)."
|
11
|
+
'61': "MOTO/eCommerce mitteaktiivne või summa limiit ületatud."
|
12
|
+
'82': "Vale CVV-kood."
|
13
|
+
# incomplete translations
|
14
|
+
unknown: "Unknown reason."
|
15
|
+
'01': "Authorization Error."
|
16
|
+
'02': "Authorization Error."
|
17
|
+
'03': "Authorization Error."
|
18
|
+
'12': "No privileges to execute this transaction for your card."
|
19
|
+
'30': "Your bank has declined this transaction"
|
20
|
+
'58': "Your bank has declined this transaction as this credit card cannot be used for this type of transaction (eccommerce, MOTO or recurring)."
|
21
|
+
'59': "Your bank has declined this transaction"
|
22
|
+
'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."
|
23
|
+
'65': "Activity count limit exceeded."
|
24
|
+
'75': "Invalid activity count limit exceeded."
|
25
|
+
'78': "Inactive card."
|
26
|
+
'91': "Temporary issuer error."
|
27
|
+
'92': "Temporary issuer error."
|
28
|
+
'94': "Temporary issuer error."
|
29
|
+
'96': "Temporary issuer error."
|
30
|
+
'98': "Temporary issuer error."
|
31
|
+
'E3': "Transaction not executed due to a 3D-Secure error."
|
32
|
+
'E4': "Transaction not executed due to a negative 3D-Secure confirmation from your bank."
|
33
|
+
'E5': "Temporary 3D-Secure error."
|
34
|
+
'R0': "Refused by Issuer because Customer requested stop of specific recurring payments."
|
35
|
+
'R1': "Refused by Issuer because Customer requested stop of all recurring payments."
|
36
|
+
issuer_response_codes:
|
37
|
+
suggestion: 'Suggestion'
|
38
|
+
fraud_notice: 'IMPORTANT NOTICE: It is forbidden to retry transactions that ended with this code. It may be recognized as a fraud attempt!'
|
39
|
+
behaviour:
|
40
|
+
'00': "Palun proovige hiljem uuesti, võtke ühendust müüja või Espago klienditoega."
|
41
|
+
'05': "Palun kontrollige oma antud liiki tehinguid käsitlevaid kaardi seadeid või kasutage teist kaarti."
|
42
|
+
'13': "Palun kontrollige oma konto seadeid ja sätestatud limiite. Palun võtke ühendust oma kaardi väljaandjaga ja proovige hiljem uuesti."
|
43
|
+
'14': "Kontrollige sisestatud andmeid ja proovige uuesti."
|
44
|
+
'N7': "Kontrollige sisestatud andmeid ja proovige uuesti."
|
45
|
+
'51': "Palun kontrollige oma kontol olevaid vahendeid ja proovige hiljem uuesti."
|
46
|
+
'54': "Palun kontrollige oma kaarti või proovige teist kaarti."
|
47
|
+
'57': "Palun kontrollige oma antud liiki tehinguid käsitlevaid kaardi seadeid või kasutage teist kaarti."
|
48
|
+
'61': "Palun kontrollige oma konto seadeid ja sätestatud limiite. Palun võtke ühendust oma kaardi väljaandjaga ja proovige hiljem uuesti."
|
49
|
+
'82': "Kontrollige sisestatud andmeid ja proovige uuesti."
|
50
|
+
# incomplete translations
|
51
|
+
unknown: "Please contact our support team."
|
52
|
+
'01': "Please contact your card issuer."
|
53
|
+
'02': "Please contact your card issuer."
|
54
|
+
'03': "Please contact your card issuer and try again later."
|
55
|
+
'04': "Please contact your card issuer and try again later. %{substitute}"
|
56
|
+
'07': "Please contact your card issuer and try again later. %{substitute}"
|
57
|
+
'12': "Please contact your card issuer to get more details and try again later."
|
58
|
+
'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. %{substitute}"
|
60
|
+
'43': "Please contact your card issuer to get more details and try again later. %{substitute}"
|
61
|
+
'58': "Please check your card settings for those transaction types or use another card."
|
62
|
+
'59': "Please contact your card issuer to get more details and try again later."
|
63
|
+
'62': "Please contact your bank."
|
64
|
+
'65': "Change your limits settings or try again later."
|
65
|
+
'75': "Please check your CVV/CVC/PIN code on your card."
|
66
|
+
'78': "Please activate your card and try again later."
|
67
|
+
'91': "Please try again later."
|
68
|
+
'92': "Please try again later."
|
69
|
+
'94': "Please try again later."
|
70
|
+
'96': "Please try again later."
|
71
|
+
'98': "Please try again later."
|
72
|
+
'E3': "Please try again later."
|
73
|
+
'E4': "Please try again later or contact your card issuer to get more details"
|
74
|
+
'E5': "Please try again later or contact your card issuer to get more details"
|
75
|
+
'R0': "Please contact your card issuer to get more details and try again later."
|
76
|
+
'R1': "Please contact your card issuer to get more details and try again later."
|
77
|
+
targeted:
|
78
|
+
merchant:
|
79
|
+
<<: *issuer_response_code
|
80
|
+
'04': "Pickup card."
|
81
|
+
'07': "Pickup card."
|
82
|
+
'41': "Lost card."
|
83
|
+
'43': "Stolen card."
|
84
|
+
cardholder:
|
85
|
+
<<: *issuer_response_code
|
86
|
+
'04': "Your bank has declined this transaction."
|
87
|
+
'07': "Your bank has declined this transaction."
|
88
|
+
'41': "Your bank has declined this transaction."
|
89
|
+
'43': "Your bank has declined this transaction."
|
data/lib/locale/en.yml
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
en:
|
2
|
+
issuer_response_code: &issuer_response_code
|
3
|
+
unknown: "Unknown reason."
|
4
|
+
'00': "Transaction rejected due to no response from issuer/bank, inactive Merchant account, used not supported card or incorrect card data."
|
5
|
+
'01': "Authorization Error."
|
6
|
+
'02': "Authorization Error."
|
7
|
+
'03': "Authorization Error."
|
8
|
+
'05': "The bank has declined the transaction due to security check (used card doesn't support recurring payments/ payment without CVV code), the funds have been frozen or limit exceeded, or card doesn't support MOTO/internet transactions."
|
9
|
+
'12': "No privileges to execute this transaction for your card."
|
10
|
+
'13': "Please check settings of your account and configurations of limits."
|
11
|
+
'14': "Invalid card number."
|
12
|
+
'30': "Your bank has declined this transaction"
|
13
|
+
'N7': "Negative CVV results."
|
14
|
+
'51': "Insufficient funds."
|
15
|
+
'54': "Expired card."
|
16
|
+
'57': "Bank/Issuer has declined the transaction as this credit card cannot be used for this type of transaction (eccommerce, MOTO or recurring)."
|
17
|
+
'58': "Your bank has declined this transaction as this credit card cannot be used for this type of transaction (eccommerce, MOTO or recurring)."
|
18
|
+
'59': "Your bank has declined this transaction"
|
19
|
+
'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."
|
20
|
+
'61': "Your bank has declined this transaction"
|
21
|
+
'65': "Activity count limit exceeded."
|
22
|
+
'75': "Invalid activity count limit exceeded."
|
23
|
+
'78': "Inactive card."
|
24
|
+
'82': "Negative CVV results."
|
25
|
+
'91': "Temporary issuer error."
|
26
|
+
'92': "Temporary issuer error."
|
27
|
+
'94': "Temporary issuer error."
|
28
|
+
'96': "Temporary issuer error."
|
29
|
+
'98': "Temporary issuer error."
|
30
|
+
'E3': "Transaction not executed due to a 3D-Secure error."
|
31
|
+
'E4': "Transaction not executed due to a negative 3D-Secure confirmation from your bank."
|
32
|
+
'E5': "Temporary 3D-Secure error."
|
33
|
+
'R0': "Refused by Issuer because Customer requested stop of specific recurring payments."
|
34
|
+
'R1': "Refused by Issuer because Customer requested stop of all recurring payments."
|
35
|
+
issuer_response_codes:
|
36
|
+
suggestion: 'Suggestion'
|
37
|
+
fraud_notice: 'IMPORTANT NOTICE: It is forbidden to retry transactions that ended with this code. It may be recognized as a fraud attempt!'
|
38
|
+
behaviour:
|
39
|
+
unknown: "Please contact our support team."
|
40
|
+
'00': "Check the card's data or please try again later."
|
41
|
+
'01': "Please contact your card issuer."
|
42
|
+
'02': "Please contact your card issuer."
|
43
|
+
'03': "Please contact your card issuer and try again later."
|
44
|
+
'04': "Please contact your card issuer and try again later. %{substitute}"
|
45
|
+
'05': "Please check your card settings for those transaction types or use another card."
|
46
|
+
'07': "Please contact your card issuer and try again later. %{substitute}"
|
47
|
+
'12': "Please contact your card issuer to get more details and try again later."
|
48
|
+
'13': "Please contact your card issuer and try again later."
|
49
|
+
'14': "Check entered data and try again."
|
50
|
+
'30': "Please contact your card issuer to get more details and try again later."
|
51
|
+
'41': "Please contact your card issuer to get more details and try again later. %{substitute}"
|
52
|
+
'43': "Please contact your card issuer to get more details and try again later. %{substitute}"
|
53
|
+
'N7': "Check entered data and try again."
|
54
|
+
'51': "Please check funds on your account and try again later."
|
55
|
+
'54': "Please check your card or try another."
|
56
|
+
'57': "Please check your card settings or use another card."
|
57
|
+
'58': "Please check your card settings for those transaction types or use another card."
|
58
|
+
'59': "Please contact your card issuer to get more details and try again later."
|
59
|
+
'61': "Please check settings of your account and configurations of limits. Please contact your card issuer and try again later."
|
60
|
+
'62': "Please contact your bank."
|
61
|
+
'65': "Change your limits settings or try again later."
|
62
|
+
'75': "Please check your CVV/CVC/PIN code on your card."
|
63
|
+
'78': "Please activate your card and try again later."
|
64
|
+
'82': "Check entered data and try again."
|
65
|
+
'91': "Please try again later."
|
66
|
+
'92': "Please try again later."
|
67
|
+
'94': "Please try again later."
|
68
|
+
'96': "Please try again later."
|
69
|
+
'98': "Please try again later."
|
70
|
+
'E3': "Please try again later."
|
71
|
+
'E4': "Please try again later or contact your card issuer to get more details"
|
72
|
+
'E5': "Please try again later or contact your card issuer to get more details"
|
73
|
+
'R0': "Please contact your card issuer to get more details and try again later."
|
74
|
+
'R1': "Please contact your card issuer to get more details and try again later."
|
75
|
+
targeted:
|
76
|
+
merchant:
|
77
|
+
<<: *issuer_response_code
|
78
|
+
'04': "Pickup card."
|
79
|
+
'07': "Pickup card."
|
80
|
+
'41': "Lost card."
|
81
|
+
'43': "Stolen card."
|
82
|
+
cardholder:
|
83
|
+
<<: *issuer_response_code
|
84
|
+
'04': "Your bank has declined this transaction."
|
85
|
+
'07': "Your bank has declined this transaction."
|
86
|
+
'41': "Your bank has declined this transaction."
|
87
|
+
'43': "Your bank has declined this transaction."
|