killbill 3.0.0 → 3.1.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Jarfile +5 -5
- data/NEWS +4 -0
- data/README.md +45 -8
- data/VERSION +1 -1
- data/generators/active_merchant/active_merchant_generator.rb +38 -0
- data/generators/active_merchant/templates/.gitignore.rb +36 -0
- data/generators/active_merchant/templates/.travis.yml.rb +19 -0
- data/generators/active_merchant/templates/Gemfile.rb +3 -0
- data/generators/active_merchant/templates/Jarfile.rb +6 -0
- data/generators/active_merchant/templates/LICENSE.rb +201 -0
- data/generators/active_merchant/templates/NEWS.rb +2 -0
- data/generators/active_merchant/templates/Rakefile.rb +30 -0
- data/generators/active_merchant/templates/VERSION.rb +1 -0
- data/generators/active_merchant/templates/config.ru.rb +4 -0
- data/generators/active_merchant/templates/config.yml.rb +13 -0
- data/generators/active_merchant/templates/db/ddl.sql.rb +64 -0
- data/generators/active_merchant/templates/db/schema.rb +64 -0
- data/generators/active_merchant/templates/killbill.properties.rb +3 -0
- data/generators/active_merchant/templates/lib/api.rb +119 -0
- data/generators/active_merchant/templates/lib/application.rb +84 -0
- data/generators/active_merchant/templates/lib/models/payment_method.rb +22 -0
- data/generators/active_merchant/templates/lib/models/response.rb +22 -0
- data/generators/active_merchant/templates/lib/models/transaction.rb +11 -0
- data/generators/active_merchant/templates/lib/plugin.rb +23 -0
- data/generators/active_merchant/templates/lib/private_api.rb +6 -0
- data/generators/active_merchant/templates/lib/views/form.erb +8 -0
- data/generators/active_merchant/templates/plugin.gemspec.rb +48 -0
- data/generators/active_merchant/templates/pom.xml.rb +44 -0
- data/generators/active_merchant/templates/release.sh.rb +41 -0
- data/generators/active_merchant/templates/spec/base_plugin_spec.rb +30 -0
- data/generators/active_merchant/templates/spec/integration_spec.rb +31 -0
- data/generators/active_merchant/templates/spec/spec_helper.rb +24 -0
- data/generators/killbill_generator.rb +38 -0
- data/killbill.gemspec +10 -2
- data/lib/killbill/gen/api/block.rb +82 -0
- data/lib/killbill/gen/api/direct_payment.rb +176 -0
- data/lib/killbill/gen/api/direct_payment_api.rb +329 -0
- data/lib/killbill/gen/api/direct_payment_transaction.rb +156 -0
- data/lib/killbill/gen/api/fixed.rb +63 -0
- data/lib/killbill/gen/api/invoice_item.rb +7 -1
- data/lib/killbill/gen/api/invoice_item_formatter.rb +7 -1
- data/lib/killbill/gen/api/invoice_user_api.rb +18 -136
- data/lib/killbill/gen/api/migration_plan.rb +6 -6
- data/lib/killbill/gen/api/payment_api.rb +216 -54
- data/lib/killbill/gen/api/payment_method_plugin.rb +3 -3
- data/lib/killbill/gen/api/plan.rb +6 -6
- data/lib/killbill/gen/api/plan_phase.rb +16 -23
- data/lib/killbill/gen/api/plugin_property.rb +71 -0
- data/lib/killbill/gen/api/recurring.rb +63 -0
- data/lib/killbill/gen/api/require_gen.rb +10 -1
- data/lib/killbill/gen/api/static_catalog.rb +8 -1
- data/lib/killbill/gen/api/tier.rb +77 -0
- data/lib/killbill/gen/api/tiered_block.rb +88 -0
- data/lib/killbill/gen/api/usage.rb +111 -0
- data/lib/killbill/gen/api/usage_user_api.rb +59 -3
- data/lib/killbill/gen/plugin-api/billing_address.rb +85 -0
- data/lib/killbill/gen/plugin-api/customer.rb +73 -0
- data/lib/killbill/gen/plugin-api/hosted_payment_page_descriptor_fields.rb +145 -0
- data/lib/killbill/gen/plugin-api/hosted_payment_page_form_descriptor.rb +80 -0
- data/lib/killbill/gen/plugin-api/hosted_payment_page_notification.rb +129 -0
- data/lib/killbill/gen/plugin-api/payment_info_plugin.rb +20 -1
- data/lib/killbill/gen/plugin-api/payment_plugin_api.rb +358 -39
- data/lib/killbill/gen/plugin-api/refund_info_plugin.rb +20 -1
- data/lib/killbill/gen/plugin-api/require_gen.rb +3 -0
- data/lib/killbill/helpers/active_merchant.rb +21 -0
- data/lib/killbill/helpers/active_merchant/active_record.rb +17 -0
- data/lib/killbill/helpers/active_merchant/active_record/models/helpers.rb +25 -0
- data/lib/killbill/helpers/active_merchant/active_record/models/payment_method.rb +195 -0
- data/lib/killbill/helpers/active_merchant/active_record/models/response.rb +178 -0
- data/lib/killbill/helpers/active_merchant/active_record/models/streamy_result_set.rb +35 -0
- data/lib/killbill/helpers/active_merchant/active_record/models/transaction.rb +63 -0
- data/lib/killbill/helpers/active_merchant/configuration.rb +54 -0
- data/lib/killbill/helpers/active_merchant/core_ext.rb +41 -0
- data/lib/killbill/helpers/active_merchant/gateway.rb +35 -0
- data/lib/killbill/helpers/active_merchant/killbill_spec_helper.rb +117 -0
- data/lib/killbill/helpers/active_merchant/payment_plugin.rb +365 -0
- data/lib/killbill/helpers/active_merchant/private_payment_plugin.rb +119 -0
- data/lib/killbill/helpers/active_merchant/properties.rb +20 -0
- data/lib/killbill/helpers/active_merchant/sinatra.rb +30 -0
- data/lib/killbill/helpers/active_merchant/utils.rb +23 -0
- data/lib/killbill/payment.rb +22 -10
- data/script/generate +15 -0
- data/spec/killbill/helpers/payment_method_spec.rb +101 -0
- data/spec/killbill/helpers/response_spec.rb +74 -0
- data/spec/killbill/helpers/test_schema.rb +57 -0
- data/spec/killbill/helpers/utils_spec.rb +22 -0
- data/spec/killbill/payment_plugin_api_spec.rb +23 -18
- data/spec/killbill/payment_plugin_spec.rb +11 -10
- data/spec/killbill/payment_test.rb +9 -9
- data/spec/spec_helper.rb +8 -3
- metadata +130 -5
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env rake
|
|
2
|
+
|
|
3
|
+
# Install tasks to build and release the plugin
|
|
4
|
+
require 'bundler/setup'
|
|
5
|
+
Bundler::GemHelper.install_tasks
|
|
6
|
+
|
|
7
|
+
# Install test tasks
|
|
8
|
+
require 'rspec/core/rake_task'
|
|
9
|
+
namespace :test do
|
|
10
|
+
desc 'Run RSpec tests'
|
|
11
|
+
RSpec::Core::RakeTask.new do |task|
|
|
12
|
+
task.name = 'spec'
|
|
13
|
+
task.pattern = './spec/*/*_spec.rb'
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
namespace :remote do
|
|
17
|
+
desc 'Run RSpec remote tests'
|
|
18
|
+
RSpec::Core::RakeTask.new do |task|
|
|
19
|
+
task.name = 'spec'
|
|
20
|
+
task.pattern = './spec/*/remote/*_spec.rb'
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Install tasks to package the plugin for Killbill
|
|
26
|
+
require 'killbill/rake_task'
|
|
27
|
+
Killbill::PluginHelper.install_tasks
|
|
28
|
+
|
|
29
|
+
# Run tests by default
|
|
30
|
+
task :default => 'test:spec'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.0.1
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
:<%= identifier %>:
|
|
2
|
+
:test: true
|
|
3
|
+
:log_file: /var/tmp/<%= identifier %>.log
|
|
4
|
+
|
|
5
|
+
:database:
|
|
6
|
+
:adapter: sqlite3
|
|
7
|
+
:database: test.db
|
|
8
|
+
# For MySQL
|
|
9
|
+
# :adapter: 'jdbc'
|
|
10
|
+
# :username: 'your-username'
|
|
11
|
+
# :password: 'your-password'
|
|
12
|
+
# :driver: 'com.mysql.jdbc.Driver'
|
|
13
|
+
# :url: 'jdbc:mysql://127.0.0.1:3306/your-database'
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
CREATE TABLE `<%= identifier %>_payment_methods` (
|
|
2
|
+
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
3
|
+
`kb_account_id` varchar(255) NOT NULL,
|
|
4
|
+
`kb_payment_method_id` varchar(255) DEFAULT NULL,
|
|
5
|
+
`token` varchar(255) DEFAULT 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_number` int(11) DEFAULT NULL,
|
|
12
|
+
`cc_last_4` int(11) DEFAULT NULL,
|
|
13
|
+
`cc_start_month` varchar(255) DEFAULT NULL,
|
|
14
|
+
`cc_start_year` varchar(255) DEFAULT NULL,
|
|
15
|
+
`cc_issue_number` varchar(255) DEFAULT NULL,
|
|
16
|
+
`cc_verification_value` varchar(255) DEFAULT NULL,
|
|
17
|
+
`cc_track_data` varchar(255) DEFAULT NULL,
|
|
18
|
+
`address1` varchar(255) DEFAULT NULL,
|
|
19
|
+
`address2` varchar(255) DEFAULT NULL,
|
|
20
|
+
`city` varchar(255) DEFAULT NULL,
|
|
21
|
+
`state` varchar(255) DEFAULT NULL,
|
|
22
|
+
`zip` varchar(255) DEFAULT NULL,
|
|
23
|
+
`country` varchar(255) DEFAULT NULL,
|
|
24
|
+
`is_deleted` tinyint(1) NOT NULL DEFAULT '0',
|
|
25
|
+
`created_at` datetime NOT NULL,
|
|
26
|
+
`updated_at` datetime NOT NULL,
|
|
27
|
+
PRIMARY KEY (`id`),
|
|
28
|
+
KEY `index_<%= identifier %>_payment_methods_on_kb_account_id` (`kb_account_id`),
|
|
29
|
+
KEY `index_<%= identifier %>_payment_methods_on_kb_payment_method_id` (`kb_payment_method_id`)
|
|
30
|
+
) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
|
|
31
|
+
|
|
32
|
+
CREATE TABLE `<%= identifier %>_transactions` (
|
|
33
|
+
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
34
|
+
`<%= identifier %>_response_id` int(11) NOT NULL,
|
|
35
|
+
`api_call` varchar(255) NOT NULL,
|
|
36
|
+
`kb_payment_id` varchar(255) NOT NULL,
|
|
37
|
+
`txn_id` varchar(255) NOT NULL,
|
|
38
|
+
`amount_in_cents` int(11) NOT NULL,
|
|
39
|
+
`currency` varchar(255) NOT NULL,
|
|
40
|
+
`created_at` datetime NOT NULL,
|
|
41
|
+
`updated_at` datetime NOT NULL,
|
|
42
|
+
PRIMARY KEY (`id`),
|
|
43
|
+
KEY `index_<%= identifier %>_transactions_on_kb_payment_id` (`kb_payment_id`)
|
|
44
|
+
) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
|
|
45
|
+
|
|
46
|
+
CREATE TABLE `<%= identifier %>_responses` (
|
|
47
|
+
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|
48
|
+
`api_call` varchar(255) NOT NULL,
|
|
49
|
+
`kb_payment_id` varchar(255) DEFAULT NULL,
|
|
50
|
+
`message` varchar(255) DEFAULT NULL,
|
|
51
|
+
`authorization` varchar(255) DEFAULT NULL,
|
|
52
|
+
`fraud_review` tinyint(1) DEFAULT NULL,
|
|
53
|
+
`test` tinyint(1) DEFAULT NULL,
|
|
54
|
+
`avs_result_code` varchar(255) DEFAULT NULL,
|
|
55
|
+
`avs_result_message` varchar(255) DEFAULT NULL,
|
|
56
|
+
`avs_result_street_match` varchar(255) DEFAULT NULL,
|
|
57
|
+
`avs_result_postal_match` varchar(255) DEFAULT NULL,
|
|
58
|
+
`cvv_result_code` varchar(255) DEFAULT NULL,
|
|
59
|
+
`cvv_result_message` varchar(255) DEFAULT NULL,
|
|
60
|
+
`success` tinyint(1) DEFAULT NULL,
|
|
61
|
+
`created_at` datetime NOT NULL,
|
|
62
|
+
`updated_at` datetime NOT NULL,
|
|
63
|
+
PRIMARY KEY (`id`)
|
|
64
|
+
) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
require 'active_record'
|
|
2
|
+
|
|
3
|
+
ActiveRecord::Schema.define(:version => 20140410153635) do
|
|
4
|
+
create_table "<%= identifier %>_payment_methods", :force => true do |t|
|
|
5
|
+
t.string "kb_account_id", :null => false
|
|
6
|
+
t.string "kb_payment_method_id" # NULL before Kill Bill knows about it
|
|
7
|
+
t.string "token" # <%= identifier %> id
|
|
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_number"
|
|
14
|
+
t.integer "cc_last_4"
|
|
15
|
+
t.integer "cc_start_month"
|
|
16
|
+
t.integer "cc_start_year"
|
|
17
|
+
t.integer "cc_issue_number"
|
|
18
|
+
t.integer "cc_verification_value"
|
|
19
|
+
t.integer "cc_track_data"
|
|
20
|
+
t.string "address1"
|
|
21
|
+
t.string "address2"
|
|
22
|
+
t.string "city"
|
|
23
|
+
t.string "state"
|
|
24
|
+
t.string "zip"
|
|
25
|
+
t.string "country"
|
|
26
|
+
t.boolean "is_deleted", :null => false, :default => false
|
|
27
|
+
t.datetime "created_at", :null => false
|
|
28
|
+
t.datetime "updated_at", :null => false
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
add_index(:<%= identifier %>_payment_methods, :kb_account_id)
|
|
32
|
+
add_index(:<%= identifier %>_payment_methods, :kb_payment_method_id)
|
|
33
|
+
|
|
34
|
+
create_table "<%= identifier %>_transactions", :force => true do |t|
|
|
35
|
+
t.integer "<%= identifier %>_response_id", :null => false
|
|
36
|
+
t.string "api_call", :null => false
|
|
37
|
+
t.string "kb_payment_id", :null => false
|
|
38
|
+
t.string "txn_id" # <%= identifier %> transaction id
|
|
39
|
+
t.integer "amount_in_cents", :null => false
|
|
40
|
+
t.string "currency", :null => false
|
|
41
|
+
t.datetime "created_at", :null => false
|
|
42
|
+
t.datetime "updated_at", :null => false
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
add_index(:<%= identifier %>_transactions, :kb_payment_id)
|
|
46
|
+
|
|
47
|
+
create_table "<%= identifier %>_responses", :force => true do |t|
|
|
48
|
+
t.string "api_call", :null => false
|
|
49
|
+
t.string "kb_payment_id"
|
|
50
|
+
t.string "message"
|
|
51
|
+
t.string "authorization"
|
|
52
|
+
t.boolean "fraud_review"
|
|
53
|
+
t.boolean "test"
|
|
54
|
+
t.string "avs_result_code"
|
|
55
|
+
t.string "avs_result_message"
|
|
56
|
+
t.string "avs_result_street_match"
|
|
57
|
+
t.string "avs_result_postal_match"
|
|
58
|
+
t.string "cvv_result_code"
|
|
59
|
+
t.string "cvv_result_message"
|
|
60
|
+
t.boolean "success"
|
|
61
|
+
t.datetime "created_at", :null => false
|
|
62
|
+
t.datetime "updated_at", :null => false
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
module Killbill #:nodoc:
|
|
2
|
+
module <%= class_name %> #:nodoc:
|
|
3
|
+
class PaymentPlugin < ::Killbill::Plugin::ActiveMerchant::PaymentPlugin
|
|
4
|
+
|
|
5
|
+
def initialize
|
|
6
|
+
gateway_builder = Proc.new do |config|
|
|
7
|
+
# Change this if needed
|
|
8
|
+
::ActiveMerchant::Billing::<%= class_name %>Gateway.new :login => config[:login]
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
super(gateway_builder,
|
|
12
|
+
:<%= identifier %>,
|
|
13
|
+
::Killbill::<%= class_name %>::<%= class_name %>PaymentMethod,
|
|
14
|
+
::Killbill::<%= class_name %>::<%= class_name %>Transaction,
|
|
15
|
+
::Killbill::<%= class_name %>::<%= class_name %>Response)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def authorize_payment(kb_account_id, kb_payment_id, kb_payment_method_id, amount, currency, properties, context)
|
|
19
|
+
# Pass extra parameters for the gateway here
|
|
20
|
+
options = {}
|
|
21
|
+
|
|
22
|
+
properties = merge_properties(properties, options)
|
|
23
|
+
super(kb_account_id, kb_payment_id, kb_payment_method_id, amount, currency, context, properties)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def capture_payment(kb_account_id, kb_payment_id, kb_payment_method_id, amount, currency, properties, context)
|
|
27
|
+
# Pass extra parameters for the gateway here
|
|
28
|
+
options = {}
|
|
29
|
+
|
|
30
|
+
properties = merge_properties(properties, options)
|
|
31
|
+
super(kb_account_id, kb_payment_id, kb_payment_method_id, amount, currency, properties, context)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def void_payment(kb_account_id, kb_payment_id, kb_payment_method_id, properties, context)
|
|
35
|
+
# Pass extra parameters for the gateway here
|
|
36
|
+
options = {}
|
|
37
|
+
|
|
38
|
+
properties = merge_properties(properties, options)
|
|
39
|
+
super(kb_account_id, kb_payment_id, kb_payment_method_id, properties, context)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def process_payment(kb_account_id, kb_payment_id, kb_payment_method_id, amount, currency, properties, context)
|
|
43
|
+
# Pass extra parameters for the gateway here
|
|
44
|
+
options = {}
|
|
45
|
+
|
|
46
|
+
properties = merge_properties(properties, options)
|
|
47
|
+
super(kb_account_id, kb_payment_id, kb_payment_method_id, amount, currency, properties, context)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def get_payment_info(kb_account_id, kb_payment_id, properties, context)
|
|
51
|
+
super
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def search_payments(search_key, offset, limit, properties, context)
|
|
55
|
+
super
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def process_refund(kb_account_id, kb_payment_id, refund_amount, currency, properties, context)
|
|
59
|
+
# Pass extra parameters for the gateway here
|
|
60
|
+
options = {}
|
|
61
|
+
|
|
62
|
+
properties = merge_properties(properties, options)
|
|
63
|
+
super(kb_account_id, kb_payment_id, refund_amount, currency, properties, context)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def get_refund_info(kb_account_id, kb_payment_id, properties, context)
|
|
67
|
+
super
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def search_refunds(search_key, offset, limit, properties, context)
|
|
71
|
+
super
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def add_payment_method(kb_account_id, kb_payment_method_id, payment_method_props, set_default, properties, context)
|
|
75
|
+
# Pass extra parameters for the gateway here
|
|
76
|
+
options = {}
|
|
77
|
+
|
|
78
|
+
properties = merge_properties(properties, options)
|
|
79
|
+
super(kb_account_id, kb_payment_method_id, payment_method_props, set_default, properties, context)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def delete_payment_method(kb_account_id, kb_payment_method_id, properties, context)
|
|
83
|
+
# Pass extra parameters for the gateway here
|
|
84
|
+
options = {}
|
|
85
|
+
|
|
86
|
+
properties = merge_properties(properties, options)
|
|
87
|
+
super(kb_account_id, kb_payment_method_id, properties, context)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def get_payment_method_detail(kb_account_id, kb_payment_method_id, properties, context)
|
|
91
|
+
super
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def set_default_payment_method(kb_account_id, kb_payment_method_id, properties, context)
|
|
95
|
+
# TODO
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def get_payment_methods(kb_account_id, refresh_from_gateway, properties, context)
|
|
99
|
+
super
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def search_payment_methods(search_key, offset, limit, properties, context)
|
|
103
|
+
super
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def reset_payment_methods(kb_account_id, payment_methods, properties)
|
|
107
|
+
super
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def build_form_descriptor(kb_account_id, descriptor_fields, properties, context)
|
|
111
|
+
super
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def process_notification(notification, properties, context)
|
|
115
|
+
super
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
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::<%= class_name %>::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::<%= class_name %>::PrivatePaymentPlugin.new(:<%= identifier %>,
|
|
22
|
+
::Killbill::<%= class_name %>::<%= class_name %>PaymentMethod,
|
|
23
|
+
::Killbill::<%= class_name %>::<%= class_name %>Transaction,
|
|
24
|
+
::Killbill::<%= class_name %>::<%= class_name %>Response,
|
|
25
|
+
session)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# curl -v http://127.0.0.1:9292/plugins/killbill-<%= identifier %>/form
|
|
30
|
+
get '/plugins/killbill-<%= identifier %>/form', :provides => 'html' do
|
|
31
|
+
order_id = request.GET['order_id']
|
|
32
|
+
account_id = request.GET['account_id']
|
|
33
|
+
options = {
|
|
34
|
+
:amount => request.GET['amount'],
|
|
35
|
+
:currency => request.GET['currency'],
|
|
36
|
+
:test => request.GET['test'],
|
|
37
|
+
:credential2 => request.GET['credential2'],
|
|
38
|
+
:credential3 => request.GET['credential3'],
|
|
39
|
+
:credential4 => request.GET['credential4'],
|
|
40
|
+
:country => request.GET['country'],
|
|
41
|
+
:account_name => request.GET['account_name'],
|
|
42
|
+
:transaction_type => request.GET['transaction_type'],
|
|
43
|
+
:authcode => request.GET['authcode'],
|
|
44
|
+
:notify_url => request.GET['notify_url'],
|
|
45
|
+
:return_url => request.GET['return_url'],
|
|
46
|
+
:redirect_param => request.GET['redirect_param'],
|
|
47
|
+
:forward_url => request.GET['forward_url']
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@form = plugin(session).payment_form_for(order_id, account_id, :<%= identifier %>, options) do |service|
|
|
51
|
+
# Add your custom hidden tags here, e.g.
|
|
52
|
+
#service.token = config[:<%= identifier %>][:token]
|
|
53
|
+
submit_tag 'Submit'
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
erb :form
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# curl -v http://127.0.0.1:9292/plugins/killbill-<%= identifier %>/1.0/pms/1
|
|
60
|
+
get '/plugins/killbill-<%= identifier %>/1.0/pms/:id', :provides => 'json' do
|
|
61
|
+
if pm = ::Killbill::<%= class_name %>::<%= class_name %>PaymentMethod.find_by_id(params[:id].to_i)
|
|
62
|
+
pm.to_json
|
|
63
|
+
else
|
|
64
|
+
status 404
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# curl -v http://127.0.0.1:9292/plugins/killbill-<%= identifier %>/1.0/transactions/1
|
|
69
|
+
get '/plugins/killbill-<%= identifier %>/1.0/transactions/:id', :provides => 'json' do
|
|
70
|
+
if transaction = ::Killbill::<%= class_name %>::<%= class_name %>Transaction.find_by_id(params[:id].to_i)
|
|
71
|
+
transaction.to_json
|
|
72
|
+
else
|
|
73
|
+
status 404
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# curl -v http://127.0.0.1:9292/plugins/killbill-<%= identifier %>/1.0/responses/1
|
|
78
|
+
get '/plugins/killbill-<%= identifier %>/1.0/responses/:id', :provides => 'json' do
|
|
79
|
+
if transaction = ::Killbill::<%= class_name %>::<%= class_name %>Response.find_by_id(params[:id].to_i)
|
|
80
|
+
transaction.to_json
|
|
81
|
+
else
|
|
82
|
+
status 404
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Killbill #:nodoc:
|
|
2
|
+
module <%= class_name %> #:nodoc:
|
|
3
|
+
class <%= class_name %>PaymentMethod < ::Killbill::Plugin::ActiveMerchant::ActiveRecord::PaymentMethod
|
|
4
|
+
|
|
5
|
+
self.table_name = '<%= identifier %>_payment_methods'
|
|
6
|
+
|
|
7
|
+
def self.from_response(kb_account_id, kb_payment_method_id, cc_or_token, response, options, extra_params = {})
|
|
8
|
+
super(kb_account_id,
|
|
9
|
+
kb_payment_method_id,
|
|
10
|
+
cc_or_token,
|
|
11
|
+
response,
|
|
12
|
+
options,
|
|
13
|
+
{
|
|
14
|
+
# Pass custom key/values here
|
|
15
|
+
#:params_id => extract(response, 'id'),
|
|
16
|
+
#:params_card_id => extract(response, 'card', 'id')
|
|
17
|
+
}.merge!(extra_params),
|
|
18
|
+
::Killbill::<%= class_name %>::<%= class_name %>PaymentMethod)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Killbill #:nodoc:
|
|
2
|
+
module <%= class_name %> #:nodoc:
|
|
3
|
+
class <%= class_name %>Response < ::Killbill::Plugin::ActiveMerchant::ActiveRecord::Response
|
|
4
|
+
|
|
5
|
+
self.table_name = '<%= identifier %>_responses'
|
|
6
|
+
|
|
7
|
+
has_one :<%= identifier %>_transaction
|
|
8
|
+
|
|
9
|
+
def self.from_response(api_call, kb_payment_id, response, extra_params = {})
|
|
10
|
+
super(api_call,
|
|
11
|
+
kb_payment_id,
|
|
12
|
+
response,
|
|
13
|
+
{
|
|
14
|
+
# Pass custom key/values here
|
|
15
|
+
#:params_id => extract(response, 'id'),
|
|
16
|
+
#:params_card_id => extract(response, 'card', 'id')
|
|
17
|
+
}.merge!(extra_params),
|
|
18
|
+
::Killbill::<%= class_name %>::<%= class_name %>Response)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module Killbill #:nodoc:
|
|
2
|
+
module <%= class_name %> #:nodoc:
|
|
3
|
+
class <%= class_name %>Transaction < ::Killbill::Plugin::ActiveMerchant::ActiveRecord::Transaction
|
|
4
|
+
|
|
5
|
+
self.table_name = '<%= identifier %>_transactions'
|
|
6
|
+
|
|
7
|
+
belongs_to :<%= identifier %>_response
|
|
8
|
+
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|