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.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +11 -0
  3. data/.rubocop.yml +10 -0
  4. data/.travis.yml +7 -0
  5. data/README.md +2 -0
  6. data/Rakefile +70 -42
  7. data/cardconnect.gemspec +8 -8
  8. data/lib/cardconnect.rb +1 -4
  9. data/lib/cardconnect/configuration.rb +0 -1
  10. data/lib/cardconnect/connection.rb +12 -16
  11. data/lib/cardconnect/error.rb +1 -1
  12. data/lib/cardconnect/services/authorization/authorization.rb +1 -3
  13. data/lib/cardconnect/services/authorization/authorization_request.rb +6 -5
  14. data/lib/cardconnect/services/authorization/authorization_response.rb +7 -7
  15. data/lib/cardconnect/services/capture/capture.rb +0 -2
  16. data/lib/cardconnect/services/capture/capture_request.rb +4 -5
  17. data/lib/cardconnect/services/capture/capture_response.rb +3 -4
  18. data/lib/cardconnect/services/deposit/deposit.rb +1 -3
  19. data/lib/cardconnect/services/deposit/deposit_request.rb +8 -11
  20. data/lib/cardconnect/services/deposit/deposit_response.rb +4 -5
  21. data/lib/cardconnect/services/inquire/inquire.rb +0 -2
  22. data/lib/cardconnect/services/inquire/inquire_request.rb +3 -4
  23. data/lib/cardconnect/services/inquire/inquire_response.rb +3 -4
  24. data/lib/cardconnect/services/refund/refund.rb +1 -2
  25. data/lib/cardconnect/services/refund/refund_request.rb +5 -6
  26. data/lib/cardconnect/services/refund/refund_response.rb +7 -7
  27. data/lib/cardconnect/services/service_endpoint.rb +10 -14
  28. data/lib/cardconnect/services/settlement_status/settlement_status.rb +0 -2
  29. data/lib/cardconnect/services/settlement_status/settlement_status_request.rb +8 -11
  30. data/lib/cardconnect/services/settlement_status/settlement_status_response.rb +4 -5
  31. data/lib/cardconnect/services/void/void.rb +1 -2
  32. data/lib/cardconnect/services/void/void_request.rb +5 -6
  33. data/lib/cardconnect/services/void/void_response.rb +8 -7
  34. data/lib/cardconnect/utils.rb +0 -2
  35. data/lib/cardconnect/version.rb +1 -1
  36. data/test/api_request_stubs.rb +56 -52
  37. data/test/api_response_stubs.rb +87 -92
  38. data/test/cardconnect/configuration_test.rb +0 -1
  39. data/test/cardconnect/connection_test.rb +1 -1
  40. data/test/cardconnect/services/authorization/authorization_request_test.rb +44 -27
  41. data/test/cardconnect/services/authorization/authorization_response_test.rb +24 -18
  42. data/test/cardconnect/services/authorization/authorization_test.rb +1 -4
  43. data/test/cardconnect/services/capture/capture_request_test.rb +8 -8
  44. data/test/cardconnect/services/capture/capture_response_test.rb +7 -7
  45. data/test/cardconnect/services/capture/capture_test.rb +1 -3
  46. data/test/cardconnect/services/deposit/deposit_request_test.rb +9 -9
  47. data/test/cardconnect/services/deposit/deposit_response_test.rb +17 -15
  48. data/test/cardconnect/services/deposit/deposit_test.rb +4 -4
  49. data/test/cardconnect/services/inquire/inquire_request_test.rb +3 -3
  50. data/test/cardconnect/services/inquire/inquire_response_test.rb +12 -12
  51. data/test/cardconnect/services/inquire/inquire_test.rb +5 -5
  52. data/test/cardconnect/services/refund/refund_request_test.rb +3 -3
  53. data/test/cardconnect/services/refund/refund_response_test.rb +15 -13
  54. data/test/cardconnect/services/refund/refund_test.rb +1 -2
  55. data/test/cardconnect/services/settlement_status/settlement_status_request_test.rb +12 -11
  56. data/test/cardconnect/services/settlement_status/settlement_status_response_test.rb +9 -8
  57. data/test/cardconnect/services/settlement_status/settlement_status_test.rb +4 -4
  58. data/test/cardconnect/services/void/void_request_test.rb +3 -3
  59. data/test/cardconnect/services/void/void_response_test.rb +16 -14
  60. data/test/cardconnect/services/void/void_test.rb +1 -2
  61. data/test/cardconnect_test.rb +0 -1
  62. data/test/test_helper.rb +15 -13
  63. metadata +6 -3
