datatrans 2.4.0 → 3.0.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/.travis.yml +1 -0
- data/Gemfile.lock +4 -3
- data/README.markdown +31 -25
- data/datatrans.gemspec +3 -2
- data/lib/datatrans.rb +8 -49
- data/lib/datatrans/common.rb +2 -2
- data/lib/datatrans/config.rb +63 -0
- data/lib/datatrans/version.rb +1 -1
- data/lib/datatrans/web/transaction.rb +5 -30
- data/lib/datatrans/web/transaction/authorize.rb +26 -24
- data/lib/datatrans/web/view_helper.rb +25 -0
- data/lib/datatrans/xml/transaction.rb +11 -10
- data/lib/datatrans/xml/transaction/authorize.rb +2 -2
- data/lib/datatrans/xml/transaction/capture.rb +1 -1
- data/lib/datatrans/xml/transaction/request.rb +7 -16
- data/lib/datatrans/xml/transaction/response.rb +3 -2
- data/lib/datatrans/xml/transaction/status.rb +2 -2
- data/lib/datatrans/xml/transaction/void.rb +1 -1
- data/spec/common_spec.rb +5 -3
- data/spec/config_spec.rb +21 -0
- data/spec/spec_helper.rb +5 -5
- data/spec/web/authorize_spec.rb +5 -5
- data/spec/xml/authorize_spec.rb +43 -43
- data/spec/xml/capture_spec.rb +3 -3
- data/spec/xml/request_spec.rb +30 -22
- data/spec/xml/status_spec.rb +3 -3
- data/spec/xml/void_spec.rb +3 -3
- metadata +53 -59
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 00dfb98ec54350ac1a4d6d2a932a4ee08ed1ddd5
|
4
|
+
data.tar.gz: 599f998c0f9bd6e489d9571e171893c3b463be24
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 06eeebeafc026f0fdfc1296be4f2a2e8201aa7de21a12f950b4f938225bcee6b0ffe19f2e47a4a5432c30d68c478c9733bca30b20a55dda593d5e1135e898738
|
7
|
+
data.tar.gz: 2a285a435167deae93bca53229ad7b01f4b536c739b50ca293c54f599312ad179fe90fbcc06789a4c6b0d94eb45650a585d0cea10d0e6bf7f36895da9fe93d81
|
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
datatrans (
|
4
|
+
datatrans (3.0.0)
|
5
5
|
activesupport (>= 3.0.0)
|
6
6
|
builder
|
7
7
|
httparty
|
8
8
|
i18n
|
9
|
+
multi_xml (>= 0.5.1)
|
9
10
|
|
10
11
|
GEM
|
11
12
|
remote: http://rubygems.org/
|
@@ -30,13 +31,13 @@ GEM
|
|
30
31
|
diff-lcs (1.1.3)
|
31
32
|
erubis (2.7.0)
|
32
33
|
hike (1.2.1)
|
33
|
-
httparty (0.
|
34
|
+
httparty (0.11.0)
|
34
35
|
multi_json (~> 1.0)
|
35
36
|
multi_xml (>= 0.5.2)
|
36
37
|
i18n (0.6.1)
|
37
38
|
journey (1.0.4)
|
38
39
|
multi_json (1.5.0)
|
39
|
-
multi_xml (0.5.
|
40
|
+
multi_xml (0.5.5)
|
40
41
|
rack (1.4.4)
|
41
42
|
rack-cache (1.2)
|
42
43
|
rack (>= 0.4)
|
data/README.markdown
CHANGED
@@ -6,21 +6,23 @@ Ruby adapter for the Datatrans payment gateway (http://www.datatrans.ch).
|
|
6
6
|
Configuration
|
7
7
|
-------------
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
Datatrans.
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
:
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
9
|
+
Buidl your Datatrans Configuration like so:
|
10
|
+
|
11
|
+
datatrans = Datatrans::Config.new(
|
12
|
+
:merchant_id => '1234567',
|
13
|
+
:sign_key => 'ab739fd5b7c2a1...',
|
14
|
+
:environment => :production,
|
15
|
+
:proxy => {
|
16
|
+
:http_proxyaddr => "proxy.com",
|
17
|
+
:http_proxyport => 80,
|
18
|
+
:http_proxyuser => "hans",
|
19
|
+
:http_proxpass => "xxx",
|
20
20
|
}
|
21
|
-
|
21
|
+
)
|
22
22
|
|
23
|
-
|
23
|
+
|
24
|
+
If you don't want to use signed requests (disabled in datatrans web console), you can set `config.sign_key` to `false`.
|
25
|
+
The configuration is then used as parameter to all the constructors and helpers, see examples below.
|
24
26
|
|
25
27
|
Possible values for the environment: `:production`, `:development`
|
26
28
|
|
@@ -30,14 +32,13 @@ Web Authorization
|
|
30
32
|
If you want to process a credit card the first time a web authorization is
|
31
33
|
necessary. Add the following code to a controller action that shows the form.
|
32
34
|
You need to pass at least `amount`, `currency` and `refno` (order number).
|
33
|
-
|
34
|
-
@transaction = Datatrans::Web::Transaction.new({
|
35
|
+
@transaction = datatrans.web_transaction(
|
35
36
|
:amount => 1000, # in cents!
|
36
37
|
:currency => 'CHF',
|
37
38
|
:refno => 'ABCDEF',
|
38
|
-
:uppCustomerEmail => 'customer@email.com'
|
39
|
+
:uppCustomerEmail => 'customer@email.com',
|
39
40
|
# feel free to add more upp infos here ...
|
40
|
-
|
41
|
+
)
|
41
42
|
|
42
43
|
In your View your show the credit card form with a convenient helper:
|
43
44
|
|
@@ -53,7 +54,7 @@ In your View your show the credit card form with a convenient helper:
|
|
53
54
|
= hidden_field_tag :cancelUrl, <your_application_return_url>
|
54
55
|
= hidden_field_tag :errorUrl, <your_application_return_url>
|
55
56
|
|
56
|
-
= datatrans_notification_request_hidden_fields(@transaction)
|
57
|
+
= datatrans_notification_request_hidden_fields(datatrans, @transaction)
|
57
58
|
|
58
59
|
= submit_tag "send"
|
59
60
|
|
@@ -66,7 +67,7 @@ After you submit the request to Datatrans they redirect back to your application
|
|
66
67
|
Now you can process the transaction like this:
|
67
68
|
|
68
69
|
begin
|
69
|
-
transaction =
|
70
|
+
transaction = datatrans.web_transaction(params)
|
70
71
|
|
71
72
|
if transaction.authorize
|
72
73
|
# transaction was successful, access the following attributes
|
@@ -94,13 +95,13 @@ use the convenient XML methods to process payments.
|
|
94
95
|
Authorize
|
95
96
|
---------
|
96
97
|
|
97
|
-
transaction =
|
98
|
+
transaction = datatrans.xml_transaction(
|
98
99
|
:refno => 'ABCDEF',
|
99
100
|
:amount => 1000, # in cents!
|
100
101
|
:currency => 'CHF',
|
101
102
|
:aliasCC => '8383843729284848348',
|
102
103
|
:expm => 12,
|
103
|
-
:expy => 15
|
104
|
+
:expy => 15,
|
104
105
|
)
|
105
106
|
|
106
107
|
if transaction.authorize
|
@@ -116,11 +117,11 @@ Capture
|
|
116
117
|
|
117
118
|
To capture an authorized transaction you use the following code:
|
118
119
|
|
119
|
-
transaction =
|
120
|
+
transaction = datatrans.xml_transaction(
|
120
121
|
:refno => 'ABCDEF',
|
121
122
|
:amount => 1000, # in cents!
|
122
123
|
:currency => 'CHF',
|
123
|
-
:transaction_id => 19834324987349723948729834
|
124
|
+
:transaction_id => 19834324987349723948729834,
|
124
125
|
)
|
125
126
|
|
126
127
|
if transaction.capture
|
@@ -135,11 +136,11 @@ Void
|
|
135
136
|
|
136
137
|
To make an authorized transaction invalid use void.
|
137
138
|
|
138
|
-
transaction =
|
139
|
+
transaction = datatrans.xml_transaction(
|
139
140
|
:refno => 'ABCDEF',
|
140
141
|
:amount => 1000, # in cents!
|
141
142
|
:currency => 'CHF',
|
142
|
-
:transaction_id => 19834324987349723948729834
|
143
|
+
:transaction_id => 19834324987349723948729834,
|
143
144
|
)
|
144
145
|
|
145
146
|
if transaction.void
|
@@ -152,6 +153,11 @@ To make an authorized transaction invalid use void.
|
|
152
153
|
CHANGELOG
|
153
154
|
=========
|
154
155
|
|
156
|
+
3.0.0
|
157
|
+
-------
|
158
|
+
* Refactored Code to allow multiple configurations
|
159
|
+
* Proxy config now uses HTTParty naming convention.
|
160
|
+
|
155
161
|
2.2.2
|
156
162
|
-------
|
157
163
|
* added ability to skip signing by setting config.sign_key = false
|
data/datatrans.gemspec
CHANGED
@@ -5,8 +5,8 @@ require "datatrans/version"
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "datatrans"
|
7
7
|
s.version = Datatrans::VERSION
|
8
|
-
s.authors = ["Tobias Miesel", "Thomas Maurer", "Corin Langosch"]
|
9
|
-
s.email = ["
|
8
|
+
s.authors = ["Tobias Miesel", "Thomas Maurer", "Corin Langosch", "Pascal Betz"]
|
9
|
+
s.email = ["info@simplificator.com"]
|
10
10
|
s.homepage = ""
|
11
11
|
s.summary = %q{Datatrans Integration for Ruby on Rails}
|
12
12
|
s.description = %q{Datatrans Integration for Ruby on Rails}
|
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.add_dependency 'activesupport', '>= 3.0.0'
|
23
23
|
s.add_dependency 'i18n'
|
24
24
|
s.add_dependency 'builder'
|
25
|
+
s.add_dependency 'multi_xml', '>= 0.5.1'
|
25
26
|
|
26
27
|
s.add_development_dependency 'rake'
|
27
28
|
s.add_development_dependency 'rspec'
|
data/lib/datatrans.rb
CHANGED
@@ -1,59 +1,18 @@
|
|
1
1
|
require 'active_support/core_ext/module'
|
2
|
-
require 'action_view'
|
3
2
|
|
4
3
|
module Datatrans
|
5
|
-
|
6
|
-
WEB_AUTHORIZE_URL = "#{BASE_URL}/upp/jsp/upStart.jsp"
|
7
|
-
XML_AUTHORIZE_URL = "#{BASE_URL}/upp/jsp/XML_authorize.jsp"
|
8
|
-
XML_SETTLEMENT_URL = "#{BASE_URL}/upp/jsp/XML_processor.jsp"
|
9
|
-
XML_STATUS_URL = "#{BASE_URL}/upp/jsp/XML_status.jsp"
|
10
|
-
|
11
|
-
TEST_BASE_URL = 'https://pilot.datatrans.biz'
|
12
|
-
TEST_WEB_AUTHORIZE_URL = "#{TEST_BASE_URL}/upp/jsp/upStart.jsp"
|
13
|
-
TEST_XML_AUTHORIZE_URL = "#{TEST_BASE_URL}/upp/jsp/XML_authorize.jsp"
|
14
|
-
TEST_XML_SETTLEMENT_URL = "#{TEST_BASE_URL}/upp/jsp/XML_processor.jsp"
|
15
|
-
TEST_XML_STATUS_URL = "#{TEST_BASE_URL}/upp/jsp/XML_status.jsp"
|
16
|
-
|
17
|
-
mattr_accessor :merchant_id
|
18
|
-
mattr_accessor :sign_key
|
19
|
-
mattr_accessor :proxy
|
20
|
-
|
21
|
-
mattr_reader :base_url
|
22
|
-
mattr_reader :web_authorize_url
|
23
|
-
mattr_reader :xml_authorize_url
|
24
|
-
mattr_reader :xml_settlement_url
|
25
|
-
mattr_reader :xml_status_url
|
26
|
-
|
27
|
-
def self.configure
|
28
|
-
self.environment = :development # default
|
29
|
-
yield self
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.environment=(environment)
|
33
|
-
case environment
|
34
|
-
when :development
|
35
|
-
@@base_url = TEST_BASE_URL
|
36
|
-
@@web_authorize_url = TEST_WEB_AUTHORIZE_URL
|
37
|
-
@@xml_authorize_url = TEST_XML_AUTHORIZE_URL
|
38
|
-
@@xml_settlement_url = TEST_XML_SETTLEMENT_URL
|
39
|
-
@@xml_status_url = TEST_XML_STATUS_URL
|
40
|
-
when :production
|
41
|
-
@@base_url = BASE_URL
|
42
|
-
@@web_authorize_url = WEB_AUTHORIZE_URL
|
43
|
-
@@xml_authorize_url = XML_AUTHORIZE_URL
|
44
|
-
@@xml_settlement_url = XML_SETTLEMENT_URL
|
45
|
-
@@xml_status_url = XML_STATUS_URL
|
46
|
-
else
|
47
|
-
raise "Unknown environment '#{environment}'. Available: :development, :production."
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
class InvalidSignatureError < StandardError; end
|
4
|
+
InvalidSignatureError = Class.new(StandardError)
|
52
5
|
end
|
53
6
|
|
54
7
|
require 'datatrans/version'
|
55
8
|
require 'datatrans/common'
|
9
|
+
require 'datatrans/config'
|
56
10
|
require 'datatrans/xml/transaction'
|
57
11
|
require 'datatrans/web/transaction'
|
58
12
|
|
59
|
-
|
13
|
+
begin
|
14
|
+
require 'action_view'
|
15
|
+
require 'datatrans/web/view_helper'
|
16
|
+
ActionView::Base.send(:include, Datatrans::Web::ViewHelper)
|
17
|
+
rescue LoadError
|
18
|
+
end
|
data/lib/datatrans/common.rb
CHANGED
@@ -2,8 +2,8 @@ require 'openssl'
|
|
2
2
|
|
3
3
|
module Datatrans::Common
|
4
4
|
def sign(*fields)
|
5
|
-
return nil unless
|
6
|
-
key =
|
5
|
+
return nil unless self.datatrans.sign_key
|
6
|
+
key = self.datatrans.sign_key.split(/([a-f0-9][a-f0-9])/).reject(&:empty?)
|
7
7
|
key = key.pack("H*" * key.size)
|
8
8
|
OpenSSL::HMAC.hexdigest(OpenSSL::Digest::MD5.new, key, fields.join)
|
9
9
|
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Datatrans
|
2
|
+
class Config
|
3
|
+
ENVIRONMENTS = [:development, :production].freeze
|
4
|
+
DEFAULT_ENVIRONMENT = :development
|
5
|
+
|
6
|
+
DEFAULT_SIGN_KEY = false
|
7
|
+
|
8
|
+
BASE_URL_PRODUCTION = 'https://payment.datatrans.biz'.freeze
|
9
|
+
BASE_URL_DEVELOPMENT = 'https://pilot.datatrans.biz'.freeze
|
10
|
+
|
11
|
+
URLS = {
|
12
|
+
:development => {
|
13
|
+
:web_authorize_url => "#{BASE_URL_PRODUCTION}/upp/jsp/upStart.jsp".freeze,
|
14
|
+
:xml_authorize_url => "#{BASE_URL_PRODUCTION}/upp/jsp/XML_authorize.jsp".freeze,
|
15
|
+
:xml_settlement_url => "#{BASE_URL_PRODUCTION}/upp/jsp/XML_processor.jsp".freeze,
|
16
|
+
:xml_status_url => "#{BASE_URL_PRODUCTION}/upp/jsp/XML_status.jsp".freeze
|
17
|
+
},
|
18
|
+
:production => {
|
19
|
+
:web_authorize_url => "#{BASE_URL_DEVELOPMENT}/upp/jsp/upStart.jsp".freeze,
|
20
|
+
:xml_authorize_url => "#{BASE_URL_DEVELOPMENT}/upp/jsp/XML_authorize.jsp".freeze,
|
21
|
+
:xml_settlement_url => "#{BASE_URL_DEVELOPMENT}/upp/jsp/XML_processor.jsp".freeze,
|
22
|
+
:xml_status_url => "#{BASE_URL_DEVELOPMENT}/upp/jsp/XML_status.jsp".freeze
|
23
|
+
}.freeze
|
24
|
+
}.freeze
|
25
|
+
|
26
|
+
attr_reader :environment, :merchant_id, :sign_key, :proxy
|
27
|
+
|
28
|
+
# Configure with following options
|
29
|
+
# * :merchant_id (required)
|
30
|
+
# * :sign_key (defaults to false)
|
31
|
+
# * :environment (defaults to :development, available environments are defined in ENVIRONMENTS)
|
32
|
+
# * :proxy (a hash containing :http_proxyaddr, :http_proxyport, :http_proxyuser, :http_proxypass)
|
33
|
+
def initialize(options = {})
|
34
|
+
@merchant_id = options[:merchant_id]
|
35
|
+
raise ArgumentError.new(":merchant_id is required") unless self.merchant_id
|
36
|
+
self.environment = options[:environment] || DEFAULT_ENVIRONMENT
|
37
|
+
@sign_key = options[:sign_key] || DEFAULT_SIGN_KEY
|
38
|
+
@proxy = options[:proxy] || {}
|
39
|
+
end
|
40
|
+
|
41
|
+
def environment=(environment)
|
42
|
+
environment = environment.try(:to_sym)
|
43
|
+
if ENVIRONMENTS.include?(environment)
|
44
|
+
@environment = environment
|
45
|
+
else
|
46
|
+
raise "Unknown environment '#{environment}'. Available: #{ENVIRONMENTS.join(', ')}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# Access a url, is automatically scoped to environment
|
51
|
+
def url(what)
|
52
|
+
URLS[self.environment][what]
|
53
|
+
end
|
54
|
+
|
55
|
+
def web_transaction(*args)
|
56
|
+
Web::Transaction.new(self, *args)
|
57
|
+
end
|
58
|
+
|
59
|
+
def xml_transaction(*args)
|
60
|
+
XML::Transaction.new(self, *args)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/lib/datatrans/version.rb
CHANGED
@@ -5,11 +5,10 @@ module Datatrans::Web
|
|
5
5
|
include Datatrans::Common
|
6
6
|
|
7
7
|
attr_accessor :request
|
8
|
-
attr_reader :response, :params
|
9
|
-
|
10
|
-
def initialize(params)
|
11
|
-
raise 'Please define Datatrans.sign_key or set it to false!' unless Datatrans.sign_key == false || Datatrans.sign_key.present?
|
8
|
+
attr_reader :response, :params, :datatrans
|
12
9
|
|
10
|
+
def initialize(datatrans, params)
|
11
|
+
@datatrans = datatrans
|
13
12
|
params = params.to_hash
|
14
13
|
params.symbolize_keys!
|
15
14
|
params.reverse_merge!(:reqtype => 'NOA', :useAlias => 'yes', :hiddenMode => 'yes')
|
@@ -17,11 +16,11 @@ module Datatrans::Web
|
|
17
16
|
end
|
18
17
|
|
19
18
|
def signature
|
20
|
-
sign(
|
19
|
+
sign(self.datatrans.merchant_id, params[:amount], params[:currency], params[:refno])
|
21
20
|
end
|
22
21
|
|
23
22
|
def authorize
|
24
|
-
@response = AuthorizeResponse.new(params)
|
23
|
+
@response = AuthorizeResponse.new(datatrans, params)
|
25
24
|
@response.successful?
|
26
25
|
end
|
27
26
|
|
@@ -33,30 +32,6 @@ module Datatrans::Web
|
|
33
32
|
end
|
34
33
|
end
|
35
34
|
end
|
36
|
-
|
37
|
-
module ViewHelper
|
38
|
-
def datatrans_notification_request_hidden_fields(transaction)
|
39
|
-
fields = [
|
40
|
-
hidden_field_tag(:merchantId, Datatrans.merchant_id),
|
41
|
-
hidden_field_tag(:hiddenMode, transaction.params[:hiddenMode]),
|
42
|
-
hidden_field_tag(:reqtype, transaction.params[:reqtype]),
|
43
|
-
hidden_field_tag(:amount, transaction.params[:amount]),
|
44
|
-
hidden_field_tag(:currency, transaction.params[:currency]),
|
45
|
-
hidden_field_tag(:useAlias, transaction.params[:useAlias]),
|
46
|
-
hidden_field_tag(:sign, transaction.signature),
|
47
|
-
hidden_field_tag(:refno, transaction.params[:refno]),
|
48
|
-
hidden_field_tag(:uppCustomerDetails, transaction.params[:uppCustomerDetails]),
|
49
|
-
]
|
50
|
-
|
51
|
-
[:uppCustomerName, :uppCustomerEmail].each do |field_name|
|
52
|
-
if transaction.params[field_name].present?
|
53
|
-
fields << hidden_field_tag(field_name, transaction.params[field_name])
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
fields.join.html_safe
|
58
|
-
end
|
59
|
-
end
|
60
35
|
end
|
61
36
|
|
62
37
|
require 'datatrans/web/transaction/authorize'
|
@@ -1,41 +1,43 @@
|
|
1
1
|
class Datatrans::Web::Transaction
|
2
2
|
class AuthorizeResponse
|
3
|
-
attr_accessor :params
|
4
|
-
|
5
|
-
def initialize(params)
|
3
|
+
attr_accessor :params, :datatrans
|
4
|
+
|
5
|
+
def initialize(datatrans, params)
|
6
|
+
@datatrans = datatrans
|
6
7
|
@params = params
|
7
8
|
end
|
8
|
-
|
9
|
+
|
9
10
|
def successful?
|
10
11
|
raise Datatrans::InvalidSignatureError unless valid_signature?
|
11
12
|
response_code == '01' && response_message == 'Authorized' && !errors_occurred?
|
12
13
|
end
|
13
|
-
|
14
|
+
|
14
15
|
def valid_signature?
|
16
|
+
# TODO: does not make sense... true if errors?
|
15
17
|
return true if errors_occurred? # no sign2 sent on error
|
16
|
-
sign(
|
18
|
+
sign(self.datatrans.merchant_id, params[:amount], params[:currency], params[:uppTransactionId]) == params[:sign2]
|
17
19
|
end
|
18
|
-
|
20
|
+
|
19
21
|
def response_code
|
20
22
|
params[:responseCode] rescue nil
|
21
23
|
end
|
22
|
-
|
24
|
+
|
23
25
|
def response_message
|
24
26
|
params[:responseMessage] rescue nil
|
25
27
|
end
|
26
|
-
|
28
|
+
|
27
29
|
def transaction_id
|
28
|
-
params[:uppTransactionId] rescue nil
|
30
|
+
params[:uppTransactionId] rescue nil
|
29
31
|
end
|
30
|
-
|
32
|
+
|
31
33
|
def reference_number
|
32
|
-
params[:refno] rescue nil
|
34
|
+
params[:refno] rescue nil
|
33
35
|
end
|
34
|
-
|
36
|
+
|
35
37
|
def authorization_code
|
36
38
|
params[:authorizationCode] rescue nil
|
37
39
|
end
|
38
|
-
|
40
|
+
|
39
41
|
def payment_method
|
40
42
|
params[:pmethod] rescue nil
|
41
43
|
end
|
@@ -43,38 +45,38 @@ class Datatrans::Web::Transaction
|
|
43
45
|
def masked_cc
|
44
46
|
params[:maskedCC] rescue nil
|
45
47
|
end
|
46
|
-
|
48
|
+
|
47
49
|
def exp_year
|
48
50
|
params[:expy] rescue nil
|
49
51
|
end
|
50
|
-
|
52
|
+
|
51
53
|
def exp_month
|
52
54
|
params[:expm] rescue nil
|
53
55
|
end
|
54
|
-
|
56
|
+
|
55
57
|
def creditcard_alias
|
56
58
|
params[:aliasCC] rescue nil
|
57
59
|
end
|
58
|
-
|
60
|
+
|
59
61
|
def error_code
|
60
62
|
params[:errorCode] rescue nil
|
61
63
|
end
|
62
|
-
|
64
|
+
|
63
65
|
def error_message
|
64
66
|
params[:errorMessage] rescue nil
|
65
67
|
end
|
66
|
-
|
68
|
+
|
67
69
|
def error_detail
|
68
70
|
params[:errorDetail] rescue nil
|
69
71
|
end
|
70
|
-
|
71
|
-
|
72
|
+
|
73
|
+
|
72
74
|
private
|
73
|
-
|
75
|
+
|
74
76
|
def errors_occurred?
|
75
77
|
error_code || error_message || error_detail
|
76
78
|
end
|
77
|
-
|
79
|
+
|
78
80
|
include Datatrans::Common
|
79
81
|
end
|
80
82
|
end
|