issuer_response_codes 0.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.
- 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."
|