@@ -1,7 +1,6 @@
1
1
  module CardConnect
2
2
  module Service
3
3
  class Void < ServiceEndpoint
4
-
5
4
  # Initializes a Void Service
6
5
  #
7
6
  # @param connection [CardConnect::Connection]
@@ -13,4 +12,4 @@ module CardConnect
13
12
  end
14
13
  end
15
14
  end
16
- end
15
+ end
@@ -3,13 +3,13 @@ module CardConnect
3
3
  class VoidRequest
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 *FIELDS
12
+ attr_accessor(*FIELDS)
13
13
  attr_reader :errors
14
14
 
15
15
  # Initializes a new Void Request
@@ -31,7 +31,7 @@ module CardConnect
31
31
  def payload
32
32
  payload = {}
33
33
  FIELDS.each do |field|
34
- payload.merge!({field => send(field)})
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,15 @@ module CardConnect
3
3
  class VoidResponse
4
4
  include Utils
5
5
 
6
- FIELDS = [:merchid, :amount, :currency, :retref, :authcode, :respcode, :respproc, :respstat, :resptext]
6
+ FIELDS = [:merchid, :amount, :currency, :retref, :authcode,
7
+ :respcode, :respproc, :respstat, :resptext].freeze
7
8
 
8
- attr_accessor *FIELDS
9
+ attr_accessor(*FIELDS)
9
10
  attr_reader :errors
10
11
 
11
- STATUS_APPROVED = 'A'
12
- STATUS_RETRY = 'B'
13
- STATUS_DECLINED = 'C'
12
+ STATUS_APPROVED = 'A'.freeze
13
+ STATUS_RETRY = 'B'.freeze
14
+ STATUS_DECLINED = 'C'.freeze
14
15
 
15
16
  def initialize(response)
16
17
  set_attributes(response, FIELDS)
@@ -25,7 +26,7 @@ module CardConnect
25
26
  def body
26
27
  body = {}
27
28
  FIELDS.each do |attr|
28
- body.merge!({attr => send(attr)})
29
+ body.merge!(attr => send(attr))
29
30
  end
30
31
  body
31
32
  end
@@ -37,4 +38,4 @@ module CardConnect
37
38
  end
38
39
  end
39
40
  end
40
- end
41
+ end
@@ -1,6 +1,5 @@
1
1
  module CardConnect
2
2
  module Utils
3
-
4
3
  def set_attributes(attributes, fields)
5
4
  return if attributes.empty?
6
5
  attributes = symbolize_keys(attributes)
@@ -17,6 +16,5 @@ module CardConnect
17
16
  end
18
17
  symbolized_hash
19
18
  end
20
-
21
19
  end
22
20
  end
@@ -1,3 +1,3 @@
1
1
  module CardConnect
2
- VERSION = "1.0.0"
2
+ VERSION = '1.1.0'.freeze
3
3
  end
