killbill-litle 1.4.0 → 1.5.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.
data/NEWS CHANGED
@@ -1,2 +1,10 @@
1
+ 1.5.0
2
+ Add additional properties in PaymentMethodPlugin
3
+ Implement search
4
+ Fix process_payment implementation (pass expiration date to Litle)
5
+
6
+ 1.4.0
7
+ Update to killbill 1.2.0
8
+
1
9
  1.3.0
2
10
  Update to killbill 1.1.2
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.0
1
+ 1.5.0
data/lib/litle/api.rb CHANGED
@@ -27,12 +27,12 @@ module Killbill::Litle
27
27
 
28
28
  # Set a default report group
29
29
  options[:merchant] ||= report_group_for_currency(currency)
30
- # Retrieve the Litle token
31
- token = get_token(kb_payment_method_id)
30
+ # Retrieve the Litle payment method
31
+ litle_pm = LitlePaymentMethod.from_kb_payment_method_id(kb_payment_method_id)
32
32
 
33
33
  # Go to Litle
34
34
  gateway = Killbill::Litle.gateway_for_currency(currency)
35
- litle_response = gateway.purchase amount_in_cents, ActiveMerchant::Billing::LitleGateway::LitleCardToken.new(:token => token), options
35
+ litle_response = gateway.purchase amount_in_cents, litle_pm.to_litle_card_token, options
36
36
  response = save_response_and_transaction litle_response, :charge, kb_payment_id, amount_in_cents
37
37
 
38
38
  response.to_payment_response
@@ -156,6 +156,10 @@ module Killbill::Litle
156
156
  end
157
157
  end
158
158
 
159
+ def search(search_key, call_context = nil, options = {})
160
+ LitlePaymentMethod.search(search_key).map(&:to_payment_method_response)
161
+ end
162
+
159
163
  private
160
164
 
161
165
  def find_value_from_payment_method_props(payment_method_props, key)
@@ -179,10 +183,6 @@ module Killbill::Litle
179
183
  "Report Group for #{currency.to_s}"
180
184
  end
181
185
 
182
- def get_token(kb_payment_method_id)
183
- LitlePaymentMethod.from_kb_payment_method_id(kb_payment_method_id).litle_token
184
- end
185
-
186
186
  def save_response_and_transaction(litle_response, api_call, kb_payment_id=nil, amount_in_cents=0)
187
187
  @logger.warn "Unsuccessful #{api_call}: #{litle_response.message}" unless litle_response.success?
188
188
 
@@ -35,9 +35,40 @@ module Killbill::Litle
35
35
  payment_method.save!
36
36
  end
37
37
 
38
+ def self.search(search_key)
39
+ search_columns = [
40
+ :litle_token,
41
+ :cc_first_name,
42
+ :cc_last_name,
43
+ :cc_type,
44
+ :cc_exp_month,
45
+ :cc_exp_year,
46
+ :cc_last_4,
47
+ :address1,
48
+ :address2,
49
+ :city,
50
+ :state,
51
+ :zip,
52
+ :country
53
+ ]
54
+ query = search_columns.map(&:to_s).join(' like ? or ') + ' like ?'
55
+ where(query, *search_columns.map { |e| "%#{search_key}%" })
56
+ end
57
+
38
58
  def to_payment_method_response
39
59
  properties = []
40
- properties << create_pm_kv_info('token', litle_token)
60
+ properties << create_pm_kv_info('token', external_payment_method_id)
61
+ properties << create_pm_kv_info('ccName', cc_name)
62
+ properties << create_pm_kv_info('ccType', cc_type)
63
+ properties << create_pm_kv_info('ccExpirationMonth', cc_exp_month)
64
+ properties << create_pm_kv_info('ccExpirationYear', cc_exp_year)
65
+ properties << create_pm_kv_info('ccLast4', cc_last_4)
66
+ properties << create_pm_kv_info('address1', address1)
67
+ properties << create_pm_kv_info('address2', address2)
68
+ properties << create_pm_kv_info('city', city)
69
+ properties << create_pm_kv_info('state', state)
70
+ properties << create_pm_kv_info('zip', zip)
71
+ properties << create_pm_kv_info('country', country)
41
72
 
42
73
  pm_plugin = Killbill::Plugin::Model::PaymentMethodPlugin.new
