cardconnect 1.0.0 → 1.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 +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
|