killbill-braintree_blue 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4992954dab3fce38eee200d6e172d6868b3cc7ad
4
- data.tar.gz: 5cbf36e206397bdabbc2f42d8aab29a5455bdc7e
3
+ metadata.gz: f67df308d6753a2d7dbe3b4835d61afeb8a90bd5
4
+ data.tar.gz: 32e19fb2d8eb1f89f92e8d05dad9f8540716e67a
5
5
  SHA512:
6
- metadata.gz: f446e080f6e1696604c89d04675d7b2e954a6d7ba9e797b5628c114f0b187d0eab6f42ae262936be9278cd67560e9bf24d7e43688664c8417bb8b27110c1390b
7
- data.tar.gz: ded54d6b77e13bec7409f1ffc68a22a2aab3e58985bd719da0643b2a85437dd831bc122edc9e52c2ec27e27a2627c5e7403fc3e61d1ee91cddd08d54e53bd0d1
6
+ metadata.gz: ca5546f90c37178613b3b8a9dd0284980f38e3025160532ac04258266d2c3f3e5d9c2f62a2549af39b35925816c1a8591d95e4564306afe5b110dce03d45be8f
7
+ data.tar.gz: 57b16ad999435a2e71c71de1feda3f315613db5387843817130b5b6cd754dbf3cfcdd5049b5e35c036694732c960acbb3a5137bf7698be6d1d734e8ff41dfa3b
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- killbill-braintree_blue (0.2.0)
4
+ killbill-braintree_blue (0.2.1)
5
5
  actionpack (~> 4.1.0)
6
6
  actionview (~> 4.1.0)
7
7
  activemerchant (~> 1.55.0)
@@ -20,13 +20,13 @@ PATH
20
20
  GEM
21
21
  remote: https://rubygems.org/
22
22
  specs:
23
- actionpack (4.1.14)
24
- actionview (= 4.1.14)
25
- activesupport (= 4.1.14)
23
+ actionpack (4.1.15)
24
+ actionview (= 4.1.15)
25
+ activesupport (= 4.1.15)
26
26
  rack (~> 1.5.2)
27
27
  rack-test (~> 0.6.2)
28
- actionview (4.1.14)
29
- activesupport (= 4.1.14)
28
+ actionview (4.1.15)
29
+ activesupport (= 4.1.15)
30
30
  builder (~> 3.1)
31
31
  erubis (~> 2.7.0)
32
32
  active_utils (3.0.0)
@@ -37,17 +37,17 @@ GEM
37
37
  builder (>= 2.1.2, < 4.0.0)
38
38
  i18n (>= 0.6.9)
39
39
  nokogiri (~> 1.4)
40
- activemodel (4.1.14)
41
- activesupport (= 4.1.14)
40
+ activemodel (4.1.15)
41
+ activesupport (= 4.1.15)
42
42
  builder (~> 3.1)
43
- activerecord (4.1.14)
44
- activemodel (= 4.1.14)
45
- activesupport (= 4.1.14)
43
+ activerecord (4.1.15)
44
+ activemodel (= 4.1.15)
45
+ activesupport (= 4.1.15)
46
46
  arel (~> 5.0.0)
47
47
  activerecord-bogacs (0.4.1)
48
- activerecord-jdbc-adapter (1.3.19)
48
+ activerecord-jdbc-adapter (1.3.20)
49
49
  activerecord (>= 2.2)
50
- activesupport (4.1.14)
50
+ activesupport (4.1.15)
51
51
  i18n (~> 0.6, >= 0.6.9)
52
52
  json (~> 1.7, >= 1.7.7)
53
53
  minitest (~> 5.1)
@@ -68,7 +68,7 @@ GEM
68
68
  diff-lcs (1.1.3)
69
69
  equalizer (0.0.11)
70
70
  erubis (2.7.0)
71
- ethon (0.8.0)
71
+ ethon (0.8.1)
72
72
  ffi (>= 1.3.0)
73
73
  ffi (1.9.10-java)
74
74
  i18n (0.7.0)
@@ -81,21 +81,21 @@ GEM
81
81
  ruby-maven (~> 3.3, >= 3.3.3)
82
82
  jdbc-mariadb (1.2.3)
83
83
  jdbc-sqlite3 (3.8.11.2)