43
74
  pm_plugin.external_payment_method_id = external_payment_method_id
@@ -85,6 +116,10 @@ module Killbill::Litle
85
116
  end
86
117
  end
87
118
 
119
+ def to_litle_card_token
120
+ ActiveMerchant::Billing::LitleGateway::LitleCardToken.new(:token => litle_token, :month => cc_exp_month, :year => cc_exp_year)
121
+ end
122
+
88
123
  private
89
124
 
90
125
  def create_pm_kv_info(key, value)
data/pom.xml CHANGED
@@ -25,7 +25,7 @@
25
25
  <groupId>com.ning.killbill.ruby</groupId>
26
26
  <artifactId>litle-plugin</artifactId>
27
27
  <packaging>pom</packaging>
28
- <version>1.4.0</version>
28
+ <version>1.5.0</version>
29
29
  <name>litle-plugin</name>
30
30
  <url>http://github.com/killbill/killbill-litle-plugin</url>
31
31
  <description>Plugin for accessing Litle as a payment gateway</description>
@@ -45,6 +45,10 @@ describe Killbill::Litle::PaymentPlugin do
45
45
  pm_details = @plugin.get_payment_method_detail(pm.kb_account_id, pm.kb_payment_method_id)
46
46
  pm_details.external_payment_method_id.should == pm.litle_token
47
47
 
48
+ pms_found = @plugin.search pm.cc_last_4
49
+ pms_found.size.should == 1
50
+ pms_found.first.external_payment_method_id.should == pm_details.external_payment_method_id
51
+
48
52
  @plugin.delete_payment_method(pm.kb_account_id, pm.kb_payment_method_id)
49
53
 
50
54
  @plugin.get_payment_methods(pm.kb_account_id).size.should == 0
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ describe Killbill::Litle::LitlePaymentMethod do
4
+ it 'should search all fields' do
5
+ Killbill::Litle::LitlePaymentMethod.search('foo').size.should == 0
6
+
7
+ pm = Killbill::Litle::LitlePaymentMethod.create :kb_account_id => '11-22-33-44',
8
+ :kb_payment_method_id => '55-66-77-88',
9
+ :litle_token => 38102343,
10
+ :cc_first_name => 'ccFirstName',
11
+ :cc_last_name => 'ccLastName',
12
+ :cc_type => 'ccType',
13
+ :cc_exp_month => 10,
14
+ :cc_exp_year => 11,
15
+ :cc_last_4 => 1234,
16
+ :address1 => 'address1',
17
+ :address2 => 'address2',
18
+ :city => 'city',
19
+ :state => 'state',
20
+ :zip => 'zip',
21
+ :country => 'country'
22
+
23
+ Killbill::Litle::LitlePaymentMethod.search('foo').size.should == 0
24
+ Killbill::Litle::LitlePaymentMethod.search(pm.litle_token).size.should == 1
25
+ Killbill::Litle::LitlePaymentMethod.search('cc').size.should == 1
26
+ Killbill::Litle::LitlePaymentMethod.search('address').size.should == 1
27
+ Killbill::Litle::LitlePaymentMethod.search(2343).size.should == 1
28
+ Killbill::Litle::LitlePaymentMethod.search('name').size.should == 1
29
+ Killbill::Litle::LitlePaymentMethod.search('Name').size.should == 1
30
+
31
+ pm2 = Killbill::Litle::LitlePaymentMethod.create :kb_account_id => '22-33-44-55',
32
+ :kb_payment_method_id => '66-77-88-99',
33
+ :litle_token => 49384029302,
34
+ :cc_first_name => 'ccFirstName',
35
+ :cc_last_name => 'ccLastName',
36
+ :cc_type => 'ccType',
37
+ :cc_exp_month => 10,
38
+ :cc_exp_year => 11,
39
+ :cc_last_4 => 1234,
40
+ :address1 => 'address1',
41
+ :address2 => 'address2',
42
+ :city => 'city',
43
+ :state => 'state',
44
+ :zip => 'zip',
45
+ :country => 'country'
46
+
47
+ Killbill::Litle::LitlePaymentMethod.search('foo').size.should == 0
48
+ Killbill::Litle::LitlePaymentMethod.search(pm.litle_token).size.should == 1
49
+ Killbill::Litle::LitlePaymentMethod.search(pm2.litle_token).size.should == 1
50
+ Killbill::Litle::LitlePaymentMethod.search('cc').size.should == 2
51
+ Killbill::Litle::LitlePaymentMethod.search('address').size.should == 2
52
+ Killbill::Litle::LitlePaymentMethod.search(2343).size.should == 1
53
+ Killbill::Litle::LitlePaymentMethod.search('name').size.should == 2
54
+ Killbill::Litle::LitlePaymentMethod.search('Name').size.should == 2
55
+ end
56
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: killbill-litle
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,19 +9,19 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-22 00:00:00.000000000 Z
12
+ date: 2013-07-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: killbill
16
16
  version_requirements: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ~>
