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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a8573cecba2cb8cac90e17b0ce8ca92e73280253
4
- data.tar.gz: 5ca366ccec6c686f6e2e19fd159e4761cd93825e
3
+ metadata.gz: 9cdcd8db1cec80bc8985ed0cb3a25e7bf3eb9751
4
+ data.tar.gz: 321b5a61678fa64c20785b23cafac3a4ef587bbe
5
5
  SHA512:
6
- metadata.gz: 5065e73f0951b0fe238b049dd333f8a1f3fd4c6ca2f328858b0f869a3c9e344bc8a3a42bb7ed916050c3ea1609b56529b9fc60d77086485031872b14cb401d85
7
- data.tar.gz: 3561424fc95e5a43e0d2c51db6673c6cedabd8354effa6f9f76abbdd2e7e35c6ff0f4093f9132859ea3cc1e20518fc6b28a5f40ef2db976cad7316abc17f69a9
6
+ metadata.gz: 293887a01cfce95fde55de4495e2f2670dbec81aa3bd2af6a9d639d05b5946ca25082c2ce8163b976fa6372bfd3423f7031be48dd9d07d8a1f46a8ecf4496a4b
7
+ data.tar.gz: 46b5f0873300fb5aabe005e584356caf510938c7ed4d98d821b1642908b5465c97e1ea37f382c6a7df193ac2c23b7986f52adf0a466bfb5ffaaf71e47c55dfc9
@@ -0,0 +1,11 @@
1
+ ---
2
+ engines:
3
+ fixme:
4
+ enabled: true
5
+ rubocop:
6
+ enabled: true
7
+ ratings:
8
+ paths:
9
+ - '**.rb'
10
+ exclude_paths:
11
+ - test/**/*
@@ -0,0 +1,10 @@
1
+ Metrics/LineLength:
2
+ Max: 110
3
+ Documentation:
4
+ Enabled: false
5
+ Style/NumericLiterals:
6
+ MinDigits: 10
7
+ AllCops:
8
+ Exclude:
9
+ - LICENSE.txt
10
+ - README.md
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.0
4
+ - 1.9.3
5
+ addons:
6
+ code_climate:
7
+ repo_token: 77ed2a0fb6a3c8841131b45bcf6beae12ead240bb0b127d1a064d069bfbe9376
data/README.md CHANGED
@@ -3,6 +3,8 @@
3
3
  CardConnect API Ruby Wrapper
4
4
 
