cardconnect 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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