19
19
  - !ruby/object:Gem::Version
20
20
  version: 1.2.0
21
21
  none: false
22
22
  requirement: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.2.0
27
27
  none: false
@@ -31,13 +31,13 @@ dependencies:
31
31
  name: activemerchant
32
32
  version_requirements: !ruby/object:Gem::Requirement
33
33
  requirements:
34
- - - "~>"
34
+ - - ~>
35
35
  - !ruby/object:Gem::Version
36
36
  version: 2.0.0
37
37
  none: false
38
38
  requirement: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - "~>"
40
+ - - ~>
41
41
  - !ruby/object:Gem::Version
42
42
  version: 2.0.0
43
43
  none: false
@@ -47,13 +47,13 @@ dependencies:
47
47
  name: activerecord
48
48
  version_requirements: !ruby/object:Gem::Requirement
49
49
  requirements:
50
- - - "~>"
50
+ - - ~>
51
51
  - !ruby/object:Gem::Version
52
52
  version: 3.2.1
53
53
  none: false
54
54
  requirement: !ruby/object:Gem::Requirement
55
55
  requirements:
56
- - - "~>"
56
+ - - ~>
57
57
  - !ruby/object:Gem::Version
58
58
  version: 3.2.1
59
59
  none: false
@@ -63,13 +63,13 @@ dependencies:
63
63
  name: sinatra
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.3.4
69
69
  none: false
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "~>"
72
+ - - ~>
73
73
  - !ruby/object:Gem::Version
74
74
  version: 1.3.4
75
75
  none: false
@@ -79,13 +79,13 @@ dependencies:
79
79
  name: LitleOnline
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - "~>"
82
+ - - ~>
83
83
  - !ruby/object:Gem::Version
84
84
  version: 8.16.0
85
85
  none: false
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - "~>"
88
+ - - ~>
89
89
  - !ruby/object:Gem::Version
90
90
  version: 8.16.0
91
91
  none: false
@@ -95,13 +95,13 @@ dependencies:
95
95
  name: xml-mapping
96
96
  version_requirements: !ruby/object:Gem::Requirement
97
97
  requirements:
98
- - - "~>"
98
+ - - ~>
99
99
  - !ruby/object:Gem::Version
100
100
  version: 0.9.1
101
101
  none: false
102
102
  requirement: !ruby/object:Gem::Requirement
103
103
  requirements:
104
- - - "~>"
104
+ - - ~>
105
105
  - !ruby/object:Gem::Version
106
106
  version: 0.9.1
107
107
  none: false
@@ -111,13 +111,13 @@ dependencies:
111
111
  name: xml-object
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - "~>"
114
+ - - ~>
115
115
  - !ruby/object:Gem::Version
116
116
  version: 0.9.93
117
117
  none: false
118
118
  requirement: !ruby/object:Gem::Requirement
119
119
  requirements:
120
- - - "~>"
120
+ - - ~>
121
121
  - !ruby/object:Gem::Version
122
122
  version: 0.9.93
123
123
  none: false
@@ -127,13 +127,13 @@ dependencies:
127
127
  name: activerecord-jdbcmysql-adapter
128
128
  version_requirements: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - "~>"
130
+ - - ~>
131
131
  - !ruby/object:Gem::Version
132
132
  version: 1.2.9
133
133
  none: false
134
134
  requirement: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "~>"
136
+ - - ~>
137
137
  - !ruby/object:Gem::Version
138
138
  version: 1.2.9
139
139
  none: false
@@ -143,13 +143,13 @@ dependencies:
143
143
  name: jbundler
