killbill-litle 1.0.11 → 1.0.12

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/README.md CHANGED
@@ -16,7 +16,7 @@ Usage
16
16
 
17
17
  Go to http://$HOST:8080/plugins/killbill-litle?kb_account_id=13d26090-b8d7-11e2-9e96-0800200c9a66 and enter your credit card information.
18
18
 
19
- Then, save the token in Kill Bill:
19
+ Then, save the token in Kill Bill (only `paypageRegistrationId` is required in the properties):
20
20
 
21
21
  ```
22
22
  curl -v \
@@ -27,10 +27,60 @@ curl -v \
27
27
  --data-binary '{
28
28
  "pluginName": "killbill-litle",
29
29
  "pluginInfo": {
30
- "properties": [{
31
- "key": "paypageRegistrationId",
32
- "value": "t3GER3BP3JHLASZe"
33
- }]
30
+ "properties": [
31
+ {
32
+ "key": "paypageRegistrationId",
33
+ "value": "t3GER3BP3JHLASZe"
34
+ },
35
+ {
36
+ "key": "ccFirstName",
37
+ "value": "John"
38
+ },
39
+ {
40
+ "key": "ccLastName",
41
+ "value": "Doe"
42
+ },
43
+ {
44
+ "key": "ccType",
45
+ "value": "VISA"
46
+ },
47
+ {
48
+ "key": "ccExpMonth",
49
+ "value": 12
50
+ },
51
+ {
52
+ "key": "ccExpYear",
53
+ "value": 2015
54
+ },
55
+ {
56
+ "key": "ccLast4",
57
+ "value": 1234
58
+ },
59
+ {
60
+ "key": "address1",
61
+ "value": "5, oakriu road"
62
+ },
63
+ {
64
+ "key": "address2",
65
+ "value": "apt. 298"
66
+ },
67
+ {
68
+ "key": "city",
69
+ "value": "Gdio Foia"
70
+ },
71
+ {
72
+ "key": "state",
73
+ "value": "FL"
74
+ },
75
+ {
76
+ "key": "zip",
77
+ "value": "49302"
78
+ },
79
+ {
80
+ "key": "country",
81
+ "value": "IFP"
82
+ }
83
+ ]
34
84
  }
35
85
  }' \
36
86
  "http://$HOST:8080/1.0/kb/accounts/13d26090-b8d7-11e2-9e96-0800200c9a66/paymentMethods?isDefault=true"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.11
1
+ 1.0.12
data/db/ddl.sql CHANGED
@@ -3,6 +3,18 @@ CREATE TABLE `litle_payment_methods` (
3
3
  `kb_account_id` varchar(255) NOT NULL,
4
4
  `kb_payment_method_id` varchar(255) DEFAULT NULL,
5
5
  `litle_token` varchar(255) NOT NULL,
6
+ `cc_first_name` varchar(255) DEFAULT NULL,
7
+ `cc_last_name` varchar(255) DEFAULT NULL,
8
+ `cc_type` varchar(255) DEFAULT NULL,
9
+ `cc_exp_month` int(11) DEFAULT NULL,
10
+ `cc_exp_year` int(11) DEFAULT NULL,
11
+ `cc_last_4` int(11) DEFAULT NULL,
12
+ `address1` varchar(255) DEFAULT NULL,
13
+ `address2` varchar(255) DEFAULT NULL,
14
+ `city` varchar(255) DEFAULT NULL,
15
+ `state` varchar(255) DEFAULT NULL,
16
+ `zip` varchar(255) DEFAULT NULL,
17
+ `country` varchar(255) DEFAULT NULL,
6
18
  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
7
19
  `created_at` datetime NOT NULL,
8
20
  `updated_at` datetime NOT NULL,
@@ -5,6 +5,18 @@ ActiveRecord::Schema.define(:version => 20130311153635) do
5
5
  t.string "kb_account_id", :null => false
6
6
  t.string "kb_payment_method_id" # NULL before Killbill knows about it
7
7
  t.string "litle_token", :null => false
8
+ t.string "cc_first_name"
9
+ t.string "cc_last_name"
10
+ t.string "cc_type"
11
+ t.integer "cc_exp_month"
12
+ t.integer "cc_exp_year"
13
+ t.integer "cc_last_4"
14
+ t.string "address1"
15
+ t.string "address2"
16
+ t.string "city"
17
+ t.string "state"
18
+ t.string "zip"
19
+ t.string "country"
8
20
  t.boolean "is_deleted", :null => false, :default => false
9
21
  t.datetime "created_at", :null => false
10
22
  t.datetime "updated_at", :null => false
@@ -71,12 +71,26 @@ module Killbill::Litle
71
71
  options[:merchant] ||= report_group_for_account(kb_account_id)
72
72
 
73
73
  # TODO Add support for real credit cards
74
- token = (payment_method_props.properties.find { |kv| kv.key == 'paypageRegistrationId' }).value
74
+ token = find_value_from_payment_method_props payment_method_props, 'paypageRegistrationId'
75
75
  litle_response = @gateway.store token, options
76
76
  response = save_response_and_transaction litle_response, :add_payment_method
77
77
 
78
78
  if response.success
79
- LitlePaymentMethod.create :kb_account_id => kb_account_id.to_s, :kb_payment_method_id => kb_payment_method_id.to_s, :litle_token => response.litle_token
79
+ LitlePaymentMethod.create :kb_account_id => kb_account_id.to_s,
80
+ :kb_payment_method_id => kb_payment_method_id.to_s,
81
+ :litle_token => response.litle_token,
82
+ :cc_first_name => find_value_from_payment_method_props(payment_method_props, 'ccFirstName'),
83
+ :cc_last_name => find_value_from_payment_method_props(payment_method_props, 'ccLastName'),
84
+ :cc_type => find_value_from_payment_method_props(payment_method_props, 'ccType'),
85
+ :cc_exp_month => find_value_from_payment_method_props(payment_method_props, 'ccExpMonth'),
86
+ :cc_exp_year => find_value_from_payment_method_props(payment_method_props, 'ccExpYear'),
87
+ :cc_last_4 => find_value_from_payment_method_props(payment_method_props, 'ccLast4'),
88
+ :address1 => find_value_from_payment_method_props(payment_method_props, 'address1'),
89
+ :address2 => find_value_from_payment_method_props(payment_method_props, 'address2'),
90
+ :city => find_value_from_payment_method_props(payment_method_props, 'city'),
91
+ :state => find_value_from_payment_method_props(payment_method_props, 'state'),
92
+ :zip => find_value_from_payment_method_props(payment_method_props, 'zip'),
93
+ :country => find_value_from_payment_method_props(payment_method_props, 'country')
80
94
  else
81
95
  raise response.message
82
96
  end
@@ -104,6 +118,11 @@ module Killbill::Litle
104
118
 
105
119
  private
106
120
 
121
+ def find_value_from_payment_method_props(payment_method_props, key)
122
+ prop = (payment_method_props.properties.find { |kv| kv.key == key })
123
+ prop.nil? ? nil : prop.value
124
+ end
125
+
107
126
  def report_group_for_account(kb_account_id)
108
127
  account = @kb_apis.get_account_by_id(kb_account_id)
109
128
  currency = account.currency
@@ -1,6 +1,20 @@
1
1
  module Killbill::Litle
2
2
  class LitlePaymentMethod < ActiveRecord::Base
3
- attr_accessible :kb_account_id, :kb_payment_method_id, :litle_token
3
+ attr_accessible :kb_account_id,
4
+ :kb_payment_method_id,
5
+ :litle_token,
6
+ :cc_first_name,
7
+ :cc_last_name,
8
+ :cc_type,
9
+ :cc_exp_month,
10
+ :cc_exp_year,
11
+ :cc_last_4,
12
+ :address1,
13
+ :address2,
14
+ :city,
15
+ :state,
16
+ :zip,
17
+ :country
4
18
 
5
19
  def self.from_kb_account_id(kb_account_id)
6
20
  find_all_by_kb_account_id_and_is_deleted(kb_account_id, false)
@@ -27,7 +41,22 @@ module Killbill::Litle
27
41
  properties = []
28
42
  properties << Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, "token", litle_token)
29
43
 
30
- Killbill::Plugin::Model::PaymentMethodPlugin.new(external_payment_method_id, is_default, properties, "CreditCard", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil)
44
+ Killbill::Plugin::Model::PaymentMethodPlugin.new(external_payment_method_id,
45
+ is_default,
46
+ properties,
47
+ nil,
48
+ 'CreditCard',
49
+ cc_name,
50
+ cc_type,
51
+ cc_exp_month,
52
+ cc_exp_year,
53
+ cc_last_4,
54
+ address1,
55
+ address2,
56
+ city,
57
+ state,
58
+ zip,
59
+ country)
31
60
  end
32
61
 
33
62
  def to_payment_method_info_response
@@ -37,5 +66,17 @@ module Killbill::Litle
37
66
 
38
67
  Killbill::Plugin::Model::PaymentMethodInfoPlugin.new(kb_account_id, kb_payment_method_id, is_default, external_payment_method_id)
39
68
  end
69
+
70
+ def cc_name
71
+ if cc_first_name and cc_last_name
72
+ "#{cc_first_name} #{cc_last_name}"
73
+ elsif cc_first_name
74
+ cc_first_name
75
+ elsif cc_last_name
76
+ cc_last_name
77
+ else
78
+ nil
79
+ end
80
+ end
40
81
  end
41
82
  end
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.0.11</version>
28
+ <version>1.0.12</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>
@@ -111,13 +111,55 @@ describe Killbill::Litle::PaymentPlugin do
111
111
 
112
112
  # Generate a token in Litle
113
113
  paypage_registration_id = '123456789012345678901324567890abcdefghi'
114
- info = Killbill::Plugin::Model::PaymentMethodPlugin.new nil, nil, [Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, "paypageRegistrationId", paypage_registration_id)], nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil
114
+ cc_first_name = 'John'
115
+ cc_last_name = 'Doe'
116
+ cc_type = 'VISA'
117
+ cc_exp_month = 12
118
+ cc_exp_year = 2015
119
+ cc_last_4 = 1234
120
+ address1 = '5, oakriu road'
121
+ address2 = 'apt. 298'
122
+ city = 'Gdio Foia'
123
+ state = 'FL'
124
+ zip = 49302
125
+ country = 'IFP'
126
+
127
+ properties = []
128
+ properties << Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, 'paypageRegistrationId', paypage_registration_id)
129
+ properties << Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, 'ccFirstName', cc_first_name)
130
+ properties << Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, 'ccLastName', cc_last_name)
131
+ properties << Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, 'ccType', cc_type)
132
+ properties << Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, 'ccExpMonth', cc_exp_month)
133
+ properties << Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, 'ccExpYear', cc_exp_year)
134
+ properties << Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, 'ccLast4', cc_last_4)
135
+ properties << Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, 'address1', address1)
136
+ properties << Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, 'address2', address2)
137
+ properties << Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, 'city', city)
138
+ properties << Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, 'state', state)
139
+ properties << Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, 'zip', zip)
140
+ properties << Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, 'country', country)
141
+
142
+ info = Killbill::Plugin::Model::PaymentMethodPlugin.new nil, nil, properties, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil
115
143
  payment_method = @plugin.add_payment_method(kb_account_id, kb_payment_method_id, info, true, @call_context)
116
144
 
117
145
  pm = Killbill::Litle::LitlePaymentMethod.from_kb_payment_method_id kb_payment_method_id
146
+ pm.should == payment_method
118
147
  pm.kb_account_id.should == kb_account_id
119
148
  pm.kb_payment_method_id.should == kb_payment_method_id
120
149
  pm.litle_token.should_not be_nil
150
+ pm.cc_first_name.should == cc_first_name
151
+ pm.cc_last_name.should == cc_last_name
152
+ pm.cc_type.should == cc_type
153
+ pm.cc_exp_month.should == cc_exp_month
154
+ pm.cc_exp_year.should == cc_exp_year
155
+ pm.cc_last_4.should == cc_last_4
156
+ pm.address1.should == address1
157
+ pm.address2.should == address2
158
+ pm.city.should == city
159
+ pm.state.should == state
160
+ pm.zip.should == zip.to_s
161
+ pm.country.should == country
162
+
121
163
  pm
122
164
  end
123
165
  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.0.11
4
+ version: 1.0.12
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-30 00:00:00.000000000 Z
12
+ date: 2013-06-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: killbill