cardconnect 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +11 -0
- data/.rubocop.yml +10 -0
- data/.travis.yml +7 -0
- data/README.md +2 -0
- data/Rakefile +70 -42
- data/cardconnect.gemspec +8 -8
- data/lib/cardconnect.rb +1 -4
- data/lib/cardconnect/configuration.rb +0 -1
- data/lib/cardconnect/connection.rb +12 -16
- data/lib/cardconnect/error.rb +1 -1
- data/lib/cardconnect/services/authorization/authorization.rb +1 -3
- data/lib/cardconnect/services/authorization/authorization_request.rb +6 -5
- data/lib/cardconnect/services/authorization/authorization_response.rb +7 -7
- data/lib/cardconnect/services/capture/capture.rb +0 -2
- data/lib/cardconnect/services/capture/capture_request.rb +4 -5
- data/lib/cardconnect/services/capture/capture_response.rb +3 -4
- data/lib/cardconnect/services/deposit/deposit.rb +1 -3
- data/lib/cardconnect/services/deposit/deposit_request.rb +8 -11
- data/lib/cardconnect/services/deposit/deposit_response.rb +4 -5
- data/lib/cardconnect/services/inquire/inquire.rb +0 -2
- data/lib/cardconnect/services/inquire/inquire_request.rb +3 -4
- data/lib/cardconnect/services/inquire/inquire_response.rb +3 -4
- data/lib/cardconnect/services/refund/refund.rb +1 -2
- data/lib/cardconnect/services/refund/refund_request.rb +5 -6
- data/lib/cardconnect/services/refund/refund_response.rb +7 -7
- data/lib/cardconnect/services/service_endpoint.rb +10 -14
- data/lib/cardconnect/services/settlement_status/settlement_status.rb +0 -2
- data/lib/cardconnect/services/settlement_status/settlement_status_request.rb +8 -11
- data/lib/cardconnect/services/settlement_status/settlement_status_response.rb +4 -5
- data/lib/cardconnect/services/void/void.rb +1 -2
- data/lib/cardconnect/services/void/void_request.rb +5 -6
- data/lib/cardconnect/services/void/void_response.rb +8 -7
- data/lib/cardconnect/utils.rb +0 -2
- data/lib/cardconnect/version.rb +1 -1
- data/test/api_request_stubs.rb +56 -52
- data/test/api_response_stubs.rb +87 -92
- data/test/cardconnect/configuration_test.rb +0 -1
- data/test/cardconnect/connection_test.rb +1 -1
- data/test/cardconnect/services/authorization/authorization_request_test.rb +44 -27
- data/test/cardconnect/services/authorization/authorization_response_test.rb +24 -18
- data/test/cardconnect/services/authorization/authorization_test.rb +1 -4
- data/test/cardconnect/services/capture/capture_request_test.rb +8 -8
- data/test/cardconnect/services/capture/capture_response_test.rb +7 -7
- data/test/cardconnect/services/capture/capture_test.rb +1 -3
- data/test/cardconnect/services/deposit/deposit_request_test.rb +9 -9
- data/test/cardconnect/services/deposit/deposit_response_test.rb +17 -15
- data/test/cardconnect/services/deposit/deposit_test.rb +4 -4
- data/test/cardconnect/services/inquire/inquire_request_test.rb +3 -3
- data/test/cardconnect/services/inquire/inquire_response_test.rb +12 -12
- data/test/cardconnect/services/inquire/inquire_test.rb +5 -5
- data/test/cardconnect/services/refund/refund_request_test.rb +3 -3
- data/test/cardconnect/services/refund/refund_response_test.rb +15 -13
- data/test/cardconnect/services/refund/refund_test.rb +1 -2
- data/test/cardconnect/services/settlement_status/settlement_status_request_test.rb +12 -11
- data/test/cardconnect/services/settlement_status/settlement_status_response_test.rb +9 -8
- data/test/cardconnect/services/settlement_status/settlement_status_test.rb +4 -4
- data/test/cardconnect/services/void/void_request_test.rb +3 -3
- data/test/cardconnect/services/void/void_response_test.rb +16 -14
- data/test/cardconnect/services/void/void_test.rb +1 -2
- data/test/cardconnect_test.rb +0 -1
- data/test/test_helper.rb +15 -13
- metadata +6 -3
@@ -1,7 +1,6 @@
|
|
1
1
|
module CardConnect
|
2
2
|
module Service
|
3
3
|
class Capture < ServiceEndpoint
|
4
|
-
|
5
4
|
# Initializes a Capture Service
|
6
5
|
#
|
7
6
|
# @param connection [CardConnect::Connection]
|
@@ -11,7 +10,6 @@ module CardConnect
|
|
11
10
|
@resource_name = '/capture'
|
12
11
|
@rest_method = 'put'
|
13
12
|
end
|
14
|
-
|
15
13
|
end
|
16
14
|
end
|
17
15
|
end
|
@@ -3,13 +3,13 @@ module CardConnect
|
|
3
3
|
class CaptureRequest
|
4
4
|
include Utils
|
5
5
|
|
6
|
-
REQUIRED_FIELDS = [:merchid, :retref]
|
6
|
+
REQUIRED_FIELDS = [:merchid, :retref].freeze
|
7
7
|
|
8
|
-
OPTIONAL_FIELDS = [:authcode, :amount, :invoiceid, :ponumber, :taxamnt]
|
8
|
+
OPTIONAL_FIELDS = [:authcode, :amount, :invoiceid, :ponumber, :taxamnt].freeze
|
9
9
|
|
10
10
|
FIELDS = REQUIRED_FIELDS + OPTIONAL_FIELDS
|
11
11
|
|
12
|
-
attr_accessor
|
12
|
+
attr_accessor(*FIELDS)
|
13
13
|
attr_reader :errors
|
14
14
|
|
15
15
|
# Initializes a new Capture Request
|
@@ -31,7 +31,7 @@ module CardConnect
|
|
31
31
|
def payload
|
32
32
|
payload = {}
|
33
33
|
FIELDS.each do |field|
|
34
|
-
payload.merge!(
|
34
|
+
payload.merge!(field => send(field))
|
35
35
|
end
|
36
36
|
payload
|
37
37
|
end
|
@@ -44,7 +44,6 @@ module CardConnect
|
|
44
44
|
value.nil? || value.empty? ? errors.push("#{field.capitalize} is missing") : next
|
45
45
|
end
|
46
46
|
end
|
47
|
-
|
48
47
|
end
|
49
48
|
end
|
50
49
|
end
|
@@ -3,9 +3,9 @@ module CardConnect
|
|
3
3
|
class CaptureResponse
|
4
4
|
include Utils
|
5
5
|
|
6
|
-
FIELDS = [:merchid, :account, :amount, :retref, :setlstat]
|
6
|
+
FIELDS = [:merchid, :account, :amount, :retref, :setlstat].freeze
|
7
7
|
|
8
|
-
attr_accessor
|
8
|
+
attr_accessor(*FIELDS)
|
9
9
|
|
10
10
|
def initialize(response)
|
11
11
|
set_attributes(response, FIELDS)
|
@@ -14,11 +14,10 @@ module CardConnect
|
|
14
14
|
def body
|
15
15
|
body = {}
|
16
16
|
FIELDS.each do |attr|
|
17
|
-
body.merge!(
|
17
|
+
body.merge!(attr => send(attr))
|
18
18
|
end
|
19
19
|
body
|
20
20
|
end
|
21
|
-
|
22
21
|
end
|
23
22
|
end
|
24
23
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module CardConnect
|
2
2
|
module Service
|
3
3
|
class Deposit < ServiceEndpoint
|
4
|
-
|
5
4
|
# Initializes a Deposit Service
|
6
5
|
#
|
7
6
|
# @param connection [CardConnect::Connection]
|
@@ -11,7 +10,6 @@ module CardConnect
|
|
11
10
|
@resource_name = '/deposit'
|
12
11
|
@rest_method = 'get'
|
13
12
|
end
|
14
|
-
|
15
13
|
end
|
16
14
|
end
|
17
|
-
end
|
15
|
+
end
|
@@ -5,11 +5,11 @@ module CardConnect
|
|
5
5
|
class DepositRequest
|
6
6
|
include Utils
|
7
7
|
|
8
|
-
REQUIRED_FIELDS = [:merchid, :date]
|
8
|
+
REQUIRED_FIELDS = [:merchid, :date].freeze
|
9
9
|
|
10
10
|
FIELDS = REQUIRED_FIELDS
|
11
11
|
|
12
|
-
attr_accessor
|
12
|
+
attr_accessor(*FIELDS)
|
13
13
|
attr_reader :errors
|
14
14
|
|
15
15
|
# Initializes a new Deposit Request
|
@@ -29,7 +29,7 @@ module CardConnect
|
|
29
29
|
|
30
30
|
# Builds the request payload
|
31
31
|
def payload
|
32
|
-
payload =
|
32
|
+
payload = '?'
|
33
33
|
FIELDS.each do |field|
|
34
34
|
payload += "#{field}=#{send(field)}&"
|
35
35
|
end
|
@@ -51,14 +51,11 @@ module CardConnect
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def validate_date_format
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
errors.push("Date format is invalid. Please use MMDD format")
|
59
|
-
end
|
54
|
+
raise if date.length != 4
|
55
|
+
Date.parse(date, '%m%d')
|
56
|
+
rescue
|
57
|
+
errors.push('Date format is invalid. Please use MMDD format')
|
60
58
|
end
|
61
|
-
|
62
59
|
end
|
63
60
|
end
|
64
|
-
end
|
61
|
+
end
|
@@ -4,9 +4,9 @@ module CardConnect
|
|
4
4
|
include Utils
|
5
5
|
|
6
6
|
FIELDS = [:depositid, :merchid, :respproc, :accttype, :action, :actdate,
|
7
|
-
:postdate, :currency, :amount, :feeamnt, :cbakamnt, :resptext, :txns]
|
7
|
+
:postdate, :currency, :amount, :feeamnt, :cbakamnt, :resptext, :txns].freeze
|
8
8
|
|
9
|
-
attr_accessor
|
9
|
+
attr_accessor(*FIELDS)
|
10
10
|
attr_reader :errors
|
11
11
|
|
12
12
|
def initialize(response)
|
@@ -23,7 +23,7 @@ module CardConnect
|
|
23
23
|
def body
|
24
24
|
body = {}
|
25
25
|
FIELDS.each do |attr|
|
26
|
-
body.merge!(
|
26
|
+
body.merge!(attr => send(attr))
|
27
27
|
end
|
28
28
|
body
|
29
29
|
end
|
@@ -32,9 +32,8 @@ module CardConnect
|
|
32
32
|
|
33
33
|
def parse_transactions
|
34
34
|
return if txns.nil?
|
35
|
-
txns.each_with_index { |txn, i|
|
35
|
+
txns.each_with_index { |txn, i| txns[i] = symbolize_keys(txn) }
|
36
36
|
end
|
37
|
-
|
38
37
|
end
|
39
38
|
end
|
40
39
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module CardConnect
|
2
2
|
module Service
|
3
3
|
class Inquire < ServiceEndpoint
|
4
|
-
|
5
4
|
# Initializes a Inquire Service
|
6
5
|
#
|
7
6
|
# @param connection [CardConnect::Connection]
|
@@ -11,7 +10,6 @@ module CardConnect
|
|
11
10
|
@resource_name = '/inquire'
|
12
11
|
@rest_method = 'get'
|
13
12
|
end
|
14
|
-
|
15
13
|
end
|
16
14
|
end
|
17
15
|
end
|
@@ -3,11 +3,11 @@ module CardConnect
|
|
3
3
|
class InquireRequest
|
4
4
|
include Utils
|
5
5
|
|
6
|
-
REQUIRED_FIELDS = [:merchid, :retref]
|
6
|
+
REQUIRED_FIELDS = [:merchid, :retref].freeze
|
7
7
|
|
8
8
|
FIELDS = REQUIRED_FIELDS
|
9
9
|
|
10
|
-
attr_accessor
|
10
|
+
attr_accessor(*FIELDS)
|
11
11
|
attr_reader :errors
|
12
12
|
|
13
13
|
# Initializes a new Inquire Request
|
@@ -38,7 +38,6 @@ module CardConnect
|
|
38
38
|
value.nil? || value.empty? ? errors.push("#{field.capitalize} is missing") : next
|
39
39
|
end
|
40
40
|
end
|
41
|
-
|
42
41
|
end
|
43
42
|
end
|
44
|
-
end
|
43
|
+
end
|
@@ -4,9 +4,9 @@ module CardConnect
|
|
4
4
|
include Utils
|
5
5
|
|
6
6
|
FIELDS = [:merchid, :account, :amount, :currency, :retref, :respcode,
|
7
|
-
:respproc, :respstat, :resptext, :setlstat]
|
7
|
+
:respproc, :respstat, :resptext, :setlstat].freeze
|
8
8
|
|
9
|
-
attr_accessor
|
9
|
+
attr_accessor(*FIELDS)
|
10
10
|
attr_reader :errors
|
11
11
|
|
12
12
|
def initialize(response)
|
@@ -21,11 +21,10 @@ module CardConnect
|
|
21
21
|
def body
|
22
22
|
body = {}
|
23
23
|
FIELDS.each do |attr|
|
24
|
-
body.merge!(
|
24
|
+
body.merge!(attr => send(attr))
|
25
25
|
end
|
26
26
|
body
|
27
27
|
end
|
28
|
-
|
29
28
|
end
|
30
29
|
end
|
31
30
|
end
|
@@ -3,13 +3,13 @@ module CardConnect
|
|
3
3
|
class RefundRequest
|
4
4
|
include Utils
|
5
5
|
|
6
|
-
REQUIRED_FIELDS = [:merchid, :retref]
|
6
|
+
REQUIRED_FIELDS = [:merchid, :retref].freeze
|
7
7
|
|
8
|
-
OPTIONAL_FIELDS = [:amount]
|
8
|
+
OPTIONAL_FIELDS = [:amount].freeze
|
9
9
|
|
10
10
|
FIELDS = REQUIRED_FIELDS + OPTIONAL_FIELDS
|
11
11
|
|
12
|
-
attr_accessor
|
12
|
+
attr_accessor(*FIELDS)
|
13
13
|
attr_reader :errors
|
14
14
|
|
15
15
|
# Initializes a new Refund Request
|
@@ -31,7 +31,7 @@ module CardConnect
|
|
31
31
|
def payload
|
32
32
|
payload = {}
|
33
33
|
FIELDS.each do |field|
|
34
|
-
payload.merge!(
|
34
|
+
payload.merge!(field => send(field))
|
35
35
|
end
|
36
36
|
payload
|
37
37
|
end
|
@@ -44,7 +44,6 @@ module CardConnect
|
|
44
44
|
value.nil? || value.empty? ? errors.push("#{field.capitalize} is missing") : next
|
45
45
|
end
|
46
46
|
end
|
47
|
-
|
48
47
|
end
|
49
48
|
end
|
50
|
-
end
|
49
|
+
end
|
@@ -3,14 +3,14 @@ module CardConnect
|
|
3
3
|
class RefundResponse
|
4
4
|
include Utils
|
5
5
|
|
6
|
-
FIELDS = [:merchid, :amount, :retref, :authcode, :respcode, :respproc, :respstat, :resptext]
|
6
|
+
FIELDS = [:merchid, :amount, :retref, :authcode, :respcode, :respproc, :respstat, :resptext].freeze
|
7
7
|
|
8
|
-
attr_accessor
|
8
|
+
attr_accessor(*FIELDS)
|
9
9
|
attr_reader :errors
|
10
10
|
|
11
|
-
STATUS_APPROVED = 'A'
|
12
|
-
STATUS_RETRY = 'B'
|
13
|
-
STATUS_DECLINED = 'C'
|
11
|
+
STATUS_APPROVED = 'A'.freeze
|
12
|
+
STATUS_RETRY = 'B'.freeze
|
13
|
+
STATUS_DECLINED = 'C'.freeze
|
14
14
|
|
15
15
|
def initialize(response)
|
16
16
|
set_attributes(response, FIELDS)
|
@@ -25,7 +25,7 @@ module CardConnect
|
|
25
25
|
def body
|
26
26
|
body = {}
|
27
27
|
FIELDS.each do |attr|
|
28
|
-
body.merge!(
|
28
|
+
body.merge!(attr => send(attr))
|
29
29
|
end
|
30
30
|
body
|
31
31
|
end
|
@@ -37,4 +37,4 @@ module CardConnect
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
40
|
-
end
|
40
|
+
end
|
@@ -22,12 +22,12 @@ module CardConnect
|
|
22
22
|
|
23
23
|
def build_request(params = {})
|
24
24
|
req = symbolize_keys(params)
|
25
|
-
req = req.merge(merchid: @config.merchant_id) unless req.
|
25
|
+
req = req.merge(merchid: @config.merchant_id) unless req.key?(:merchid)
|
26
26
|
@request = request_class.new(req)
|
27
27
|
end
|
28
28
|
|
29
29
|
def submit
|
30
|
-
raise CardConnect::Error,
|
30
|
+
raise CardConnect::Error, 'Request has not been built' if request.nil?
|
31
31
|
@response = send(rest_method)
|
32
32
|
end
|
33
33
|
|
@@ -38,19 +38,15 @@ module CardConnect
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def get
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
puts e.message
|
45
|
-
end
|
41
|
+
response_class.new(connection.get(path + request.payload).body)
|
42
|
+
rescue Faraday::ResourceNotFound => e
|
43
|
+
puts e.message
|
46
44
|
end
|
47
45
|
|
48
46
|
def put
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
puts e.message
|
53
|
-
end
|
47
|
+
response_class.new(connection.put(path, request.payload).body)
|
48
|
+
rescue Faraday::ResourceNotFound => e
|
49
|
+
puts e.message
|
54
50
|
end
|
55
51
|
|
56
52
|
def request_class
|
@@ -62,8 +58,8 @@ module CardConnect
|
|
62
58
|
end
|
63
59
|
|
64
60
|
def string_to_class(str)
|
65
|
-
str.split('::').inject(Object) { |
|
61
|
+
str.split('::').inject(Object) { |a, e| a.const_get(e) }
|
66
62
|
end
|
67
63
|
end
|
68
64
|
end
|
69
|
-
end
|
65
|
+
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module CardConnect
|
2
2
|
module Service
|
3
3
|
class SettlementStatus < ServiceEndpoint
|
4
|
-
|
5
4
|
# Initializes a Settlement Status Service
|
6
5
|
#
|
7
6
|
# @param connection [CardConnect::Connection]
|
@@ -11,7 +10,6 @@ module CardConnect
|
|
11
10
|
@resource_name = '/settlestat'
|
12
11
|
@rest_method = 'get'
|
13
12
|
end
|
14
|
-
|
15
13
|
end
|
16
14
|
end
|
17
15
|
end
|
@@ -5,11 +5,11 @@ module CardConnect
|
|
5
5
|
class SettlementStatusRequest
|
6
6
|
include Utils
|
7
7
|
|
8
|
-
REQUIRED_FIELDS = [:merchid, :date]
|
8
|
+
REQUIRED_FIELDS = [:merchid, :date].freeze
|
9
9
|
|
10
10
|
FIELDS = REQUIRED_FIELDS
|
11
11
|
|
12
|
-
attr_accessor
|
12
|
+
attr_accessor(*FIELDS)
|
13
13
|
attr_reader :errors
|
14
14
|
|
15
15
|
# Initializes a new Settlement Status Request
|
@@ -29,7 +29,7 @@ module CardConnect
|
|
29
29
|
|
30
30
|
# Builds the request payload
|
31
31
|
def payload
|
32
|
-
payload =
|
32
|
+
payload = '?'
|
33
33
|
FIELDS.each do |field|
|
34
34
|
payload += "#{field}=#{send(field)}&"
|
35
35
|
end
|
@@ -51,14 +51,11 @@ module CardConnect
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def validate_date_format
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
errors.push("Date format is invalid. Please use MMDD format")
|
59
|
-
end
|
54
|
+
raise if date.length != 4
|
55
|
+
Date.parse(date, '%m%d')
|
56
|
+
rescue
|
57
|
+
errors.push('Date format is invalid. Please use MMDD format')
|
60
58
|
end
|
61
|
-
|
62
59
|
end
|
63
60
|
end
|
64
|
-
end
|
61
|
+
end
|
@@ -3,9 +3,9 @@ module CardConnect
|
|
3
3
|
class SettlementStatusResponse
|
4
4
|
include Utils
|
5
5
|
|
6
|
-
FIELDS = [:merchid, :batchid, :hoststat, :hostbatch, :respproc, :txns]
|
6
|
+
FIELDS = [:merchid, :batchid, :hoststat, :hostbatch, :respproc, :txns].freeze
|
7
7
|
|
8
|
-
attr_accessor
|
8
|
+
attr_accessor(*FIELDS)
|
9
9
|
attr_reader :errors
|
10
10
|
|
11
11
|
def initialize(response)
|
@@ -22,7 +22,7 @@ module CardConnect
|
|
22
22
|
def body
|
23
23
|
body = {}
|
24
24
|
FIELDS.each do |attr|
|
25
|
-
body.merge!(
|
25
|
+
body.merge!(attr => send(attr))
|
26
26
|
end
|
27
27
|
body
|
28
28
|
end
|
@@ -31,9 +31,8 @@ module CardConnect
|
|
31
31
|
|
32
32
|
def parse_transactions
|
33
33
|
return if txns.nil?
|
34
|
-
txns.each_with_index { |txn, i|
|
34
|
+
txns.each_with_index { |txn, i| txns[i] = symbolize_keys(txn) }
|
35
35
|
end
|
36
|
-
|
37
36
|
end
|
38
37
|
end
|
39
38
|
end
|