144
144
  version_requirements: !ruby/object:Gem::Requirement
145
145
  requirements:
146
- - - "~>"
146
+ - - ~>
147
147
  - !ruby/object:Gem::Version
148
148
  version: 0.4.1
149
149
  none: false
150
150
  requirement: !ruby/object:Gem::Requirement
151
151
  requirements:
152
- - - "~>"
152
+ - - ~>
153
153
  - !ruby/object:Gem::Version
154
154
  version: 0.4.1
155
155
  none: false
@@ -159,13 +159,13 @@ dependencies:
159
159
  name: rake
160
160
  version_requirements: !ruby/object:Gem::Requirement
161
161
  requirements:
162
- - - ">="
162
+ - - '>='
163
163
  - !ruby/object:Gem::Version
164
164
  version: 10.0.0
165
165
  none: false
166
166
  requirement: !ruby/object:Gem::Requirement
167
167
  requirements:
168
- - - ">="
168
+ - - '>='
169
169
  - !ruby/object:Gem::Version
170
170
  version: 10.0.0
171
171
  none: false
@@ -175,13 +175,13 @@ dependencies:
175
175
  name: rspec
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - "~>"
178
+ - - ~>
179
179
  - !ruby/object:Gem::Version
180
180
  version: 2.12.0
181
181
  none: false
182
182
  requirement: !ruby/object:Gem::Requirement
183
183
  requirements:
184
- - - "~>"
184
+ - - ~>
185
185
  - !ruby/object:Gem::Version
186
186
  version: 2.12.0
187
187
  none: false
@@ -191,13 +191,13 @@ dependencies:
191
191
  name: activerecord-jdbcsqlite3-adapter
192
192
  version_requirements: !ruby/object:Gem::Requirement
193
193
  requirements:
194
- - - "~>"
194
+ - - ~>
195
195
  - !ruby/object:Gem::Version
196
196
  version: 1.2.6
197
197
  none: false
198
198
  requirement: !ruby/object:Gem::Requirement
199
199
  requirements:
200
- - - "~>"
200
+ - - ~>
201
201
  - !ruby/object:Gem::Version
202
202
  version: 1.2.6
203
203
  none: false
@@ -209,8 +209,8 @@ executables: []
209
209
  extensions: []
210
210
  extra_rdoc_files: []
211
211
  files:
212
- - ".gitignore"
213
- - ".travis.yml"
212
+ - .gitignore
213
+ - .travis.yml
214
214
  - Gemfile
215
215
  - Jarfile
216
216
  - NEWS
@@ -238,6 +238,7 @@ files:
238
238
  - release.sh
239
239
  - spec/litle/base_plugin_spec.rb
240
240
  - spec/litle/integration_spec.rb
241
+ - spec/litle/litle_payment_method_spec.rb
241
242
  - spec/litle/utils_spec.rb
242
243
  - spec/spec_helper.rb
243
244
  homepage: http://kill-bill.org
@@ -245,24 +246,23 @@ licenses:
245
246
  - Apache License (2.0)
246
247
  post_install_message:
247
248
  rdoc_options:
248
- - "--exclude"
249
- - "."
249
+ - --exclude
250
+ - .
250
251
  require_paths:
251
252
  - lib
252
253
  required_ruby_version: !ruby/object:Gem::Requirement
253
254
  requirements:
254
- - - ">="
255
+ - - '>='
255
256
  - !ruby/object:Gem::Version
256
257
  version: 1.9.3
257
258
  none: false
258
259
  required_rubygems_version: !ruby/object:Gem::Requirement
259
260
  requirements:
260
- - - ">="
261
+ - - '>='
261
262
  - !ruby/object:Gem::Version
262
263
  segments:
263
264
  - 0
264
- version: !binary |-
265
- MA==
265
+ version: '0'
266
266
  hash: 2
267
267
  none: false
268
268
  requirements: []
@@ -274,5 +274,6 @@ summary: Plugin to use Litle & Co. as a gateway.
274
274
  test_files:
275
275
  - spec/litle/base_plugin_spec.rb
276
276
  - spec/litle/integration_spec.rb
277
+ - spec/litle/litle_payment_method_spec.rb
277
278
  - spec/litle/utils_spec.rb
278
279
  - spec/spec_helper.rb