@@ -1,72 +1,76 @@
1
- def valid_auth_request
1
+ def valid_auth_request # rubocop:disable Metrics/MethodLength
2
2
  {
3
- "merchid" => "000000927996",
4
- "accttype" => "VISA",
5
- "orderid" => "AB-11-9876",
6
- "account" => "4111111111111111",
7
- "expiry" => "1212",
8
- "amount" => "0",
9
- "currency" => "USD",
10
- "name" => "TOM JONES",
11
- "address" => "123 MAIN STREET",
12
- "city" => "anytown",
13
- "region" => "NY",
14
- "country" => "US",
15
- "postal" => "55555",
16
- "phone" => "3334445555",
17
- "email" => "tom@jones.com",
18
- "ecomind" => "E",
19
- "cvv2" => "123",
20
- "track" => "Y",
21
- "tokenize" => "Y",
22
- "capture" => "Y",
23
- "bankaba" => "1010101",
24
- "termid" => "12345",
25
- "ssnl4" => "1234",
26
- "license" => "CO:1231231234",
27
- "profile" => "Y",
28
- "userfields" => [
29
- {
30
- "name0" => "value0"
31
- },
32
- {
33
- "name1" => "value1"
34
- }
35
- ]
3
+ 'merchid' => '000000927996',
4
+ 'accttype' => 'VISA',
5
+ 'orderid' => 'AB-11-9876',
6
+ 'account' => '4111111111111111',
7
+ 'expiry' => '1212',
8
+ 'amount' => '0',
9
+ 'currency' => 'USD',
10
+ 'name' => 'TOM JONES',
11
+ 'address' => '123 MAIN STREET',
12
+ 'city' => 'anytown',
13
+ 'region' => 'NY',
14
+ 'country' => 'US',
15
+ 'postal' => '55555',
16
+ 'phone' => '3334445555',
17
+ 'email' => 'tom@jones.com',
18
+ 'ecomind' => 'E',
19
+ 'cvv2' => '123',
20
+ 'track' => 'Y',
21
+ 'tokenize' => 'Y',
22
+ 'capture' => 'Y',
23
+ 'bankaba' => '1010101',
24
+ 'termid' => '12345',
25
+ 'ssnl4' => '1234',
26
+ 'license' => 'CO:1231231234',
27
+ 'profile' => 'Y',
28
+ 'ponumber' => '1234',
29
+ 'authcode' => '123456',
30
+ 'invoiceid' => '000000000001',
31
+ 'taxamnt' => '0',
32
+ 'userfields' => [
33
+ {
34
+ 'name0' => 'value0'
35
+ },
36
+ {
37
+ 'name1' => 'value1'
38
+ }
39
+ ]
36
40
  }
37
41
  end
38
42
 
39
43
  def valid_capture_request
40
44
  {
41
- "retref" => "288002073633",
42
- "amount" => "596.00",
43
- "taxamnt" => "40.00",
44
- "merchid" => "000000927996",
45
- "ponumber" => "PO-0736332",
46
- "authcode" => "046221",
47
- "invoiceid" => "7890"
45
+ 'retref' => '288002073633',
46
+ 'amount' => '596.00',
47
+ 'taxamnt' => '40.00',
48
+ 'merchid' => '000000927996',
49
+ 'ponumber' => 'PO-0736332',
50
+ 'authcode' => '046221',
51
+ 'invoiceid' => '7890'
48
52
  }
49
53
  end
50
54
 
51
55
  def valid_inquire_request
52
56
  {
53
- 'retref' => '288002073633',
54
- 'merchid' => '000000927996'
57
+ 'retref' => '288002073633',
58
+ 'merchid' => '000000927996'
55
59
  }
56
60
  end
57
61
 
58
62
  def valid_settlestat_request
59
63
  {
60
- "merchid" => "000000927996",
61
- "date" => "0110"
64
+ 'merchid' => '000000927996',
65
+ 'date' => '0110'
62
66
  }
63
67
  end
64
68
 
65
69
  def valid_refund_request
66
70
  {
67
- "retref" => "288009185241",
68
- "merchid" => "000000927996",
69
- "amount" => "59.60"
71
+ 'retref' => '288009185241',
72
+ 'merchid' => '000000927996',
73
+ 'amount' => '59.60'
70
74
  }
71
75
  end
72
76
 
@@ -76,8 +80,8 @@ end
76
80
 
77
81
  def valid_void_request
