tiger-payment 0.0.3 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -7,6 +7,7 @@ source "http://rubygems.org"
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
 
9
9
  gem 'rest-client', '1.0.4'
10
+ gem 'xml-simple'
10
11
 
11
12
  group :development do
12
13
  gem "shoulda", ">= 0"
data/Gemfile.lock CHANGED
@@ -10,6 +10,7 @@ GEM
10
10
  rcov (0.9.9)
11
11
  rest-client (1.0.4)
12
12
  shoulda (2.11.3)
13
+ xml-simple (1.1.0)
13
14
 
14
15
  PLATFORMS
15
16
  ruby
@@ -20,3 +21,4 @@ DEPENDENCIES
20
21
  rcov
21
22
  rest-client (= 1.0.4)
22
23
  shoulda
24
+ xml-simple
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.6
@@ -0,0 +1,25 @@
1
+ module TigerPayment
2
+ class Action
3
+ attr_reader :amount,
4
+ :action_type,
5
+ :date,
6
+ :success,
7
+ :ip_address,
8
+ :source,
9
+ :username,
10
+ :response_text,
11
+ :batch_id,
12
+ :processor_batch_id,
13
+ :response_code
14
+ def initialize(params={})
15
+
16
+ params.each_pair do |k,v|
17
+ if v == [{}]
18
+ instance_variable_set('@'+k, nil)
19
+ else
20
+ instance_variable_set('@'+k, v.size == 1 ? v.first : v)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,59 @@
1
+ module TigerPayment
2
+ class Customer
3
+ attr_reader :id,
4
+ :first_name,
5
+ :last_name,
6
+ :address_1,
7
+ :address_2,
8
+ :company,
9
+ :city,
10
+ :state,
11
+ :postal_code,
12
+ :country,
13
+ :email,
14
+ :phone,
15
+ :fax,
16
+ :cell_phone,
17
+ :customertaxid,
18
+ :website,
19
+ :shipping_first_name,
20
+ :shipping_last_name,
21
+ :shipping_address_1,
22
+ :shipping_address_2,
23
+ :shipping_company,
24
+ :shipping_city,
25
+ :shipping_state,
26
+ :shipping_postal_code,
27
+ :shipping_country,
28
+ :shipping_email,
29
+ :shipping_carrier,
30
+ :tracking_number,
31
+ :shipping_date,
32
+ :shipping,
33
+ :cc_number,
34
+ :cc_hash,
35
+ :cc_exp,
36
+ :check_account,
37
+ :check_hash,
38
+ :check_aba,
39
+ :check_name,
40
+ :account_holder_type,
41
+ :account_type,
42
+ :sec_code,
43
+ :processor_id,
44
+ :cc_bin,
45
+ :customer_vault_id
46
+
47
+ def initialize(params = {})
48
+ params.each_pair do |k,v|
49
+ if v == [{}]
50
+ instance_variable_set('@'+k, nil)
51
+ else
52
+ value ||= v.size == 1 ? v.first : v
53
+ instance_variable_set('@'+k, value)
54
+ end
55
+ end
56
+ end
57
+
58
+ end
59
+ end
@@ -96,8 +96,11 @@ module TigerPayment
96
96
  # For more info on how to deal with responses from the Gateway, check out
97
97
  # the Response class.
98
98
  class Gateway
99
- TIGER_GATEWAY_URL = "https://secure.tigergateway.net/api/transact.php"
100
-
99
+ TIGER_URLS = {
100
+ :transaction => "https://secure.tigergateway.net/api/transact.php",
101
+ :query => "https://secure.networkmerchants.com/api/query.php"
102
+ }
103
+
101
104
  def initialize(params = {})
102
105
  if defined?(RAILS_ENV) && defined?(RAILS_ROOT)
103
106
  config = TigerPayment::Configuration.new
@@ -106,34 +109,34 @@ module TigerPayment
106
109
  else
107
110
  @username = params[:username]
108
111
  @password = params[:password]
109
- end
112
+ end
110
113
  end
111
114
 
112
115
  ["sale", "credit", "capture", "void", "refund", "update"].each do |operation|
113
116
  define_method(operation) do |params|
114
117
  params.merge! :type => operation
115
- make_request(params)
118
+ make_transaction(params)
116
119
  end
117
120
  end
118
121
 
119
122
  def authorize(params)
120
123
  params.merge! :type => "auth"
121
- make_request(params)
124
+ make_transaction(params)
122
125
  end
123
126
 
124
127
  def add_recurring(params)
125
128
  params.merge! :type => 'add_recurring'
126
- make_request(params)
129
+ make_transaction(params)
127
130
  end
128
131
 
129
132
  def add_recurring_and_charge(params)
