killbill-litle 1.9.6 → 1.9.7

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3f01741442afd85b5bc17c183a3f0390b8b8dc03
4
- data.tar.gz: 0a2b5c3e9a1f4c28bd85092fee19fb196ac9c643
3
+ metadata.gz: bc0d66bea92052455c27f5e608fdca9249f0d435
4
+ data.tar.gz: d1c626601553b6e6d05981a954245b09dd7c1bab
5
5
  SHA512:
6
- metadata.gz: 8af245e60186fc8650919daf8f4dac1afad300fe34bdb23814d883e48150d4b0280f119eef4f1a879c0b7e214803846d30222cb6e176eb3a5c6244c2d1e60f1a
7
- data.tar.gz: 0f87a847d67b7954d9ef553677db6247d62ed32760b78ac53dff6a2acdb9f370352ce7c2b83b112b348edf0a25f2185cddd8b6b86170b197bc8fb9efddfe6278
6
+ metadata.gz: 93529b31d8598992e7daac6228d4afe7ef1b7500f622f299ff1e5fc071817893aa12db4258f24df78c5286d6192fdd039a5311b779c676ce047aa652c27e2e8e
7
+ data.tar.gz: 3f9261b41c28ef0987d480c46a07452a14f1955bd336d080ac1fd98aee1a2f4d8a080d386aef6e66e6d5daebcdcbce4ec2c0773baaf545d5bafcc9662908db53
data/Jarfile CHANGED
@@ -1,6 +1,6 @@
1
- jar 'com.ning.billing:killbill-api', '0.7.8'
2
- jar 'com.ning.billing.plugin:killbill-plugin-api-notification', '0.6.2'
3
- jar 'com.ning.billing.plugin:killbill-plugin-api-payment', '0.6.2'
4
- jar 'com.ning.billing.plugin:killbill-plugin-api-currency', '0.6.2'
5
- jar 'com.ning.billing:killbill-util:tests', '0.7.1'
1
+ jar 'com.ning.billing:killbill-api', '0.8.0'
2
+ jar 'com.ning.billing.plugin:killbill-plugin-api-notification', '0.6.3'
3
+ jar 'com.ning.billing.plugin:killbill-plugin-api-payment', '0.6.3'
4
+ jar 'com.ning.billing.plugin:killbill-plugin-api-currency', '0.6.3'
5
+ jar 'com.ning.billing:killbill-util:tests', '0.8.8'
6
6
  jar 'javax.servlet:javax.servlet-api', '3.0.1'
data/NEWS CHANGED
@@ -1,3 +1,11 @@
1
+ 1.9.7
2
+ Implement payments and refunds search
3
+ Fix amount to cents conversion
4
+ Update to latest killbill (2.0.0)
5
+
6
+ 1.9.6
7
+ Update to latest killbill (1.9.0)
8
+
1
9
  1.9.5
2
10
  Bug fixes for currency transaformation
3
11
 
data/README.md CHANGED
@@ -6,6 +6,8 @@ killbill-litle-plugin
6
6
 
7
7
  Plugin to use Litle & Co. as a gateway.
8
8
 
9
+ Release builds are available on [Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.ning.killbill.ruby%22%20AND%20a%3A%22litle-plugin%22) with coordinates `com.ning.killbill.ruby:litle-plugin`.
10
+
9
11
  Requirements
10
12
  ------------
11
13
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.9.6
1
+ 1.9.7
@@ -22,9 +22,10 @@ Gem::Specification.new do |s|
22
22
 
23
23
  s.rdoc_options << '--exclude' << '.'
24
24
 
25
- s.add_dependency 'killbill', '~> 1.9.0'
25
+ s.add_dependency 'killbill', '~> 2.0.0'
26
26
  s.add_dependency 'activemerchant', '~> 1.36.0'
27
27
  s.add_dependency 'activerecord', '~> 3.2.1'
28
+ s.add_dependency 'money', '~> 6.0.0'
28
29
  s.add_dependency 'sinatra', '~> 1.3.4'
29
30
  # LitleOnline gem dependencies
30
31
  s.add_dependency 'LitleOnline', '~> 8.16.0'
@@ -1,6 +1,7 @@
1
1
  require 'active_record'
2
2
  require 'activemerchant'
3
3
  require 'bigdecimal'
4
+ require 'money'
4
5
  require 'pathname'
5
6
  require 'sinatra'