78
82
  {
79
- "retref" => "288013185633",
80
- "merchid" => "000000927996",
81
- "amount" => "101"
83
+ 'retref' => '288013185633',
84
+ 'merchid' => '000000927996',
85
+ 'amount' => '101'
82
86
  }
83
- end
87
+ end
@@ -1,120 +1,115 @@
1
- def valid_auth_response
1
+ def valid_auth_response # rubocop:disable Metrics/MethodLength
2
2
  {
3
- "respstat" => "A",
4
- "account" => "41XXXXXXXXXX1111",
5
- "token" => "9419786452781111",
6
- "retref" => "343005123105",
7
- "amount" => "111",
8
- "merchid" => "020594000000",
9
- "respcode" => "00",
10
- "resptext" => "Approved",
11
- "avsresp" => "9",
12
- "cvvresp" => "M",
13
- "authcode" => "046221",
14
- "respproc" => "FNOR",
15
- "commcard" => "N"
3
+ 'respstat' => 'A',
4
+ 'account' => '41XXXXXXXXXX1111',
5
+ 'token' => '9419786452781111',
6
+ 'retref' => '343005123105',
7
+ 'amount' => '111',
8
+ 'merchid' => '020594000000',
9
+ 'respcode' => '00',
10
+ 'resptext' => 'Approved',
11
+ 'avsresp' => '9',
12
+ 'cvvresp' => 'M',
13
+ 'authcode' => '046221',
14
+ 'respproc' => 'FNOR',
15
+ 'commcard' => 'N',
16
+ 'profileid' => '12345678'
16
17
  }
17
18
  end
18
19
 
19
20
  def valid_capture_response
20
21
  {
21
- "amount" => "596.00",
22
- "setlstat" => "Pending",
23
- "retref" => "288002073633",
24
- "merchid" => "000000927996",
25
- "account" => "41XXXXXXXXXX4113"
22
+ 'amount' => '596.00',
23
+ 'setlstat' => 'Pending',
24
+ 'retref' => '288002073633',
25
+ 'merchid' => '000000927996',
26
+ 'account' => '41XXXXXXXXXX4113'
26
27
  }
27
28
  end
28
29
 
29
- def valid_inquire_response
30
+ def valid_inquire_response # rubocop:disable Metrics/MethodLength
30
31
  {
31
- "amount" => "596.00",
32
- "resptext" => "Approval",
33
- "setlstat" => "NOTCAPTURED",
34
- "respcode" => "00",
35
- "retref" => "288015190411",
36
- "merchid" => "000000927996",
37
- "account" => "41XXXXXXXXXX4113",
38
- "respproc" => "FNOR",
39
- "respstat" => "A",
40
- "currency" => "USD"
32
+ 'amount' => '596.00',
33
+ 'resptext' => 'Approval',
34
+ 'setlstat' => 'NOTCAPTURED',
35
+ 'respcode' => '00',
36
+ 'retref' => '288015190411',
37
+ 'merchid' => '000000927996',
38
+ 'account' => '41XXXXXXXXXX4113',
39
+ 'respproc' => 'FNOR',
40
+ 'respstat' => 'A',
41
+ 'currency' => 'USD'
41
42
  }
42
43
  end
43
44
 
44
- def valid_settlestat_response
45
+ def valid_settlestat_response # rubocop:disable Metrics/MethodLength
45
46
  [
46
- {
47
- "txns" => [
48
- {
49
- "setlstat" => "N",
50
- "retref" => "179001161341"
51
- },
52
- {
53
- "setlstat" => "Y",
54
- "retref" => "179002161341"
55
- }
56
- ],
57
- "batchid" => "71742042",
58
- "hoststat" => "GB",
59
- "merchid" => "000000927996",
60
- "hostbatch" => "71742041",
61
- "respproc" => "FNOR"
62
- }
47
+ {
48
+ 'txns' => [
49
+ { 'setlstat' => 'N', 'retref' => '179001161341' },
50
+ { 'setlstat' => 'Y', 'retref' => '179002161341' }
51
+ ],
52
+ 'batchid' => '71742042',
53
+ 'hoststat' => 'GB',
54
+ 'merchid' => '000000927996',
55
+ 'hostbatch' => '71742041',
56
+ 'respproc' => 'FNOR'
57
+ }
63
58
  ]