130
133
  params.merge! :type => 'sale'
131
- make_request(params)
134
+ make_transaction(params)
132
135
  end
133
136
 
134
137
  def delete_recurring(transaction_id)
135
138
  params = {delete_recurring: transaction_id}
136
- make_request(params)
139
+ make_transaction(params)
137
140
  end
138
141
 
139
142
  def remove_customer_from_vault(vault_id)
@@ -141,7 +144,7 @@ module TigerPayment
141
144
  customer_vault: 'delete_customer',
142
145
  customer_vault_id: vault_id
143
146
  }
144
- make_request(params)
147
+ make_transaction(params)
145
148
  end
146
149
 
147
150
  def update_customer_vault(params, vault_id)
@@ -149,20 +152,56 @@ module TigerPayment
149
152
  customer_vault: 'update_customer',
150
153
  customer_vault_id: vault_id
151
154
  })
155
+ make_transaction(params)
156
+ end
157
+
158
+ # Request methods for retrieving transactions and customer info
159
+ def get_transactions_for_date(date)
160
+ params = {:start_date => date}
161
+ make_request(params)
162
+ end
163
+
164
+ def get_specified_transactions(ids)
165
+ params = {:transaction_id => Array(ids).join(',')}
166
+ make_request(params)
167
+ end
168
+
169
+ def get_transactions(params)
152
170
  make_request(params)
153
171
  end
154
172
 
173
+ def get_customers(customer_vault_id=nil)
174
+ params = {:report_type => 'customer_vault'}
175
+ params.merge!(:customer_vault_id => customer_vault_id) if customer_vault_id
176
+ make_request(params, 'customer')
177
+ end
178
+
155
179
  private
156
180
 
157
- def make_request(params)
181
+ def make_transaction(params)
158
182
  params.merge! :username => @username, :password => @password
159
- response_string = tiger_gateway.post(params)
183
+ response_string = tiger_transaction_gateway.post(params)
160
184
  TigerPayment::Response.build_from_string(response_string)
161
185
  end
162
-
163
- def tiger_gateway
164
- @tiger_gateway ||= RestClient::Resource.new(TIGER_GATEWAY_URL)
186
+
187
+ def make_request(params, report_type=nil)
188
+ params.merge! :username => @username, :password => @password
189
+ response_string = tiger_query_gateway.post(params).to_s
190
+ if report_type == 'customer'
191
+ TigerPayment::Response.build_customers_from_xml(response_string)
192
+ else
193
+ TigerPayment::Response.build_transactions_from_xml(response_string)
194
+ end
195
+ end
196
+
197
+ def tiger_transaction_gateway
198
+ @tiger_gateway ||= RestClient::Resource.new(TIGER_URLS[:transaction])
165
199
  end
200
+
201
+ def tiger_query_gateway
202
+ @tiger_gateway ||= RestClient::Resource.new(TIGER_URLS[:query])
203
+ end
204
+
166
205
  end
167
206
  end
168
207
 
@@ -86,6 +86,16 @@ module TigerPayment
86
86
 
87
87
  self.new(params)
88
88
  end
89
+
90
+ def build_customers_from_xml(response_string)
91
+ response = XmlSimple.xml_in(response_string)
92
+ customers = Array(response['customer_vault'].first['customer']).map{|c| TigerPayment::Customer.new(c)}
93
+ end
94
+
95
+ def build_transactions_from_xml(response_string)
96
+ response = XmlSimple.xml_in(response_string)
97
+ transactions = Array(response['transaction']).map{|t| TigerPayment::Transaction.new(t)}
98
+ end
89
99
  end
90
100
 
91
101
  attr_reader :transaction_id, :message, :response_code
