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
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