6
7
  require 'singleton'
@@ -14,7 +14,8 @@ module Killbill::Litle
14
14
  end
15
15
 
16
16
  def process_payment(kb_account_id, kb_payment_id, kb_payment_method_id, amount, currency, call_context = nil, options = {})
17
- amount_in_cents = (amount * 100).to_i
17
+ # Use Money to compute the amount in cents, as it depends on the currency (1 cent of BTC is 1 Satoshi, not 0.01 BTC)
18
+ amount_in_cents = Money.new_with_amount(amount, currency).cents.to_i
18
19
 
19
20
  # If the payment was already made, just return the status
20
21
  # TODO Should we set the Litle Id field to check for dups (https://www.litle.com/mc-secure/DupeChecking_V1.2.pdf)?
@@ -55,7 +56,8 @@ module Killbill::Litle
55
56
  end
56
57
 
57
58
  def process_refund(kb_account_id, kb_payment_id, amount, currency, call_context = nil, options = {})
58
- amount_in_cents = (amount * 100).to_i
59
+ # Use Money to compute the amount in cents, as it depends on the currency (1 cent of BTC is 1 Satoshi, not 0.01 BTC)
60
+ amount_in_cents = Money.new_with_amount(amount, currency).cents.to_i
59
61
 
60
62
  # Check for currency conversion
61
63
  actual_amount, actual_currency = convert_amount_currency_if_required(amount_in_cents, currency, kb_payment_id)
@@ -75,9 +77,9 @@ module Killbill::Litle
75
77
  def get_refund_info(kb_account_id, kb_payment_id, tenant_context = nil, options = {})
76
78
  # We assume the refund is immutable in Litle and only look at our tables since there
77
79
  # doesn't seem to be a Litle API to fetch details for a given transaction.
78
- litle_transaction = LitleTransaction.refund_from_kb_payment_id(kb_payment_id)
80
+ litle_transactions = LitleTransaction.refunds_from_kb_payment_id(kb_payment_id)
79
81
 
80
- litle_transaction.litle_response.to_refund_response
82
+ litle_transactions.map { |t| t.litle_response.to_refund_response }
81
83
  end
82
84
 
83
85
  def add_payment_method(kb_account_id, kb_payment_method_id, payment_method_props, set_default, call_context = nil, options = {})
@@ -165,6 +167,14 @@ module Killbill::Litle
165
167
  end
166
168
  end
167
169
 
170
+ def search_payments(search_key, offset = 0, limit = 100, call_context = nil, options = {})
171
+ LitleResponse.search(search_key, offset, limit, :payment)
172
+ end
173
+
174
+ def search_refunds(search_key, offset = 0, limit = 100, call_context = nil, options = {})
175
+ LitleResponse.search(search_key, offset, limit, :refund)
176
+ end
177
+
168
178
  def search_payment_methods(search_key, offset = 0, limit = 100, call_context = nil, options = {})
169
179
  LitlePaymentMethod.search(search_key, offset, limit)
170
180
  end
@@ -84,6 +84,52 @@ module Killbill::Litle
84
84
  to_killbill_response :refund
85
85
  end
86
86
 
87
+ # VisibleForTesting
88
+ def self.search_query(api_call, search_key, offset = nil, limit = nil)
89
+ t = self.arel_table
90
+
91
+ # Exact matches only
92
+ where_clause = t[:params_litleonelineresponse_saleresponse_id].eq(search_key)
93
+ .or(t[:params_litleonelineresponse_saleresponse_litle_txn_id].eq(search_key))
94
+ .or(t[:params_litleonelineresponse_saleresponse_order_id].eq(search_key))
95
+ .or(t[:params_litleonelineresponse_saleresponse_auth_code].eq(search_key))
96
+
97
+ # Only search successful payments and refunds
98
+ where_clause = where_clause.and(t[:api_call].eq(api_call))
99
+ .and(t[:success].eq(true))
100
+
101
+ query = t.where(where_clause)
102
+ .order(t[:id])
103
+
104
+ if offset.blank? and limit.blank?
105
+ # true is for count distinct
106
+ query.project(t[:id].count(true))
107
+ else
108
+ query.skip(offset) unless offset.blank?
109
+ query.take(limit) unless limit.blank?
110
+ query.project(t[Arel.star])
111
+ # Not chainable
112
+ query.distinct
113
+ end
114
+ query
115
+ end
116
+
117
+ def self.search(search_key, offset = 0, limit = 100, type = :payment)
118
+ api_call = type == :payment ? 'charge' : 'refund'
119
+ pagination = Killbill::Plugin::Model::Pagination.new
120
+ pagination.current_offset = offset
121
+ pagination.total_nb_records = self.count_by_sql(self.search_query(api_call, search_key))
122
+ pagination.max_nb_records = self.where(:api_call => api_call, :success => true).count
123
+ pagination.next_offset = (!pagination.total_nb_records.nil? && offset + limit >= pagination.total_nb_records) ? nil : offset + limit
124
+ # Reduce the limit if the specified value is larger than the number of records
125
+ actual_limit = [pagination.max_nb_records, limit].min
126
+ pagination.iterator = StreamyResultSet.new(actual_limit) do |offset,limit|
127
+ self.find_by_sql(self.search_query(api_call, search_key, offset, limit))
128
+ .map { |x| type == :payment ? x.to_payment_response : x.to_refund_response }
129
+ end
130
+ pagination
131
+ end
132
+
87
133
  private