@@ -0,0 +1,76 @@
1
+ module TigerPayment
2
+ class Transaction
3
+ attr_reader :transaction_id,
4
+ :platform_id,
5
+ :transaction_type,
6
+ :condition,
7
+ :order_id,
8
+ :authorization_code,
9
+ :ponumber,
10
+ :order_description,
11
+ :first_name,
12
+ :last_name,
13
+ :address_1,
14
+ :address_2,
15
+ :company,
16
+ :city,
17
+ :state,
18
+ :postal_code,
19
+ :country,
20
+ :email,
21
+ :phone,
22
+ :fax,
23
+ :cell_phone,
24
+ :customertaxid,
25
+ :customerid,
26
+ :website,
27
+ :shipping_first_name,
28
+ :shipping_last_name,
29
+ :shipping_address_1,
30
+ :shipping_address_2,
31
+ :shipping_company,
32
+ :shipping_city,
33
+ :shipping_state,
34
+ :shipping_postal_code,
35
+ :shipping_country,
36
+ :shipping_email,
37
+ :shipping_carrier,
38
+ :tracking_number,
39
+ :shipping_date,
40
+ :shipping,
41
+ :shipping_phone,
42
+ :cc_number,
43
+ :cc_hash,
44
+ :cc_exp,
45
+ :cavv,
46
+ :cavv_result,
47
+ :xid,
48
+ :avs_response,
49
+ :csc_response,
50
+ :cardholder_auth,
51
+ :check_account,
52
+ :check_hash,
53
+ :check_aba,
54
+ :check_name,
55
+ :account_holder_type,
56
+ :account_type,
57
+ :sec_code,
58
+ :processor_id,
59
+ :tax,
60
+ :currency,
61
+ :cc_bin,
62
+ :action
63
+
64
+ def initialize(params = {})
65
+ params.each_pair do |k,v|
66
+ if v == [{}]
67
+ instance_variable_set('@'+k, nil)
68
+ else
69
+ value = Action.new(v.first) if k == 'action'
70
+ value ||= v.size == 1 ? v.first : v
71
+ instance_variable_set('@'+k, value)
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
data/lib/tiger-payment.rb CHANGED
@@ -3,6 +3,11 @@ $:.unshift File.dirname(__FILE__)
3
3
  require 'rubygems'
4
4
  require 'yaml'
5
5
  require 'restclient'
6
+ require 'xmlsimple'
6
7
  require 'tiger-payment/configuration'
8
+ require 'tiger-payment/action'
9
+ require 'tiger-payment/transaction'
10
+ require 'tiger-payment/customer'
7
11
  require 'tiger-payment/gateway'
8
12
  require 'tiger-payment/response'
13
+
Binary file
@@ -4,13 +4,13 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{tiger-payment}
8
- s.version = "0.0.3"
7
+ s.name = "tiger-payment"
8
+ s.version = "0.0.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Garrett Lancaster"]
12
- s.date = %q{2011-07-27}
13
- s.email = %q{glancast@garrettlancaster.com}
12
+ s.date = "2011-12-30"
13
+ s.email = "glancast@garrettlancaster.com"
14
14
  s.extra_rdoc_files = [
15
15
  "LICENSE.txt",
16
16
  "README.rdoc"
@@ -24,33 +24,36 @@ Gem::Specification.new do |s|
24
24
  "Rakefile",
25
25
  "VERSION",
26
26
  "lib/tiger-payment.rb",
27
+ "lib/tiger-payment/action.rb",
27
28
  "lib/tiger-payment/configuration.rb",
29
+ "lib/tiger-payment/customer.rb",
28
30
  "lib/tiger-payment/gateway.rb",
29
31
  "lib/tiger-payment/response.rb",
32
+ "lib/tiger-payment/transaction.rb",
30
33
  "test/helper.rb",
31
34
  "test/test_tiger-payment.rb",
32
- "tiger-payment-0.0.0.gem",
33
- "tiger-payment-0.0.1.gem",
35
+ "tiger-payment-0.0.5.gem",
34
36
  "tiger-payment.gemspec"
35
37
  ]
