killbill-bitpay 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,80 @@
1
+ # -- encoding : utf-8 --
2
+
3
+ set :views, File.expand_path(File.dirname(__FILE__) + '/views')
4
+
5
+ include Killbill::Plugin::ActiveMerchant::Sinatra
6
+
7
+ configure do
8
+ # Usage: rackup -Ilib -E test
9
+ if development? or test?
10
+ # Make sure the plugin is initialized
11
+ plugin = ::Killbill::Bitpay::PaymentPlugin.new
12
+ plugin.logger = Logger.new(STDOUT)
13
+ plugin.logger.level = Logger::INFO
14
+ plugin.conf_dir = File.dirname(File.dirname(__FILE__)) + '/..'
15
+ plugin.start_plugin
16
+ end
17
+ end
18
+
19
+ helpers do
20
+ def plugin(session = {})
21
+ ::Killbill::Bitpay::PrivatePaymentPlugin.new(session)
22
+ end
23
+ end
24
+
25
+ # curl -v http://127.0.0.1:9292/plugins/killbill-bitpay/form
26
+ get '/plugins/killbill-bitpay/form', :provides => 'html' do
27
+ order_id = request.GET['order_id']
28
+ account_id = request.GET['account_id']
29
+ options = {
30
+ :amount => request.GET['amount'],
31
+ :currency => request.GET['currency'],
32
+ :test => request.GET['test'],
33
+ :credential2 => request.GET['credential2'],
34
+ :credential3 => request.GET['credential3'],
35
+ :credential4 => request.GET['credential4'],
36
+ :country => request.GET['country'],
37
+ :account_name => request.GET['account_name'],
38
+ :transaction_type => request.GET['transaction_type'],
39
+ :authcode => request.GET['authcode'],
40
+ :notify_url => request.GET['notify_url'],
41
+ :return_url => request.GET['return_url'],
42
+ :redirect_param => request.GET['redirect_param'],
43
+ :forward_url => request.GET['forward_url']
44
+ }
45
+
46
+ @form = plugin(session).payment_form_for(order_id, account_id, :bitpay, options) do |service|
47
+ # Add your custom hidden tags here, e.g.
48
+ #service.token = config[:bitpay][:token]
49
+ submit_tag 'Submit'
50
+ end
51
+
52
+ erb :form
53
+ end
54
+
55
+ # curl -v http://127.0.0.1:9292/plugins/killbill-bitpay/1.0/pms/1
56
+ get '/plugins/killbill-bitpay/1.0/pms/:id', :provides => 'json' do
57
+ if pm = ::Killbill::Bitpay::BitpayPaymentMethod.find_by_id(params[:id].to_i)
58
+ pm.to_json
59
+ else
60
+ status 404
61
+ end
62
+ end
63
+
64
+ # curl -v http://127.0.0.1:9292/plugins/killbill-bitpay/1.0/transactions/1
65
+ get '/plugins/killbill-bitpay/1.0/transactions/:id', :provides => 'json' do
66
+ if transaction = ::Killbill::Bitpay::BitpayTransaction.find_by_id(params[:id].to_i)
67
+ transaction.to_json
68
+ else
69
+ status 404
70
+ end
71
+ end
72
+
73
+ # curl -v http://127.0.0.1:9292/plugins/killbill-bitpay/1.0/responses/1
74
+ get '/plugins/killbill-bitpay/1.0/responses/:id', :provides => 'json' do
75
+ if transaction = ::Killbill::Bitpay::BitpayResponse.find_by_id(params[:id].to_i)
76
+ transaction.to_json
77
+ else
78
+ status 404
79
+ end
80
+ end
@@ -0,0 +1,23 @@
1
+ module Killbill #:nodoc:
2
+ module Bitpay #:nodoc:
3
+ class BitpayPaymentMethod < ::Killbill::Plugin::ActiveMerchant::ActiveRecord::PaymentMethod
4
+
5
+ self.table_name = 'bitpay_payment_methods'
6
+
7
+ def self.from_response(kb_account_id, kb_payment_method_id, kb_tenant_id, cc_or_token, response, options, extra_params = {}, model = ::Killbill::Bitpay::BitpayPaymentMethod)
8
+ super(kb_account_id,
9
+ kb_payment_method_id,
10
+ kb_tenant_id,
11
+ cc_or_token,
12
+ response,
13
+ options,
14
+ {
15
+ # Pass custom key/values here
16
+ #:params_id => extract(response, 'id'),
17
+ #:params_card_id => extract(response, 'card', 'id')
18
+ }.merge!(extra_params),
19
+ model)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ module Killbill #:nodoc:
2
+ module Bitpay #:nodoc:
3
+ class BitpayResponse < ::Killbill::Plugin::ActiveMerchant::ActiveRecord::Response
4
+
5
+ self.table_name = 'bitpay_responses'
6
+
7
+ has_one :bitpay_transaction
8
+
9
+ def self.from_response(api_call, kb_account_id, kb_payment_id, kb_payment_transaction_id, transaction_type, payment_processor_account_id, kb_tenant_id, response, extra_params = {}, model = ::Killbill::Bitpay::BitpayResponse)
10
+ super(api_call,
11
+ kb_account_id,
12
+ kb_payment_id,
13
+ kb_payment_transaction_id,
14
+ transaction_type,
15
+ payment_processor_account_id,
16
+ kb_tenant_id,
17
+ response,
18
+ {
19
+ # Pass custom key/values here
20
+ #:params_id => extract(response, 'id'),
21
+ #:params_card_id => extract(response, 'card', 'id')
22
+ }.merge!(extra_params),
23
+ model)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,11 @@
1
+ module Killbill #:nodoc:
2
+ module Bitpay #:nodoc:
3
+ class BitpayTransaction < ::Killbill::Plugin::ActiveMerchant::ActiveRecord::Transaction
4
+
5
+ self.table_name = 'bitpay_transactions'
6
+
7
+ belongs_to :bitpay_response
8
+
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ module Killbill #:nodoc:
2
+ module Bitpay #:nodoc:
3
+ class PrivatePaymentPlugin < ::Killbill::Plugin::ActiveMerchant::PrivatePaymentPlugin
4
+ def initialize(session = {})
5
+ super(:bitpay,
6
+ ::Killbill::Bitpay::BitpayPaymentMethod,
7
+ ::Killbill::Bitpay::BitpayTransaction,
8
+ ::Killbill::Bitpay::BitpayResponse,
9
+ session)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,8 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <body>
4
+
5
+ <%= @form %>
6
+
7
+ </body>
8
+ </html>
data/pom.xml ADDED
@@ -0,0 +1,44 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ ~ Copyright 2014 The Billing Project, LLC
4
+ ~
5
+ ~ The Billing Project licenses this file to you under the Apache License, version 2.0
6
+ ~ (the "License"); you may not use this file except in compliance with the
7
+ ~ License. You may obtain a copy of the License at:
8
+ ~
9
+ ~ http://www.apache.org/licenses/LICENSE-2.0
10
+ ~
11
+ ~ Unless required by applicable law or agreed to in writing, software
12
+ ~ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13
+ ~ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
+ ~ License for the specific language governing permissions and limitations
15
+ ~ under the License.
16
+ -->
17
+
18
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
19
+ <parent>
20
+ <groupId>org.sonatype.oss</groupId>
21
+ <artifactId>oss-parent</artifactId>
22
+ <version>5</version>
23
+ </parent>
24
+ <modelVersion>4.0.0</modelVersion>
25
+ <groupId>org.kill-bill.billing.plugin.ruby</groupId>
26
+ <artifactId>bitpay-plugin</artifactId>
27
+ <packaging>pom</packaging>
28
+ <version>0.0.1</version>
29
+ <name>bitpay-plugin</name>
30
+ <url>http://github.com/killbill/killbill-bitpay-plugin</url>
31
+ <description>Plugin for accessing Bitpay as a payment gateway</description>
32
+ <licenses>
33
+ <license>
34
+ <name>Apache License 2.0</name>
35
+ <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
36
+ <distribution>repo</distribution>
37
+ </license>
38
+ </licenses>
39
+ <scm>
40
+ <connection>scm:git:git://github.com/killbill/killbill-bitpay-plugin.git</connection>
41
+ <url>https://github.com/killbill/killbill-bitpay-plugin/</url>
42
+ <developerConnection>scm:git:git@github.com:killbill/killbill-bitpay-plugin.git</developerConnection>
43
+ </scm>
44
+ </project>
@@ -0,0 +1,41 @@
1
+ set -e
2
+
3
+ if [ 'GNU' != "$(tar --help | grep GNU | head -1 | awk '{print $1}')" ]; then
4
+ echo 'Unable to release: make sure to use GNU tar'
5
+ exit 1
6
+ fi
7
+
8
+ if $(ruby -e'require "java"'); then
9
+ # Good
10
+ echo 'Detected JRuby'
11
+ else
12
+ echo 'Unable to release: make sure to use JRuby'
13
+ exit 1
14
+ fi
15
+
16
+ VERSION=`grep -E '<version>([0-9]+\.[0-9]+\.[0-9]+)</version>' pom.xml | sed 's/[\t \n]*<version>\(.*\)<\/version>[\t \n]*/\1/'`
17
+ if [ "$VERSION" != "$(cat $PWD/VERSION)" ]; then
18
+ echo 'Unable to release: make sure the versions in pom.xml and VERSION match'
19
+ exit 1
20
+ fi
21
+
22
+ echo 'Cleaning up'
23
+ rake killbill:clean ; rake build
24
+
25
+ echo 'Pushing the gem to Rubygems'
26
+ rake release
27
+
28
+ echo 'Building artifact'
29
+ rake killbill:package
30
+
31
+ ARTIFACT="$PWD/pkg/killbill-bitpay-$VERSION.tar.gz"
32
+ echo "Pushing $ARTIFACT to Maven Central"
33
+ mvn gpg:sign-and-deploy-file \
34
+ -DgroupId=org.kill-bill.billing.plugin.ruby \
35
+ -DartifactId=bitpay-plugin \
36
+ -Dversion=$VERSION \
37
+ -Dpackaging=tar.gz \
38
+ -DrepositoryId=ossrh-releases \
39
+ -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ \
40
+ -Dfile=$ARTIFACT \
41
+ -DpomFile=pom.xml
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ describe Killbill::Bitpay::PaymentPlugin do
4
+ before(:each) do
5
+ Dir.mktmpdir do |dir|
6
+ file = File.new(File.join(dir, 'bitpay.yml'), "w+")
7
+ file.write(<<-eos)
8
+ :bitpay:
9
+ :test: true
10
+ # As defined by spec_helper.rb
11
+ :database:
12
+ :adapter: 'sqlite3'
13
+ :database: 'test.db'
14
+ eos
15
+ file.close
16
+
17
+ @plugin = Killbill::Bitpay::PaymentPlugin.new
18
+ @plugin.logger = Logger.new(STDOUT)
19
+ @plugin.logger.level = Logger::INFO
20
+ @plugin.conf_dir = File.dirname(file)
21
+ @plugin.kb_apis = Killbill::Plugin::KillbillApi.new('bitpay', {})
22
+
23
+ # Start the plugin here - since the config file will be deleted
24
+ @plugin.start_plugin
25
+ end
26
+ end
27
+
28
+ it 'should start and stop correctly' do
29
+ @plugin.stop_plugin
30
+ end
31
+
32
+ it 'should generate forms correctly' do
33
+ kb_account_id = SecureRandom.uuid
34
+ kb_tenant_id = SecureRandom.uuid
35
+ context = @plugin.kb_apis.create_context(kb_tenant_id)
36
+ fields = @plugin.hash_to_properties({
37
+ :order_id => '1234',
38
+ :amount => 10
39
+ })
40
+ form = @plugin.build_form_descriptor kb_account_id, fields, [], context
41
+
42
+ form.kb_account_id.should == kb_account_id
43
+ form.form_method.should == 'GET'
44
+ form.form_url.should == 'https://bitpay.com/invoice'
45
+
46
+ form_fields = @plugin.properties_to_hash(form.form_fields)
47
+ form_fields.has_key?(:id).should be_true
48
+ end
49
+
50
+ it 'should receive notifications correctly' do
51
+ description = 'description'
52
+
53
+ kb_tenant_id = SecureRandom.uuid
54
+ context = @plugin.kb_apis.create_context(kb_tenant_id)
55
+ properties = @plugin.hash_to_properties({ :description => description })
56
+
57
+ notification = ""
58
+ gw_notification = @plugin.process_notification notification, properties, context
59
+ end
60
+ end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ ActiveMerchant::Billing::Base.mode = :test
4
+
5
+ describe Killbill::Bitpay::PaymentPlugin do
6
+
7
+ include ::Killbill::Plugin::ActiveMerchant::RSpec
8
+
9
+ before(:each) do
10
+ @plugin = Killbill::Bitpay::PaymentPlugin.new
11
+
12
+ @account_api = ::Killbill::Plugin::ActiveMerchant::RSpec::FakeJavaUserAccountApi.new
13
+ svcs = {:account_user_api => @account_api}
14
+ @plugin.kb_apis = Killbill::Plugin::KillbillApi.new('bitpay', svcs)
15
+
16
+ @plugin.logger = Logger.new(STDOUT)
17
+ @plugin.logger.level = Logger::INFO
18
+ @plugin.conf_dir = File.expand_path(File.dirname(__FILE__) + '../../../../')
19
+ @plugin.start_plugin
20
+ end
21
+
22
+ after(:each) do
23
+ @plugin.stop_plugin
24
+ end
25
+
26
+ it 'should generate invoices correctly' do
27
+ kb_account_id = SecureRandom.uuid
28
+ kb_tenant_id = SecureRandom.uuid
29
+ context = @plugin.kb_apis.create_context(kb_tenant_id)
30
+ fields = @plugin.hash_to_properties({
31
+ :order_id => '1234',
32
+ :amount => 0.0001,
33
+ :currency => 'BTC'
34
+ })
35
+ form = @plugin.build_form_descriptor kb_account_id, fields, [], context
36
+
37
+ form.kb_account_id.should == kb_account_id
38
+ form.form_method.should == 'GET'
39
+ form.form_url.should == 'https://bitpay.com/invoice'
40
+
41
+ form_fields = @plugin.properties_to_hash(form.form_fields)
42
+ form_fields.size.should == 1
43
+ form_fields[:id].should_not be_nil
44
+ @plugin.logger.info "Invoice at https://bitpay.com/invoice?id=#{form_fields[:id]}"
45
+
46
+ notification = {
47
+ "id" => "#{form_fields[:id]}",
48
+ "orderID" => "1234",
49
+ "url" => "https://bitpay.com/invoice/#{form_fields[:id]}",
50
+ "status" => "new",
51
+ "btcPrice" => "0.0001",
52
+ "price" => "0.0001",
53
+ "currency" => "BTC",
54
+ "posData" => '{"orderId":"1234}'
55
+ }.to_json
56
+ gw_notification = @plugin.process_notification notification, [], context
57
+ gw_notification.should_not be_nil
58
+ # We cannot fully check it though because of the acknowledge implementation (requires timestamps checking)
59
+ end
60
+ end
@@ -0,0 +1,24 @@
1
+ require 'bundler'
2
+ require 'bitpay'
3
+ require 'killbill/helpers/active_merchant/killbill_spec_helper'
4
+
5
+ require 'logger'
6
+
7
+ require 'rspec'
8
+
9
+ RSpec.configure do |config|
10
+ config.color_enabled = true
11
+ config.tty = true
12
+ config.formatter = 'documentation'
13
+ end
14
+
15
+ require 'active_record'
16
+ ActiveRecord::Base.establish_connection(
17
+ :adapter => 'sqlite3',
18
+ :database => 'test.db'
19
+ )
20
+ # For debugging
21
+ #ActiveRecord::Base.logger = Logger.new(STDOUT)
22
+ # Create the schema
23
+ require File.expand_path(File.dirname(__FILE__) + '../../db/schema.rb')
24
+
metadata ADDED
@@ -0,0 +1,300 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: killbill-bitpay
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Kill Bill core team
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: killbill
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 3.2.0
20
+ requirement: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: 3.2.0
25
+ prerelease: false
26
+ type: :runtime
27
+ - !ruby/object:Gem::Dependency
28
+ name: activemerchant
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 1.44.1
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ~>
37
+ - !ruby/object:Gem::Version
38
+ version: 1.44.1
39
+ prerelease: false
40
+ type: :runtime
41
+ - !ruby/object:Gem::Dependency
42
+ name: offsite_payments
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 2.0.1
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ~>
51
+ - !ruby/object:Gem::Version
52
+ version: 2.0.1
53
+ prerelease: false
54
+ type: :runtime
55
+ - !ruby/object:Gem::Dependency
56
+ name: activerecord
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 4.1.0
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ~>
65
+ - !ruby/object:Gem::Version
66
+ version: 4.1.0
67
+ prerelease: false
68
+ type: :runtime
69
+ - !ruby/object:Gem::Dependency
70
+ name: actionpack
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 4.1.0
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ~>
79
+ - !ruby/object:Gem::Version
80
+ version: 4.1.0
81
+ prerelease: false
82
+ type: :runtime
83
+ - !ruby/object:Gem::Dependency
84
+ name: actionview
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 4.1.0
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ version: 4.1.0
95
+ prerelease: false
96
+ type: :runtime
97
+ - !ruby/object:Gem::Dependency
98
+ name: activesupport
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 4.1.0
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ~>
107
+ - !ruby/object:Gem::Version
108
+ version: 4.1.0
109
+ prerelease: false
110
+ type: :runtime
111
+ - !ruby/object:Gem::Dependency
112
+ name: money
113
+ version_requirements: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 6.1.1
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ~>
121
+ - !ruby/object:Gem::Version
122
+ version: 6.1.1
123
+ prerelease: false
124
+ type: :runtime
125
+ - !ruby/object:Gem::Dependency
126
+ name: monetize
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: 0.3.0
132
+ requirement: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ~>
135
+ - !ruby/object:Gem::Version
136
+ version: 0.3.0
137
+ prerelease: false
138
+ type: :runtime
139
+ - !ruby/object:Gem::Dependency
140
+ name: sinatra
141
+ version_requirements: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ~>
144
+ - !ruby/object:Gem::Version
145
+ version: 1.3.4
146
+ requirement: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ~>
149
+ - !ruby/object:Gem::Version
150
+ version: 1.3.4
151
+ prerelease: false
152
+ type: :runtime
153
+ - !ruby/object:Gem::Dependency
154
+ name: activerecord-jdbcmysql-adapter
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ~>
158
+ - !ruby/object:Gem::Version
159
+ version: 1.3.7
160
+ requirement: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ~>
163
+ - !ruby/object:Gem::Version
164
+ version: 1.3.7
165
+ prerelease: false
166
+ type: :runtime
167
+ - !ruby/object:Gem::Dependency
168
+ name: jruby-openssl
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: 0.9.4
174
+ requirement: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ~>
177
+ - !ruby/object:Gem::Version
178
+ version: 0.9.4
179
+ prerelease: false
180
+ type: :runtime
181
+ - !ruby/object:Gem::Dependency
182
+ name: jbundler
183
+ version_requirements: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ~>
186
+ - !ruby/object:Gem::Version
187
+ version: 0.4.1
188
+ requirement: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ~>
191
+ - !ruby/object:Gem::Version
192
+ version: 0.4.1
193
+ prerelease: false
194
+ type: :development
195
+ - !ruby/object:Gem::Dependency
196
+ name: rake
197
+ version_requirements: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - '>='
200
+ - !ruby/object:Gem::Version
201
+ version: 10.0.0
202
+ requirement: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - '>='
205
+ - !ruby/object:Gem::Version
206
+ version: 10.0.0
207
+ prerelease: false
208
+ type: :development
209
+ - !ruby/object:Gem::Dependency
210
+ name: rspec
211
+ version_requirements: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ~>
214
+ - !ruby/object:Gem::Version
215
+ version: 2.12.0
216
+ requirement: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ~>
219
+ - !ruby/object:Gem::Version
220
+ version: 2.12.0
221
+ prerelease: false
222
+ type: :development
223
+ - !ruby/object:Gem::Dependency
224
+ name: activerecord-jdbcsqlite3-adapter
225
+ version_requirements: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ~>
228
+ - !ruby/object:Gem::Version
229
+ version: 1.3.7
230
+ requirement: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - ~>
233
+ - !ruby/object:Gem::Version
234
+ version: 1.3.7
235
+ prerelease: false
236
+ type: :development
237
+ description: Kill Bill payment plugin for Bitpay.
238
+ email: killbilling-users@googlegroups.com
239
+ executables: []
240
+ extensions: []
241
+ extra_rdoc_files: []
242
+ files:
243
+ - .gitignore
244
+ - .travis.yml
245
+ - Gemfile
246
+ - Jarfile
247
+ - LICENSE
248
+ - NEWS
249
+ - README.md
250
+ - Rakefile
251
+ - VERSION
252
+ - bitpay.yml
253
+ - config.ru
254
+ - db/ddl.sql
255
+ - db/schema.rb
256
+ - killbill-bitpay.gemspec
257
+ - killbill.properties
258
+ - lib/bitpay.rb
259
+ - lib/bitpay/api.rb
260
+ - lib/bitpay/application.rb
261
+ - lib/bitpay/models/payment_method.rb
262
+ - lib/bitpay/models/response.rb
263
+ - lib/bitpay/models/transaction.rb
264
+ - lib/bitpay/private_api.rb
265
+ - lib/bitpay/views/form.erb
266
+ - pom.xml
267
+ - release.sh
268
+ - spec/bitpay/base_plugin_spec.rb
269
+ - spec/bitpay/remote/integration_spec.rb
270
+ - spec/spec_helper.rb
271
+ homepage: http://kill-bill.org
272
+ licenses:
273
+ - Apache License (2.0)
274
+ metadata: {}
275
+ post_install_message:
276
+ rdoc_options:
277
+ - --exclude
278
+ - .
279
+ require_paths:
280
+ - lib
281
+ required_ruby_version: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - '>='
284
+ - !ruby/object:Gem::Version
285
+ version: 1.9.3
286
+ required_rubygems_version: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - '>='
289
+ - !ruby/object:Gem::Version
290
+ version: '0'
291
+ requirements: []
292
+ rubyforge_project:
293
+ rubygems_version: 2.2.2
294
+ signing_key:
295
+ specification_version: 4
296
+ summary: Plugin to use Bitpay as a gateway.
297
+ test_files:
298
+ - spec/bitpay/base_plugin_spec.rb
299
+ - spec/bitpay/remote/integration_spec.rb
300
+ - spec/spec_helper.rb