88
134
 
89
135
  def to_killbill_response(type)
@@ -97,8 +143,8 @@ module Killbill::Litle
97
143
  amount_in_cents = litle_transaction.amount_in_cents
98
144
  currency = litle_transaction.currency
99
145
  created_date = litle_transaction.created_at
100
- first_payment_reference_id = params_litleonelineresponse_saleresponse_id
101
- second_payment_reference_id = litle_transaction.litle_txn_id
146
+ first_reference_id = params_litleonelineresponse_saleresponse_id
147
+ second_reference_id = litle_transaction.litle_txn_id
102
148
  end
103
149
 
104
150
  effective_date = params_litleonelineresponse_saleresponse_response_time || created_date
@@ -107,26 +153,29 @@ module Killbill::Litle
107
153
 
108
154
  if type == :payment
109
155
  p_info_plugin = Killbill::Plugin::Model::PaymentInfoPlugin.new
110
- p_info_plugin.amount = BigDecimal.new(amount_in_cents.to_s) / 100.0 if amount_in_cents
156
+ p_info_plugin.kb_payment_id = kb_payment_id
157
+ p_info_plugin.amount = Money.new(amount_in_cents, currency).to_d if currency
111
158
  p_info_plugin.currency = currency
112
159
  p_info_plugin.created_date = created_date
113
160
  p_info_plugin.effective_date = effective_date
114
161
  p_info_plugin.status = (success ? :PROCESSED : :ERROR)
115
162
  p_info_plugin.gateway_error = gateway_error
116
163
  p_info_plugin.gateway_error_code = gateway_error_code
117
- p_info_plugin.first_payment_reference_id = first_payment_reference_id
118
- p_info_plugin.second_payment_reference_id = second_payment_reference_id
164
+ p_info_plugin.first_payment_reference_id = first_reference_id
165
+ p_info_plugin.second_payment_reference_id = second_reference_id
119
166
  p_info_plugin
120
167
  else
121
168
  r_info_plugin = Killbill::Plugin::Model::RefundInfoPlugin.new
122
- r_info_plugin.amount = BigDecimal.new(amount_in_cents.to_s) / 100.0 if amount_in_cents
169
+ r_info_plugin.kb_payment_id = kb_payment_id
170
+ r_info_plugin.amount = Money.new(amount_in_cents, currency).to_d if currency
123
171
  r_info_plugin.currency = currency
124
172
  r_info_plugin.created_date = created_date
125
173
  r_info_plugin.effective_date = effective_date
126
174
  r_info_plugin.status = (success ? :PROCESSED : :ERROR)
127
175
  r_info_plugin.gateway_error = gateway_error
128
176
  r_info_plugin.gateway_error_code = gateway_error_code
129
- r_info_plugin.reference_id = first_payment_reference_id
177
+ r_info_plugin.first_refund_reference_id = first_reference_id
178
+ r_info_plugin.second_refund_reference_id = second_reference_id
130
179
  r_info_plugin
131
180
  end
132
181
  end
@@ -4,18 +4,11 @@ module Killbill::Litle
4
4
  attr_accessible :amount_in_cents, :currency, :api_call, :kb_payment_id, :litle_txn_id
5
5
 
6
6
  def self.from_kb_payment_id(kb_payment_id)