36
- s.homepage = %q{http://github.com/garrettlancaster/tiger-payment}
38
+ s.homepage = "http://github.com/garrettlancaster/tiger-payment"
37
39
  s.licenses = ["MIT"]
38
40
  s.require_paths = ["lib"]
39
- s.rubygems_version = %q{1.3.7}
40
- s.summary = %q{Simple integration with Tiger Payment Solutions direct-post API}
41
+ s.rubygems_version = "1.8.10"
42
+ s.summary = "Simple integration with Tiger Payment Solutions direct-post API"
41
43
 
42
44
  if s.respond_to? :specification_version then
43
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
44
45
  s.specification_version = 3
45
46
 
46
47
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
48
  s.add_runtime_dependency(%q<rest-client>, ["= 1.0.4"])
49
+ s.add_runtime_dependency(%q<xml-simple>, [">= 0"])
48
50
  s.add_development_dependency(%q<shoulda>, [">= 0"])
49
51
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
50
52
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
51
53
  s.add_development_dependency(%q<rcov>, [">= 0"])
52
54
  else
53
55
  s.add_dependency(%q<rest-client>, ["= 1.0.4"])
56
+ s.add_dependency(%q<xml-simple>, [">= 0"])
54
57
  s.add_dependency(%q<shoulda>, [">= 0"])
55
58
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
56
59
  s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
@@ -58,6 +61,7 @@ Gem::Specification.new do |s|
58
61
  end
59
62
  else
60
63
  s.add_dependency(%q<rest-client>, ["= 1.0.4"])
64
+ s.add_dependency(%q<xml-simple>, [">= 0"])
61
65
  s.add_dependency(%q<shoulda>, [">= 0"])
62
66
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
63
67
  s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tiger-payment
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 3
9
- version: 0.0.3
4
+ prerelease:
5
+ version: 0.0.6
10
6
  platform: ruby
11
7
  authors:
12
8
  - Garrett Lancaster
@@ -14,8 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2011-07-27 00:00:00 -05:00
18
- default_executable:
13
+ date: 2011-12-30 00:00:00 Z
19
14
  dependencies:
20
15
  - !ruby/object:Gem::Dependency
21
16
  name: rest-client
@@ -25,69 +20,64 @@ dependencies:
25
20
  requirements:
26
21
  - - "="
27
22
  - !ruby/object:Gem::Version
28
- segments:
29
- - 1
30
- - 0
31
- - 4
32
23
  version: 1.0.4
33
24
  type: :runtime
34
25
  version_requirements: *id001
35
26
  - !ruby/object:Gem::Dependency
36
- name: shoulda
27
+ name: xml-simple
37
28
  prerelease: false
38
29
  requirement: &id002 !ruby/object:Gem::Requirement
39
30
  none: false
40
31
  requirements:
41
32
  - - ">="
42
33
  - !ruby/object:Gem::Version
43
- segments:
44
- - 0
45
34
  version: "0"
46
- type: :development
35
+ type: :runtime
47
36
  version_requirements: *id002
48
37
  - !ruby/object:Gem::Dependency
49
- name: bundler
38
+ name: shoulda
50
39
  prerelease: false
51
40
  requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ type: :development
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: bundler
50
+ prerelease: false
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ~>
55
55
  - !ruby/object:Gem::Version
56
- segments:
57
- - 1
58
- - 0
59
- - 0
60
56
  version: 1.0.0
61
57
  type: :development
62
- version_requirements: *id003
58
+ version_requirements: *id004
63
59
  - !ruby/object:Gem::Dependency
64
60
  name: jeweler
65
61
  prerelease: false
66
- requirement: &id004 !ruby/object:Gem::Requirement
62
+ requirement: &id005 !ruby/object:Gem::Requirement
67
63
  none: false
68
64
  requirements:
69
65
  - - ~>
70
66
  - !ruby/object:Gem::Version
71
- segments:
72
- - 1
73
- - 6
74
- - 2
75
67
  version: 1.6.2
76
68
  type: :development
77
- version_requirements: *id004
69
+ version_requirements: *id005
78
70
  - !ruby/object:Gem::Dependency
79
71
  name: rcov
80
72
  prerelease: false
81
- requirement: &id005 !ruby/object:Gem::Requirement
73
+ requirement: &id006 !ruby/object:Gem::Requirement
82
74
  none: false
83
75
  requirements:
84
76
  - - ">="
85
77
  - !ruby/object:Gem::Version
86
- segments:
87
- - 0
88
78
  version: "0"
89
79
  type: :development
90
- version_requirements: *id005
80
+ version_requirements: *id006
91
81
  description:
92
82
  email: glancast@garrettlancaster.com
93
83
  executables: []
@@ -106,15 +96,16 @@ files:
106
96
  - Rakefile
107
97
  - VERSION
108
98
  - lib/tiger-payment.rb
99
+ - lib/tiger-payment/action.rb
109
100
  - lib/tiger-payment/configuration.rb
101
+ - lib/tiger-payment/customer.rb
110
102
  - lib/tiger-payment/gateway.rb
111
103
  - lib/tiger-payment/response.rb
104
+ - lib/tiger-payment/transaction.rb
112
105
  - test/helper.rb
113
106
  - test/test_tiger-payment.rb
114
- - tiger-payment-0.0.0.gem
115
- - tiger-payment-0.0.1.gem
107
+ - tiger-payment-0.0.5.gem
116
108
  - tiger-payment.gemspec
117
- has_rdoc: true
118
109
  homepage: http://github.com/garrettlancaster/tiger-payment
119
110
  licenses:
120
111
  - MIT
@@ -128,21 +119,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
128
119
  requirements:
129
120
  - - ">="
130
121
  - !ruby/object:Gem::Version
131
- segments:
132
- - 0
133
122
  version: "0"
134
123
  required_rubygems_version: !ruby/object:Gem::Requirement
135
124
  none: false
136
125
  requirements:
137
126
  - - ">="
138
127
  - !ruby/object:Gem::Version
139
- segments:
140
- - 0
141
128
  version: "0"
142
129
  requirements: []
143
130
 
144
131
  rubyforge_project:
145
- rubygems_version: 1.3.7
132
+ rubygems_version: 1.8.10
146
133
  signing_key:
147
134
  specification_version: 3
148
135
  summary: Simple integration with Tiger Payment Solutions direct-post API
Binary file
Binary file