84
- jruby-openssl (0.9.12-java)
84
+ jruby-openssl (0.9.16-java)
85
85
  json (1.8.3-java)
86
- killbill (7.0.0)
86
+ killbill (7.0.3)
87
87
  rack (>= 1.5.2)
88
88
  sinatra (~> 1.3.4)
89
89
  typhoeus (~> 0.6.9)
90
90
  tzinfo (~> 1.2.0)
91
91
  maven-tools (1.0.13)
92
92
  virtus (~> 1.0)
93
- minitest (5.8.3)
93
+ minitest (5.8.4)
94
94
  monetize (1.1.0)
95
95
  money (~> 6.5.0)
96
96
  money (6.5.1)
97
97
  i18n (>= 0.6.4, <= 0.7.0)
98
- nokogiri (1.6.7.1-java)
98
+ nokogiri (1.6.7.2-java)
99
99
  offsite_payments (2.1.0)
100
100
  actionpack (>= 3.2.20, < 5.0.0)
101
101
  active_utils (~> 3.0.0)
@@ -149,4 +149,4 @@ DEPENDENCIES
149
149
  rspec (~> 2.12.0)
150
150
 
151
151
  BUNDLED WITH
152
- 1.10.6
152
+ 1.11.2
data/NEWS CHANGED
@@ -1,3 +1,9 @@
1
+ 0.2.1
2
+ Fix merchant_id look-up in multi-tenancy configuration
3
+ Increase default message field length to 510
4
+ Add endpoint to generate token
5
+ Add ability to add additional cards on existing customer using nonce
6
+
1
7
  0.2.0
2
8
  Initial release for Kill Bill 0.16.x
3
9
 
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  killbill-braintree-plugin
2
2
  =========================
3
3
 