7
- single_transaction_from_kb_payment_id :charge, kb_payment_id
7
+ transaction_from_kb_payment_id :charge, kb_payment_id, :single
8
8
  end
9
9
 
10
- def self.refund_from_kb_payment_id(kb_payment_id)
11
- single_transaction_from_kb_payment_id :refund, kb_payment_id
12
- end
13
-
14
- def self.single_transaction_from_kb_payment_id(api_call, kb_payment_id)
15
- litle_transactions = find_all_by_api_call_and_kb_payment_id(api_call, kb_payment_id)
16
- raise "Unable to find Litle transaction id for payment #{kb_payment_id}" if litle_transactions.empty?
17
- raise "Killbill payment mapping to multiple Litle transactions for payment #{kb_payment_id}" if litle_transactions.size > 1
18
- litle_transactions[0]
10
+ def self.refunds_from_kb_payment_id(kb_payment_id)
11
+ transaction_from_kb_payment_id :refund, kb_payment_id, :multiple
19
12
  end
20
13
 
21
14
  def self.find_candidate_transaction_for_refund(kb_payment_id, amount_in_cents)
@@ -34,5 +27,18 @@ module Killbill::Litle
34
27
 
35
28
  litle_transactions.first
36
29
  end
30
+
31
+ private
32
+
33
+ def self.transaction_from_kb_payment_id(api_call, kb_payment_id, how_many)
34
+ litle_transactions = find_all_by_api_call_and_kb_payment_id(api_call, kb_payment_id)
35
+ raise "Unable to find Litle transaction id for payment #{kb_payment_id}" if litle_transactions.empty?
36
+ if how_many == :single
37
+ raise "Killbill payment mapping to multiple Litle transactions for payment #{kb_payment_id}" if litle_transactions.size > 1
38
+ litle_transactions[0]
39
+ else
40
+ litle_transactions
41
+ end
42
+ end
37
43
  end
38
44
  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.9.6</version>