5
5
  [![Gem Version](https://badge.fury.io/rb/cardconnect.svg)](http://badge.fury.io/rb/cardconnect)
6
+ [![Code Climate](https://codeclimate.com/github/mobilecause/cardconnect/badges/gpa.svg)](https://codeclimate.com/github/mobilecause/cardconnect)
7
+ [![Build Status](https://travis-ci.org/mobilecause/cardconnect.svg?branch=master)](https://travis-ci.org/mobilecause/cardconnect)
6
8
 
7
9
  ## Installation
8
10
 
data/Rakefile CHANGED
@@ -1,15 +1,15 @@
1
- require "bundler/gem_tasks"
2
-
1
+ require 'bundler/gem_tasks'
3
2
  require 'rake/testtask'
3
+ require 'cardconnect'
4
+
5
+ task default: [:test]
4
6
 
5
7
  Rake::TestTask.new do |t|
6
8
  t.libs << 'test'
7
- t.pattern = "test/**/*_test.rb"
9
+ t.pattern = 'test/**/*_test.rb'
8
10
  end
9
11
 
10
12
  namespace :cardconnect do
11
- require 'cardconnect'
12
-
13
13
  def cardconnect_configure(args)
14
14
  CardConnect.configure do |config|
15
15
  config.merchant_id = args.merchant_id
@@ -19,28 +19,57 @@ namespace :cardconnect do
19
19
  end
20
20
  end
21
21
 
22
- desc "Ping the API Server"
23
- task :ping, [:merchant_id, :api_username, :api_password, :api_endpoint] do |t, args|
22
+ desc 'Ping the API Server'
23
+ task :ping, [:merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
24
24
  cardconnect_configure(args)
25
25
 
26
26
  response = CardConnect::Connection.new.ping_server
27
27
  puts response.body
28
28
  end
29
29
 
30
- desc "Simulate an Authorization request"
31
- task :authorize, [:capture?, :merchant_id, :api_username, :api_password, :api_endpoint] do |t, args|
30
+ desc 'Simulate an Authorization request'
31
+ task :authorize, [:merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
32
32
  cardconnect_configure(args)
33
33
 
34
34
  auth_params = {
35
- 'account' => '4111111111111111',
36
- "accttype" => "VISA",
37
- 'expiry' => '1220',
38
- 'amount' => '1000',
39
- 'currency' => 'USD',
40
- "tokenize" => "Y"
35
+ 'account' => '4111111111111111',
36
+ 'accttype' => 'VISA',
37
+ 'expiry' => '1220',
38
+ 'amount' => '1000',
39
+ 'currency' => 'USD',
40
+ 'tokenize' => 'Y',
41
+ 'profile' => 'Y',
42
+ 'name' => 'Bob Johnson',
43
+ 'capture' => 'N'
41
44
  }
42
45
 
43
- auth_params.merge!("capture" => "Y") if args[:capture?]
46
+ auth = CardConnect::Service::Authorization.new
47
+ auth.build_request(auth_params)
48
+
49
+ if auth.request.valid?
50
+ response = auth.submit
51
+ puts response.body
52
+ else
53
+ puts auth.request.errors
54
+ end
55
+ end
56
+
57
+ desc 'Simulate an Authorization Capture request'
58
+ task :auth_capture, [:merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
59
+ cardconnect_configure(args)
60
+
61
+ auth_params = {
62
+ 'account' => '4111111111111111',
63
+ 'accttype' => 'VISA',
64
+ 'expiry' => '1220',
65
+ 'amount' => '1000',
66
+ 'currency' => 'USD',
67
+ 'tokenize' => 'Y',
68
+ 'profile' => 'Y',
69
+ 'name' => 'Bob Johnson',
70
+ 'capture' => 'Y',
71
+ 'ponumber' => '1234'
72
+ }
44
73
 
45
74
  auth = CardConnect::Service::Authorization.new
46
75
  auth.build_request(auth_params)
@@ -53,13 +82,13 @@ namespace :cardconnect do
53
82
  end
54
83
  end
55
84
 
56
- desc "Simulate a Capture request"
57
- task :capture, [:retref, :merchant_id, :api_username, :api_password, :api_endpoint] do |t, args|
85
+ desc 'Simulate a Capture request'
86
+ task :capture, [:retref, :merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
58
87
  cardconnect_configure(args)
59
88
 
60
89
  capture_params = {
61
- 'merchid' => CardConnect.configuration.merchant_id,
62
- 'retref' => args.retref
90
+ 'merchid' => CardConnect.configuration.merchant_id,
91
+ 'retref' => args.retref
63
92
  }
64
93
 
65
94
  capture = CardConnect::Service::Capture.new
@@ -73,13 +102,13 @@ namespace :cardconnect do
73
102
  end
74
103
  end
75
104
 
76
- desc "Simulate a Void request"
77
- task :void, [:retref, :merchant_id, :api_username, :api_password, :api_endpoint] do |t, args|
105
+ desc 'Simulate a Void request'
106
+ task :void, [:retref, :merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
78
107
  cardconnect_configure(args)
79
108
 
80
109
  void_params = {
81
- 'merchid' => CardConnect.configuration.merchant_id,
82
- 'retref' => args[:retref]
110
+ 'merchid' => CardConnect.configuration.merchant_id,
111
+ 'retref' => args[:retref]
83
112
  }
84
113
 
85
114
  void = CardConnect::Service::Void.new
@@ -93,13 +122,13 @@ namespace :cardconnect do
93
122
  end
94
123
  end
95
124
 
96
- desc "Simulate a Refund request"
97
- task :refund, [:retref, :merchant_id, :api_username, :api_password, :api_endpoint] do |t, args|
125
+ desc 'Simulate a Refund request'
126
+ task :refund, [:retref, :merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
98
127
  cardconnect_configure(args)
99
128
 
100
129
  refund_params = {
101
- 'merchid' => CardConnect.configuration.merchant_id,
102
- 'retref' => args[:retref]
130
+ 'merchid' => CardConnect.configuration.merchant_id,
131
+ 'retref' => args[:retref]
103
132
  }
104
133
 
105
134
  refund = CardConnect::Service::Refund.new
@@ -113,13 +142,13 @@ namespace :cardconnect do
113
142
  end
114
143
  end
115
144
 
116
- desc "Simulate an Inquire request"
117
- task :inquire, [:retref, :merchant_id, :api_username, :api_password, :api_endpoint] do |t, args|
145
+ desc 'Simulate an Inquire request'
146
+ task :inquire, [:retref, :merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
118
147
  cardconnect_configure(args)
119
148
 
120
149
  inquire_params = {
121
- 'merchid' => CardConnect.configuration.merchant_id,
122
- 'retref' => args[:retref]
150
+ 'merchid' => CardConnect.configuration.merchant_id,
151
+ 'retref' => args[:retref]
123
152
  }
124
153
 
125
154
  inquire = CardConnect::Service::Inquire.new
@@ -133,14 +162,14 @@ namespace :cardconnect do
133
162
  end
134
163
  end
135
164
 
136
- desc "Simulate a Settlement Status request"
137
- task :settle_status, [:date, :merchant_id, :api_username, :api_password, :api_endpoint] do |t, args|
165
+ desc 'Simulate a Settlement Status request'
166
+ task :settle_status, [:date, :merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
138
167
  # Date format is MMDD
139
168
  cardconnect_configure(args)
140
169
 
141
170
  settle_params = {
142
- 'merchid' => CardConnect.configuration.merchant_id,
143
- 'date' => args[:date]
171
+ 'merchid' => CardConnect.configuration.merchant_id,
172
+ 'date' => args[:date]
144
173
  }
145
174
 
146
175
  status = CardConnect::Service::SettlementStatus.new
@@ -154,14 +183,14 @@ namespace :cardconnect do
154
183
  end
155
184
  end
156
185
 
157
- desc "Simulate a Deposit request"
158
- task :deposit, [:date, :merchant_id, :api_username, :api_password, :api_endpoint] do |t, args|
186
+ desc 'Simulate a Deposit request'
187
+ task :deposit, [:date, :merchant_id, :api_username, :api_password, :api_endpoint] do |_, args|
159
188
  # Date format is MMDD
160
189
  cardconnect_configure(args)
161
190
 
162
191
  deposit_params = {
163
- 'merchid' => CardConnect.configuration.merchant_id,
164
- 'date' => args[:date]
192
+ 'merchid' => CardConnect.configuration.merchant_id,
193
+ 'date' => args[:date]
165
194
  }
166
195
 
167
196
  deposit = CardConnect::Service::Deposit.new
@@ -174,5 +203,4 @@ namespace :cardconnect do
174
203
  puts deposit.request.errors
175
204
  end
176
205
  end
177
-
178
- end
206
+ end
@@ -4,19 +4,19 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'cardconnect/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "cardconnect"
7
+ spec.name = 'cardconnect'
8
8
  spec.version = CardConnect::VERSION
9
- spec.authors = ["Tim McKenzie", "Prashant Mokkarala", "Jason Taylor"]
10
- spec.email = ["tim@mobilecause.com", "prashant@mobilecause.com", "j.m.taylor1@gmail.com"]
11
- spec.summary = %q{CardConnect API Ruby Wrapper}
12
- spec.description = %q{CardConnect API Ruby Wrapper}
13
- spec.homepage = "http://developer.cardconnect.com/"
14
- spec.license = "MIT"
9
+ spec.authors = ['Tim McKenzie', 'Prashant Mokkarala', 'Jason Taylor']
10
+ spec.email = ['tim@mobilecause.com', 'prashant@mobilecause.com', 'j.m.taylor1@gmail.com']
11
+ spec.summary = 'CardConnect API Ruby Wrapper'
12
+ spec.description = 'CardConnect API Ruby Wrapper'
13
+ spec.homepage = 'http://developer.cardconnect.com/'
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
21
  spec.add_development_dependency 'bundler', '~> 1.0'
22
22
 
@@ -1,4 +1,4 @@
1
- require "cardconnect/version"
1
+ require 'cardconnect/version'
2
2
 
3
3
  require 'cardconnect/utils'
4
4
  require 'cardconnect/error'
@@ -30,9 +30,7 @@ require 'cardconnect/services/deposit/deposit'
30
30
  require 'cardconnect/services/void/void'
31
31
 
32
32
  module CardConnect
33
-
34
33
  class << self
35
-
36
34
  def configure
37
35
  yield(configuration)
38
36
  end
@@ -44,6 +42,5 @@ module CardConnect
44
42
  def connection
45
43
  @connection ||= Connection.new.connection
46
44
  end
47
-
48
45
  end
49
46
  end
@@ -1,6 +1,5 @@
1
1
  module CardConnect
2
2
  class Configuration
3
-
4
3
  # Attributes that need to be passed in from the user
5
4
  attr_accessor :merchant_id
6
5
  attr_accessor :api_username
@@ -3,33 +3,29 @@ require 'faraday_middleware'
3
3
 
4
4
  module CardConnect
5
5
  class Connection
6
-
7
6
  def initialize
8
7
  @config = CardConnect.configuration
9
- @headers = {user_agent: "CardConnectRubyGem/#{CardConnect::VERSION}"}
8
+ @headers = { user_agent: "CardConnectRubyGem/#{CardConnect::VERSION}" }
10
9
  end
11
10
 
12
11
  def connection
13
- @connection ||= Faraday.new(url: @config.endpoint, headers: @headers, ssl: {verify: false}) do |faraday|
14
- faraday.request :basic_auth, @config.api_username, @config.api_password
15
- faraday.request :json
12
+ @connection ||= Faraday.new(url: @config.endpoint, headers: @headers, ssl: { verify: false }) do |f|
13
+ f.request :basic_auth, @config.api_username, @config.api_password
14
+ f.request :json
16
15
 
17
- faraday.response :json, :content_type => /\bjson$/
18
- faraday.response :raise_error
16
+ f.response :json, content_type: /\bjson$/
17
+ f.response :raise_error
19
18
 
20
- faraday.adapter Faraday.default_adapter
19
+ f.adapter Faraday.default_adapter
21
20
  end
22
21
  end
23
22
 
24
23
  def ping_server
25
- begin
26
- connection.get('/cardconnect/rest/')
27
- rescue Faraday::ResourceNotFound => e
28
- return e
29
- rescue Faraday::ClientError => e
30
- return e
31
- end
24
+ connection.get('/cardconnect/rest/')
25
+ rescue Faraday::ResourceNotFound => e
26
+ return e
27
+ rescue Faraday::ClientError => e
28
+ return e
32
29
  end
33
-
34
30
  end
35
31
  end
@@ -1,3 +1,3 @@
1
1
  module CardConnect
2
2
  class Error < StandardError; end
3
- end
3
+ end
@@ -1,7 +1,6 @@
1
1
  module CardConnect
2
2
  module Service
3
3
  class Authorization < ServiceEndpoint
4
-
5
4
  # Initializes an Authorization Service
6
5
  #
7
6
  # @param connection [CardConnect::Connection]
@@ -11,7 +10,6 @@ module CardConnect
11
10
  @resource_name = '/auth'
12
11
  @rest_method = 'put'
13
12
  end
14
-
15
13
  end
16
14
  end
17
- end
15
+ end
@@ -3,15 +3,16 @@ module CardConnect
3
3
  class AuthorizationRequest
4
4
  include Utils
5
5
 
6
- REQUIRED_FIELDS = [:merchid, :account, :expiry, :amount, :currency]
6
+ REQUIRED_FIELDS = [:merchid, :account, :expiry, :amount, :currency].freeze
7
7
 
8
8
  OPTIONAL_FIELDS = [:accttype, :name, :address, :city, :region, :country, :phone,
9
9
  :postal, :email, :ecomind, :cvv2, :orderid, :track, :bankaba,
10
- :tokenize, :termid, :capture, :ssnl4, :license, :profile, :userfields]
10
+ :tokenize, :termid, :capture, :ssnl4, :license, :profile, :userfields,
11
+ :ponumber, :authcode, :invoiceid, :taxamnt].freeze
11
12
 
12
13
  FIELDS = REQUIRED_FIELDS + OPTIONAL_FIELDS
13
14
 
14
- attr_accessor *FIELDS
15
+ attr_accessor(*FIELDS)
15
16
  attr_reader :errors
16
17
 
17
18
  # Initializes a new Authorization Request
@@ -33,7 +34,7 @@ module CardConnect
33
34
  def payload
34
35
  payload = {}
35
36
  FIELDS.each do |field|
36
- payload.merge!({field => send(field)})
37
+ payload.merge!(field => send(field))
37
38
  end
38
39
  payload
39
40
  end
@@ -48,4 +49,4 @@ module CardConnect
48
49
  end
49
50
  end
50
51
  end
51
- end
52
+ end
@@ -4,14 +4,14 @@ module CardConnect
4
4
  include Utils
5
5
 
6
6
  FIELDS = [:respstat, :retref, :account, :token, :amount, :merchid, :respcode,
7
- :resptext, :respproc, :avsresp, :cvvresp, :authcode, :commcard]
7
+ :resptext, :respproc, :avsresp, :cvvresp, :authcode, :commcard, :profileid].freeze
8
8
 
9
- attr_accessor *FIELDS
9
+ attr_accessor(*FIELDS)
10
10
  attr_reader :errors
11
11
 
12
- STATUS_APPROVED = 'A'
13
- STATUS_RETRY = 'B'
14
- STATUS_DECLINED = 'C'
12
+ STATUS_APPROVED = 'A'.freeze
13
+ STATUS_RETRY = 'B'.freeze
14
+ STATUS_DECLINED = 'C'.freeze
15
15
 
16
16
  def initialize(response)
17
17
  set_attributes(response, FIELDS)
@@ -26,7 +26,7 @@ module CardConnect
26
26
  def body
27
27
  body = {}
28
28
  FIELDS.each do |attr|
29
- body.merge!({attr => send(attr)})
29
+ body.merge!(attr => send(attr))
30
30
  end
31
31
  body
32
32
  end
@@ -38,4 +38,4 @@ module CardConnect
38
38
  end
39
39
  end
40
40
  end
41
- end
41
+ end