4
- Plugin was first developed by Ardura sp. z o.o.
5
- See original repo https://bitbucket.org/safekiddo/killbill-braintree-blue-plugin.git
4
+ Plugin to use [Braintree](https://www.braintreepayments.com/) as a gateway.
6
5
 
7
- We cloned the repo to have it on github along with the other payment plugins supported on Kill Bill.
8
- It is advisable to also check for latest commit from original repo before using.
6
+ Release builds are available on [Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.kill-bill.billing.plugin.ruby%22%20AND%20a%3A%22braintree_blue-plugin%22) with coordinates `org.kill-bill.billing.plugin.ruby:braintree_blue-plugin`.
7
+
8
+ This plugin was originally developed by [Ardura sp. z o.o.](https://bitbucket.org/safekiddo/killbill-braintree-blue-plugin.git).
9
9
 
10
10
  Kill Bill compatibility
11
11
  -----------------------
@@ -46,3 +46,218 @@ To go to production, create a `braintree_blue.yml` configuration file under `/va
46
46
  :test: false
47
47
  ```
48
48
 
49
+ Usage
50
+ -----
51
+
52
+ To create a customer and tokenize a credit card:
53
+
54
+ ```
55
+ curl -v \
56
+ -X POST \
57
+ -u admin:password \
58
+ -H 'X-Killbill-ApiKey: bob' \
59
+ -H 'X-Killbill-ApiSecret: lazar' \
60
+ -H 'X-Killbill-CreatedBy: admin' \
61
+ -H 'Content-Type: application/json' \
62
+ -d '{
63
+ "pluginName": "killbill-braintree_blue",
64
+ "pluginInfo": {
65
+ "properties": [
66
+ {
67
+ "key": "ccFirstName",
68
+ "value": "John"
69
+ },
70
+ {
71
+ "key": "ccLastName",
72
+ "value": "Doe"
73
+ },
74
+ {
75
+ "key": "address1",
76
+ "value": "5th Street"
77
+ },
78
+ {
79
+ "key": "city",
80
+ "value": "San Francisco"
81
+ },
82
+ {
83
+ "key": "zip",
84
+ "value": "94111"
85
+ },
86
+ {
87
+ "key": "state",
88
+ "value": "CA"
89
+ },
90
+ {
91
+ "key": "country",
92
+ "value": "US"
93
+ },
94
+ {
95
+ "key": "ccExpirationMonth",
96
+ "value": 12
97
+ },
98
+ {
99
+ "key": "ccExpirationYear",
100
+ "value": 2017
101
+ },
102
+ {
103
+ "key": "ccNumber",
104
+ "value": "4111111111111111"
105
+ }
106
+ ]
107
+ }
108
+ }' \
109
+ "http://127.0.0.1:8080/1.0/kb/accounts/<ACCOUNT_ID>/paymentMethods?isDefault=true"
110
+ ```
111
+
112
+ The token can then be used for payments:
113
+
114
+ ```
115
+ curl -v \
116
+ -X POST \
117
+ -u admin:password \
118
+ -H 'X-Killbill-ApiKey: bob' \
119
+ -H 'X-Killbill-ApiSecret: lazar' \
120
+ -H 'X-Killbill-CreatedBy: admin' \
121
+ -H 'Content-Type: application/json' \
122
+ -d '{
123
+ "transactionType": "AUTHORIZE",
124
+ "amount": 5
125
+ }' \
126
+ http://127.0.0.1:8080/1.0/kb/accounts/<ACCOUNT_ID>/payments
127
+ ```
128
+
129
+ Alternatively, if you are using the JS v2 SDK, generate a nonce as follows:
130
+
131
+ ```
132
+ <!DOCTYPE html>
133
+ <html>
134
+ <head>
135
+ <script src="https://js.braintreegateway.com/v2/braintree.js"></script>
136
+ </head>
137
+ <body>
138
+ <script>
139
+ var client = new braintree.api.Client({clientToken: token});
140
+
141
+ client.tokenizeCard({
142
+ number: "4111111111111111",
143
+ expirationDate: "10/20"
144
+ }, function (err, nonce) {
145
+ console.log(nonce);
146
+ });
147
+ </script>
148
+ </body>
149
+ </html>
150
+ ```
151
+
152
+ where `token` is the server-side generated client token. For convenience, the plugin provides an endpoint to generate it:
153
+
154
+ ```
155
+ curl http://127.0.0.1:8080/plugins/killbill-braintree_blue/token?kb_tenant_id=<TENANT_ID>
156
+ ```
157
+
158
+ You can then create the customer with the nonce:
159
+
160
+ ```
161
+ curl -v \
162
+ -X POST \
163
+ -u admin:password \
164
+ -H 'X-Killbill-ApiKey: bob' \
165
+ -H 'X-Killbill-ApiSecret: lazar' \
166
+ -H 'X-Killbill-CreatedBy: admin' \
167
+ -H 'Content-Type: application/json' \
168
+ -d '{
169
+ "pluginName": "killbill-braintree_blue",
170
+ "pluginInfo": {
171
+ "properties": [
172
+ {
173
+ "key": "ccFirstName",
174
+ "value": "John"
175
+ },
176
+ {
177
+ "key": "ccLastName",
178
+ "value": "Doe"
179
+ },
180
+ {
181
+ "key": "address1",
182
+ "value": "5th Street"
183
+ },
184
+ {
185
+ "key": "city",
186
+ "value": "San Francisco"
187
+ },
188
+ {
189
+ "key": "zip",
190
+ "value": "94111"
191
+ },
192
+ {
193
+ "key": "state",
194
+ "value": "CA"
195
+ },
196
+ {
197
+ "key": "country",
198
+ "value": "US"
199
+ },
200
+ {
201
+ "key": "token",
202
+ "value": "<NONCE>"
203
+ }
204
+ ]
205
+ }
206
+ }' \
207
+ "http://127.0.0.1:8080/1.0/kb/accounts/<ACCOUNT_ID>/paymentMethods?isDefault=true"
208
+ ```
209
+
210
+ To add a second card on an existing customer using a nonce:
211
+
212
+ ```
213
+ curl -v \
214
+ -X POST \
215
+ -u admin:password \
216
+ -H 'X-Killbill-ApiKey: bob' \
217
+ -H 'X-Killbill-ApiSecret: lazar' \
218
+ -H 'X-Killbill-CreatedBy: admin' \
219
+ -H 'Content-Type: application/json' \
220
+ -d '{
221
+ "pluginName": "killbill-braintree_blue",
222
+ "pluginInfo": {
223
+ "properties": [
224
+ {
225
+ "key": "token",
226
+ "value": "<NONCE>"
227
+ }
228
+ ]
229
+ }
230
+ }' \
231
+ "http://127.0.0.1:8080/1.0/kb/accounts/<ACCOUNT_ID>/paymentMethods?isDefault=true"
232
+ ```
233
+
234
+ Plugin properties
235
+ -----------------
236
+
237
+ | Key | Description |
238
+ | ---------------------------: | ----------------------------------------------------------------- |
239
+ | skip_gw | If true, skip the call to Braintree |
240
+ | payment_processor_account_id | Config entry name of the merchant account to use |
241
+ | external_key_as_order_id | If true, set the payment external key as the Braintree order id |
242
+ | customer | Braintree customer id |
243
+ | payment_method_nonce | Payment method nonce |
244
+ | token | Braintree token |
245
+ | cc_first_name | Credit card holder first name |
246
+ | cc_last_name | Credit card holder last name |
247
+ | cc_type | Credit card brand |
248
+ | cc_expiration_month | Credit card expiration month |
249
+ | cc_expiration_year | Credit card expiration year |
250
+ | cc_verification_value | CVC/CVV/CVN |
251
+ | email | Purchaser email |
252
+ | address1 | Billing address first line |
253
+ | address2 | Billing address second line |
254
+ | city | Billing address city |
255
+ | zip | Billing address zip code |
256
+ | state | Billing address state |
257
+ | country | Billing address country |
258
+ | eci | Network tokenization attribute |
259
+ | payment_cryptogram | Network tokenization attribute |
260
+ | transaction_id | Network tokenization attribute |
261
+ | payment_instrument_name | ApplePay tokenization attribute |
262
+ | payment_network | ApplePay tokenization attribute |
263
+ | transaction_identifier | ApplePay tokenization attribute |
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
data/db/ddl.sql CHANGED
@@ -57,7 +57,7 @@ CREATE TABLE `braintree_blue_responses` (
57
57
  `kb_payment_transaction_id` varchar(255) DEFAULT NULL,
58
58
  `transaction_type` varchar(255) DEFAULT NULL,
59
59
  `payment_processor_account_id` varchar(255) DEFAULT NULL,
60
- `message` varchar(255) DEFAULT NULL,
60
+ `message` varchar(510) DEFAULT NULL,
61
61
  `authorization` varchar(255) DEFAULT NULL,
62
62
  `fraud_review` tinyint(1) DEFAULT NULL,
63
63
  `test` tinyint(1) DEFAULT NULL,
@@ -4,7 +4,7 @@ module Killbill #:nodoc:
4
4
 
5
5
  def initialize
6
6
  gateway_builder = Proc.new do |config|
7
- # Change this if needed
7
+ ::ActiveMerchant::Billing::BraintreeBlueGateway.application_id = config[:channel] || 'killbill_SP'
8
8
  ::ActiveMerchant::Billing::BraintreeBlueGateway.new :merchant_id => config[:merchant_id],
9
9
  :public_key => config[:public_key],
10
10
  :private_key => config[:private_key]
@@ -30,7 +30,7 @@ module Killbill #:nodoc:
30
30
  :payment_method_token => true
31
31
  }
32
32
 
33
- options.merge(get_merchant_id(currency))
33
+ options.merge(get_merchant_id(currency, context.tenant_id))
34
34
 
35
35
  properties = merge_properties(properties, options)
36
36
  super(kb_account_id, kb_payment_id, kb_payment_transaction_id, kb_payment_method_id, amount, currency, properties, context)
@@ -39,7 +39,7 @@ module Killbill #:nodoc:
39
39
  def capture_payment(kb_account_id, kb_payment_id, kb_payment_transaction_id, kb_payment_method_id, amount, currency, properties, context)
40
40
  # Pass extra parameters for the gateway here
41
41
  options = {}
42
- options.merge(get_merchant_id(currency))
42
+ options.merge(get_merchant_id(currency, context.tenant_id))
43
43
  properties = merge_properties(properties, options)
44
44
  super(kb_account_id, kb_payment_id, kb_payment_transaction_id, kb_payment_method_id, amount, currency, properties, context)
45
45
  end
@@ -48,7 +48,7 @@ module Killbill #:nodoc:
48
48
  options = {
49
49
  :payment_method_token => true
50
50
  }
51
- options.merge(get_merchant_id(currency))
51
+ options.merge(get_merchant_id(currency, context.tenant_id))
52
52
  properties = merge_properties(properties, options)
53
53
  super(kb_account_id, kb_payment_id, kb_payment_transaction_id, kb_payment_method_id, amount, currency, properties, context)
54
54
  end
@@ -64,7 +64,7 @@ module Killbill #:nodoc:
64
64
  options = {
65
65
  :payment_method_token => true
66
66
  }
67
- options.merge(get_merchant_id(currency))
67
+ options.merge(get_merchant_id(currency, context.tenant_id))
68
68
  properties = merge_properties(properties, options)
69
69
  super(kb_account_id, kb_payment_id, kb_payment_transaction_id, kb_payment_method_id, amount, currency, properties, context)
70
70
  end
@@ -72,7 +72,7 @@ module Killbill #:nodoc:
72
72
  def refund_payment(kb_account_id, kb_payment_id, kb_payment_transaction_id, kb_payment_method_id, amount, currency, properties, context)
73
73
  # Pass extra parameters for the gateway here
74
74
  options = {}
75
- options.merge(get_merchant_id(currency))
75
+ options.merge(get_merchant_id(currency, context.tenant_id))
76
76
  properties = merge_properties(properties, options)
77
77
  super(kb_account_id, kb_payment_id, kb_payment_transaction_id, kb_payment_method_id, amount, currency, properties, context)
78
78
  end
@@ -88,7 +88,7 @@ module Killbill #:nodoc:
88
88
  def search_payments(search_key, offset, limit, properties, context)
89
89
  # Pass extra parameters for the gateway here
90
90
  options = {}
91
- options.merge(get_merchant_id(currency))
91
+ options.merge(get_merchant_id(currency, context.tenant_id))
92
92
  properties = merge_properties(properties, options)
93
93
  super(search_key, offset, limit, properties, context)
94
94
  end
@@ -110,7 +110,7 @@ module Killbill #:nodoc:
110
110
  !find_value_from_properties(payment_method_props.properties, :token).blank?
111
111
  pm_props_hsh = properties_to_hash(payment_method_props.properties)
112
112
 
113
- # Pass 'credit_card_token' (along with CC details) or 'payment_method_nonce'
113
+ # Pass 'token' (along with CC details) or 'payment_method_nonce'
114
114
  # For convenience, we translate 'token' into 'payment_method_nonce'
115
115
  # Note: we remove the token because the Braintree AM implementation always requires a CreditCard object
116
116
  options[:payment_method_nonce] = pm_props_hsh.delete(:token)
@@ -191,17 +191,19 @@ module Killbill #:nodoc:
191
191
  end
192
192
  end
193
193
 
194
- def get_merchant_id(currency)
194
+ def get_merchant_id(currency, kb_tenant_id=nil)
195
+ config = ::Killbill::Plugin::ActiveMerchant.config(kb_tenant_id)
195
196
  options = {}
196
- if (config[:braintree_blue][:multicurrency])
197
- case currency
198
- when "USD"
199
- options = { :merchant_account_id => config[:multicurrency][:USD] }
200
- when "EUR"
201
- options = { :merchant_account_id => config[:multicurrency][:EUR] }
202
- when "PLN"
203
- options = { :merchant_account_id => config[:multicurrency][:PLN] }
204
- end
197
+ if config[:braintree_blue][:multicurrency]
198
+ multicurrency = config[:multicurrency] || {}
199
+ case currency
200
+ when "USD"
201
+ options = {:merchant_account_id => multicurrency[:USD]}
202
+ when "EUR"
203
+ options = {:merchant_account_id => multicurrency[:EUR]}
204
+ when "PLN"
205
+ options = {:merchant_account_id => multicurrency[:PLN]}
206
+ end
205
207
  end
206
208
  options
207
209
  end
@@ -2,6 +2,8 @@
2
2
 
3
3
  set :views, File.expand_path(File.dirname(__FILE__) + '/views')
4
4
 
5
+ require 'braintree'
6
+
5
7
  include Killbill::Plugin::ActiveMerchant::Sinatra
6
8
 
7
9
  configure do
@@ -22,6 +24,22 @@ helpers do
22
24
  end
23
25
  end
24
26
 
27
+ # curl -v http://127.0.0.1:9292/plugins/killbill-braintree_blue/token
28
+ get '/plugins/killbill-braintree_blue/token', :provides => 'json' do
29
+ kb_tenant_id = request.GET['kb_tenant_id']
30
+ environment = request.GET['environment'] || 'sandbox'
31
+ customer_id = request.GET['customer_id']
32
+
33
+ bconfig = (config(kb_tenant_id) || {})[:braintree_blue] || {}
34
+
35
+ Braintree::Configuration.environment = environment.to_sym
36
+ Braintree::Configuration.merchant_id = bconfig[:merchant_id]
37
+ Braintree::Configuration.private_key = bconfig[:private_key]
38
+ Braintree::Configuration.public_key = bconfig[:public_key]
39
+
40
+ Braintree::ClientToken.generate(:customer_id => customer_id)
41
+ end
42
+
25
43
  # curl -v http://127.0.0.1:9292/plugins/killbill-braintree_blue/form
26
44
  get '/plugins/killbill-braintree_blue/form', :provides => 'html' do
27
45
  order_id = request.GET['order_id']
@@ -0,0 +1,40 @@
1
+ module ActiveMerchant
2
+ module Billing
3
+ class BraintreeBlueGateway
4
+
5
+ def add_credit_card_to_customer(credit_card, options)
6
+ commit do
7
+ if options[:payment_method_nonce]
8
+ credit_card_params = { payment_method_nonce: options[:payment_method_nonce] }
9
+ else
10
+ credit_card_params = {
11
+ token: options[:credit_card_token],
12
+ cardholder_name: credit_card.name,
13
+ number: credit_card.number,
14
+ cvv: credit_card.verification_value,
15
+ expiration_month: credit_card.month.to_s.rjust(2, "0"),
16
+ expiration_year: credit_card.year.to_s,
17
+ }
18
+ end
19
+ parameters = {
20
+ customer_id: options[:customer],
21
+ }.merge credit_card_params
22
+
23
+ options[:billing_address].compact!
24
+ parameters[:billing_address] = map_address(options[:billing_address]) unless options[:billing_address].empty?
25
+
26
+ result = @braintree_gateway.credit_card.create(parameters)
27
+ ActiveMerchant::Billing::Response.new(
28
+ result.success?,
29
+ message_from_result(result),
30
+ {
31
+ customer_vault_id: (result.credit_card.customer_id if result.success?),
32
+ credit_card_token: (result.credit_card.token if result.success?)
33
+ },
34
+ authorization: (result.credit_card.customer_id if result.success?)
35
+ )
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -16,6 +16,8 @@ require 'yaml'
16
16
  require 'killbill'
17
17
  require 'killbill/helpers/active_merchant'
18
18
 
19
+ require 'braintree_blue/ext/active_merchant/active_merchant.rb'
20
+
19
21
  require 'braintree_blue/api'
20
22
  require 'braintree_blue/private_api'
21
23
 
data/pom.xml CHANGED
@@ -25,7 +25,7 @@
25
25
  <groupId>org.kill-bill.billing.plugin.ruby</groupId>
26
26
  <artifactId>braintree_blue-plugin</artifactId>
27
27
  <packaging>pom</packaging>
28
- <version>0.2.0</version>
28
+ <version>0.2.1</version>
29
29
  <name>braintree_blue-plugin</name>
30
30
  <url>http://github.com/killbill/killbill-braintree_blue-plugin</url>
31
31
  <description>Plugin for accessing BraintreeBlue as a payment gateway</description>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: killbill-braintree_blue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
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: 2015-12-18 00:00:00.000000000 Z
11
+ date: 2016-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: killbill
@@ -303,6 +303,7 @@ files:
303
303
  - lib/braintree_blue.rb
304
304
  - lib/braintree_blue/api.rb
305
305
  - lib/braintree_blue/application.rb
306
+ - lib/braintree_blue/ext/active_merchant/active_merchant.rb
306
307
  - lib/braintree_blue/models/payment_method.rb
307
308
  - lib/braintree_blue/models/response.rb
308
309
  - lib/braintree_blue/models/transaction.rb
@@ -337,7 +338,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
337
338
  version: '0'
338
339
  requirements: []
339
340
  rubyforge_project:
340
- rubygems_version: 2.1.9
341
+ rubygems_version: 2.4.6
341
342
  signing_key:
342
343
  specification_version: 4
343
344
  summary: Plugin to use BraintreeBlue as a gateway.