28
+ <version>1.9.7</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>
@@ -0,0 +1,91 @@
1
+ require 'spec_helper'
2
+
3
+ describe Killbill::Litle::LitleResponse do
4
+ before :all do
5
+ Killbill::Litle::LitleResponse.delete_all
6
+ end
7
+
8
+ it 'should generate the right SQL query' do
9
+ # Check count query (search query numeric)
10
+ expected_query = "SELECT COUNT(DISTINCT \"litle_responses\".\"id\") FROM \"litle_responses\" WHERE (((\"litle_responses\".\"params_litleonelineresponse_saleresponse_id\" = '1234' OR \"litle_responses\".\"params_litleonelineresponse_saleresponse_litle_txn_id\" = '1234') OR \"litle_responses\".\"params_litleonelineresponse_saleresponse_order_id\" = '1234') OR \"litle_responses\".\"params_litleonelineresponse_saleresponse_auth_code\" = '1234') AND \"litle_responses\".\"api_call\" = 'charge' AND \"litle_responses\".\"success\" = 't' ORDER BY \"litle_responses\".\"id\""
11
+ # Note that Kill Bill will pass a String, even for numeric types
12
+ Killbill::Litle::LitleResponse.search_query('charge', '1234').to_sql.should == expected_query
13
+
14
+ # Check query with results (search query numeric)
15
+ expected_query = "SELECT DISTINCT \"litle_responses\".* FROM \"litle_responses\" WHERE (((\"litle_responses\".\"params_litleonelineresponse_saleresponse_id\" = '1234' OR \"litle_responses\".\"params_litleonelineresponse_saleresponse_litle_txn_id\" = '1234') OR \"litle_responses\".\"params_litleonelineresponse_saleresponse_order_id\" = '1234') OR \"litle_responses\".\"params_litleonelineresponse_saleresponse_auth_code\" = '1234') AND \"litle_responses\".\"api_call\" = 'charge' AND \"litle_responses\".\"success\" = 't' ORDER BY \"litle_responses\".\"id\" LIMIT 10 OFFSET 0"
16
+ # Note that Kill Bill will pass a String, even for numeric types
17
+ Killbill::Litle::LitleResponse.search_query('charge', '1234', 0, 10).to_sql.should == expected_query
18
+
19
+ # Check count query (search query string)
20
+ expected_query = "SELECT COUNT(DISTINCT \"litle_responses\".\"id\") FROM \"litle_responses\" WHERE (((\"litle_responses\".\"params_litleonelineresponse_saleresponse_id\" = 'XXX' OR \"litle_responses\".\"params_litleonelineresponse_saleresponse_litle_txn_id\" = 'XXX') OR \"litle_responses\".\"params_litleonelineresponse_saleresponse_order_id\" = 'XXX') OR \"litle_responses\".\"params_litleonelineresponse_saleresponse_auth_code\" = 'XXX') AND \"litle_responses\".\"api_call\" = 'charge' AND \"litle_responses\".\"success\" = 't' ORDER BY \"litle_responses\".\"id\""
21
+ Killbill::Litle::LitleResponse.search_query('charge', 'XXX').to_sql.should == expected_query
22
+
23
+ # Check query with results (search query string)
24
+ expected_query = "SELECT DISTINCT \"litle_responses\".* FROM \"litle_responses\" WHERE (((\"litle_responses\".\"params_litleonelineresponse_saleresponse_id\" = 'XXX' OR \"litle_responses\".\"params_litleonelineresponse_saleresponse_litle_txn_id\" = 'XXX') OR \"litle_responses\".\"params_litleonelineresponse_saleresponse_order_id\" = 'XXX') OR \"litle_responses\".\"params_litleonelineresponse_saleresponse_auth_code\" = 'XXX') AND \"litle_responses\".\"api_call\" = 'charge' AND \"litle_responses\".\"success\" = 't' ORDER BY \"litle_responses\".\"id\" LIMIT 10 OFFSET 0"
25
+ Killbill::Litle::LitleResponse.search_query('charge', 'XXX', 0, 10).to_sql.should == expected_query
26
+ end
27
+
28
+ it 'should search all fields' do
29
+ do_search('foo').size.should == 0
30
+
31
+ pm = Killbill::Litle::LitleResponse.create :api_call => 'charge',
32
+ :kb_payment_id => '11-22-33-44',
33
+ :params_litleonelineresponse_saleresponse_id => '55-66-77-88',
34
+ :params_litleonelineresponse_saleresponse_litle_txn_id => 38102343,
35
+ :params_litleonelineresponse_saleresponse_order_id => 'order-id-1',
36
+ :params_litleonelineresponse_saleresponse_auth_code => 'auth-code-1',
37
+ :success => true
38
+
39
+ # Wrong api_call
40
+ ignored1 = Killbill::Litle::LitleResponse.create :api_call => 'add_payment_method',
41
+ :kb_payment_id => pm.kb_payment_id,
42
+ :params_litleonelineresponse_saleresponse_id => pm.params_litleonelineresponse_saleresponse_id,
43
+ :params_litleonelineresponse_saleresponse_litle_txn_id => pm.params_litleonelineresponse_saleresponse_litle_txn_id,
44
+ :params_litleonelineresponse_saleresponse_order_id => pm.params_litleonelineresponse_saleresponse_order_id,
45
+ :params_litleonelineresponse_saleresponse_auth_code => pm.params_litleonelineresponse_saleresponse_auth_code,
46
+ :success => true
47
+
48
+ # Not successful
49
+ ignored2 = Killbill::Litle::LitleResponse.create :api_call => 'charge',
50
+ :kb_payment_id => pm.kb_payment_id,
51
+ :params_litleonelineresponse_saleresponse_id => pm.params_litleonelineresponse_saleresponse_id,
52
+ :params_litleonelineresponse_saleresponse_litle_txn_id => pm.params_litleonelineresponse_saleresponse_litle_txn_id,
53
+ :params_litleonelineresponse_saleresponse_order_id => pm.params_litleonelineresponse_saleresponse_order_id,
54
+ :params_litleonelineresponse_saleresponse_auth_code => pm.params_litleonelineresponse_saleresponse_auth_code,
55
+ :success => false
56
+
57
+ do_search('foo').size.should == 0
58
+ do_search(pm.params_litleonelineresponse_saleresponse_id).size.should == 1
59
+ do_search(pm.params_litleonelineresponse_saleresponse_litle_txn_id).size.should == 1
60
+ do_search(pm.params_litleonelineresponse_saleresponse_order_id).size.should == 1
61
+ do_search(pm.params_litleonelineresponse_saleresponse_auth_code).size.should == 1
62
+
63
+ pm2 = Killbill::Litle::LitleResponse.create :api_call => 'charge',
64
+ :kb_payment_id => '11-22-33-44',
65
+ :params_litleonelineresponse_saleresponse_id => '11-22-33-44',
66
+ :params_litleonelineresponse_saleresponse_litle_txn_id => pm.params_litleonelineresponse_saleresponse_litle_txn_id,
67
+ :params_litleonelineresponse_saleresponse_order_id => 'order-id-2',
68
+ :params_litleonelineresponse_saleresponse_auth_code => 'auth-code-2',
69
+ :success => true
70
+
71
+ do_search('foo').size.should == 0
72
+ do_search(pm.params_litleonelineresponse_saleresponse_id).size.should == 1
73
+ do_search(pm.params_litleonelineresponse_saleresponse_litle_txn_id).size.should == 2
74
+ do_search(pm.params_litleonelineresponse_saleresponse_order_id).size.should == 1
75
+ do_search(pm.params_litleonelineresponse_saleresponse_auth_code).size.should == 1
76
+ do_search(pm2.params_litleonelineresponse_saleresponse_id).size.should == 1
77
+ do_search(pm2.params_litleonelineresponse_saleresponse_litle_txn_id).size.should == 2
78
+ do_search(pm2.params_litleonelineresponse_saleresponse_order_id).size.should == 1
79
+ do_search(pm2.params_litleonelineresponse_saleresponse_auth_code).size.should == 1
80
+ end
81
+
82
+ private
83
+
84
+ def do_search(search_key)
85
+ pagination = Killbill::Litle::LitleResponse.search(search_key)
86
+ pagination.current_offset.should == 0
87
+ results = pagination.iterator.to_a
88
+ pagination.total_nb_records.should == results.size
89
+ results
90
+ end
91
+ end
@@ -92,10 +92,11 @@ describe Killbill::Litle::PaymentPlugin do
92
92
  response.success.should be_true