64
59
  end
65
60
 
66
61
  def valid_refund_response
67
62
  {
68
- "amount" => "59.60",
69
- "resptext" => "Approval",
70
- "authcode" => "REFUND",
71
- "respcode" => "00",
72
- "retref" => "288010185242",
73
- "merchid" => "000000927996",
74
- "respproc" => "PPS",
75
- "respstat" => "A"
63
+ 'amount' => '59.60',
64
+ 'resptext' => 'Approval',
65
+ 'authcode' => 'REFUND',
66
+ 'respcode' => '00',
67
+ 'retref' => '288010185242',
68
+ 'merchid' => '000000927996',
69
+ 'respproc' => 'PPS',
70
+ 'respstat' => 'A'
76
71
  }
77
72
  end
78
73
 
79
- def valid_deposit_response
74
+ def valid_deposit_response # rubocop:disable Metrics/MethodLength
80
75
  [
81
- {
82
- "accttype" => "VI",
83
- "postdate" => "20121009",
84
- "cbakamnt" => "0.00",
85
- "feeamnt" => "0.55",
86
- "currency" => "USD",
87
- "amount" => "11.00",
88
- "respproc" => "FNOR",
89
- "txns" => [
90
- {
91
- "merchbatch" => 92821429,
92
- "retref" => "282005142924",
93
- "hostbatch" => "1429",
94
- "feeamnt" => "0.00",
95
- "action" => "DEB",
96
- "depamnt" => "11.00"
97
- }
98
- ],
99
- "resptext" => "Successful or something",
100
- "depositid" => 7,
101
- "merchid" => "000000927996",
102
- "action" => "DEB",
103
- "actdate" => "20121008",
104
- }
76
+ {
77
+ 'accttype' => 'VI',
78
+ 'postdate' => '20121009',
79
+ 'cbakamnt' => '0.00',
80
+ 'feeamnt' => '0.55',
81
+ 'currency' => 'USD',
82
+ 'amount' => '11.00',
83
+ 'respproc' => 'FNOR',
84
+ 'txns' => [
85
+ {
86
+ 'merchbatch' => 92821429,
87
+ 'retref' => '282005142924',
88
+ 'hostbatch' => '1429',
89
+ 'feeamnt' => '0.00',
90
+ 'action' => 'DEB',
91
+ 'depamnt' => '11.00'
92
+ }
93
+ ],
94
+ 'resptext' => 'Successful or something',
95
+ 'depositid' => 7,
96
+ 'merchid' => '000000927996',
97
+ 'action' => 'DEB',
98
+ 'actdate' => '20121008'
99
+ }
105
100
  ]
106
101
  end
107
102
 
108
- def valid_void_response
103
+ def valid_void_response # rubocop:disable Metrics/MethodLength
109
104
  {
110
- "amount" => "1.01",
111
- "resptext" => "Approval",
112
- "authcode" => "REVERS",
113
- "respcode" => "00",
114
- "retref" => "288013185633",
115
- "merchid" => "000000927996",
116
- "respproc" => "FNOR",
117
- "respstat" => "A",
118
- "currency" => "USD"
105
+ 'amount' => '1.01',
106
+ 'resptext' => 'Approval',
107
+ 'authcode' => 'REVERS',
108
+ 'respcode' => '00',
109
+ 'retref' => '288013185633',
110
+ 'merchid' => '000000927996',
111
+ 'respproc' => 'FNOR',
112
+ 'respstat' => 'A',
113
+ 'currency' => 'USD'
119
114
  }
120
- end
115
+ end
@@ -24,5 +24,4 @@ describe CardConnect::Configuration do
24
24
  it 'must respond to endpoint' do
25
25
  @config.must_respond_to :endpoint
26
26
  end
27
-
28
27
  end