93
93
 
94
94
  # Check we can retrieve the refund
95
- refund_response = @plugin.get_refund_info pm.kb_account_id, kb_payment_id
95
+ refund_responses = @plugin.get_refund_info pm.kb_account_id, kb_payment_id
96
+ refund_responses.size.should == 1
96
97
  # Apparently, Litle returns positive amounts for refunds
97
- refund_response.amount.should == amount
98
- refund_response.status.should == :PROCESSED
98
+ refund_responses[0].amount.should == amount
99
+ refund_responses[0].status.should == :PROCESSED
99
100
 
100
101
  # Make sure we can charge again the same payment method
101
102
  second_amount = BigDecimal.new("294.71")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: killbill-litle
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.6
4
+ version: 1.9.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kill Bill core team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-03 00:00:00.000000000 Z
11
+ date: 2014-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: killbill
@@ -16,12 +16,12 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 1.9.0
19
+ version: 2.0.0
20
20
  requirement: !ruby/object:Gem::Requirement
21
21
  requirements:
22
22
  - - ~>
23
23
  - !ruby/object:Gem::Version
24
- version: 1.9.0
24
+ version: 2.0.0
25
25
  prerelease: false
26
26
  type: :runtime
27
27
  - !ruby/object:Gem::Dependency
@@ -52,6 +52,20 @@ dependencies:
52
52
  version: 3.2.1
53
53
  prerelease: false
54
54
  type: :runtime
55
+ - !ruby/object:Gem::Dependency
56
+ name: money
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 6.0.0
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ~>
65
+ - !ruby/object:Gem::Version
66
+ version: 6.0.0
67
+ prerelease: false
68
+ type: :runtime
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: sinatra
57
71
  version_requirements: !ruby/object:Gem::Requirement
@@ -215,6 +229,7 @@ files:
215
229
  - spec/litle/base_plugin_spec.rb
216
230
  - spec/litle/currency_conversion_spec.rb
217
231
  - spec/litle/litle_payment_method_spec.rb
232
+ - spec/litle/litle_response_spec.rb
218
233
  - spec/litle/remote/integration_spec.rb
219
234
  - spec/litle/utils_spec.rb
220
235
  - spec/spec_helper.rb
@@ -248,6 +263,7 @@ test_files:
248
263
  - spec/litle/base_plugin_spec.rb
249
264
  - spec/litle/currency_conversion_spec.rb
250
265
  - spec/litle/litle_payment_method_spec.rb
266
+ - spec/litle/litle_response_spec.rb
251
267
  - spec/litle/remote/integration_spec.rb
252
268
  - spec/litle/utils_spec.rb
253
269
  - spec/spec_helper.rb