veritrans 2.1.3 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +6 -1
- data/.travis.yml +3 -5
- data/CHANGELOG.md +20 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +89 -94
- data/Procfile +1 -1
- data/README.md +62 -13
- data/api_reference.md +10 -10
- data/example/rails/cable/Gemfile +48 -0
- data/example/rails/cable/Gemfile.lock +184 -0
- data/example/rails/cable/README.md +29 -0
- data/example/rails/cable/Rakefile +6 -0
- data/example/rails/cable/app/assets/config/manifest.js +3 -0
- data/example/rails/cable/app/assets/images/.keep +0 -0
- data/example/rails/cable/app/assets/javascripts/application.js +15 -0
- data/example/rails/cable/app/assets/javascripts/cable.js +13 -0
- data/example/rails/cable/app/assets/javascripts/channels/.keep +0 -0
- data/example/rails/cable/app/assets/javascripts/chats.js +39 -0
- data/example/rails/cable/app/assets/javascripts/rooms.js +55 -0
- data/example/rails/cable/app/assets/stylesheets/application.css +16 -0
- data/example/rails/cable/app/assets/stylesheets/chatbox.scss +31 -0
- data/example/rails/cable/app/assets/stylesheets/peoplebox.scss +6 -0
- data/example/rails/cable/app/channels/application_cable/channel.rb +4 -0
- data/example/rails/cable/app/channels/application_cable/connection.rb +4 -0
- data/example/rails/cable/app/channels/rooms_texting_channel.rb +13 -0
- data/example/rails/cable/app/controllers/application_controller.rb +3 -0
- data/example/rails/cable/app/controllers/chats_controller.rb +18 -0
- data/example/rails/cable/app/controllers/concerns/.keep +0 -0
- data/example/rails/cable/app/controllers/pays_controller.rb +28 -0
- data/example/rails/cable/app/controllers/rooms_controller.rb +4 -0
- data/example/rails/cable/app/helpers/application_helper.rb +2 -0
- data/example/rails/cable/app/helpers/chats_helper.rb +2 -0
- data/example/rails/cable/app/helpers/rooms_helper.rb +5 -0
- data/example/rails/cable/app/jobs/application_job.rb +2 -0
- data/example/rails/cable/app/jobs/chat_broadcaster_job.rb +15 -0
- data/example/rails/cable/app/mailers/application_mailer.rb +4 -0
- data/example/rails/cable/app/models/application_record.rb +3 -0
- data/example/rails/cable/app/models/chat.rb +41 -0
- data/example/rails/cable/app/models/concerns/.keep +0 -0
- data/example/rails/cable/app/models/order.rb +2 -0
- data/example/rails/cable/app/models/user.rb +2 -0
- data/example/rails/cable/app/views/chats/_chat.html.erb +18 -0
- data/example/rails/cable/app/views/layouts/application.html.erb +19 -0
- data/example/rails/cable/app/views/layouts/mailer.html.erb +13 -0
- data/example/rails/cable/app/views/layouts/mailer.text.erb +1 -0
- data/example/rails/cable/app/views/rooms/_chatbox.html.erb +13 -0
- data/example/rails/cable/app/views/rooms/_online_people.html.erb +53 -0
- data/example/rails/cable/app/views/rooms/index.html.erb +9 -0
- data/example/rails/cable/bin/bundle +3 -0
- data/example/rails/cable/bin/rails +9 -0
- data/example/rails/cable/bin/rake +9 -0
- data/example/rails/cable/bin/setup +34 -0
- data/example/rails/cable/bin/spring +16 -0
- data/example/rails/cable/bin/update +29 -0
- data/example/rails/cable/config.ru +5 -0
- data/example/rails/cable/config/application.rb +16 -0
- data/example/rails/cable/config/boot.rb +3 -0
- data/example/rails/cable/config/cable.yml +9 -0
- data/example/rails/cable/config/database.yml +20 -0
- data/example/rails/cable/config/environment.rb +5 -0
- data/example/rails/cable/config/environments/development.rb +57 -0
- data/example/rails/cable/config/environments/production.rb +86 -0
- data/example/rails/cable/config/environments/test.rb +42 -0
- data/example/rails/cable/config/initializers/application_controller_renderer.rb +6 -0
- data/example/rails/cable/config/initializers/assets.rb +11 -0
- data/example/rails/cable/config/initializers/backtrace_silencers.rb +7 -0
- data/example/rails/cable/config/initializers/cookies_serializer.rb +5 -0
- data/example/rails/cable/config/initializers/filter_parameter_logging.rb +4 -0
- data/example/rails/cable/config/initializers/inflections.rb +16 -0
- data/example/rails/cable/config/initializers/mime_types.rb +4 -0
- data/example/rails/cable/config/initializers/new_framework_defaults.rb +24 -0
- data/example/rails/cable/config/initializers/session_store.rb +3 -0
- data/example/rails/cable/config/initializers/sidekiq.rb +2 -0
- data/example/rails/cable/config/initializers/veritrans.rb +46 -0
- data/example/rails/cable/config/initializers/wrap_parameters.rb +14 -0
- data/example/rails/cable/config/locales/en.yml +23 -0
- data/example/rails/cable/config/puma.rb +47 -0
- data/example/rails/cable/config/routes.rb +18 -0
- data/example/rails/cable/config/secrets.yml +22 -0
- data/example/rails/cable/config/spring.rb +6 -0
- data/example/rails/cable/config/veritrans.yml +13 -0
- data/example/rails/cable/db/development.sqlite3 +0 -0
- data/example/rails/cable/db/migrate/20161215070044_create_chats.rb +10 -0
- data/example/rails/cable/db/migrate/20161215072021_create_users.rb +10 -0
- data/example/rails/cable/db/migrate/20161219110219_create_orders.rb +11 -0
- data/example/rails/cable/db/schema.rb +37 -0
- data/example/rails/cable/db/seeds.rb +41 -0
- data/example/rails/cable/db/test.sqlite3 +0 -0
- data/example/rails/cable/lib/assets/.keep +0 -0
- data/example/rails/cable/lib/tasks/.keep +0 -0
- data/example/rails/cable/public/404.html +67 -0
- data/example/rails/cable/public/422.html +67 -0
- data/example/rails/cable/public/500.html +66 -0
- data/example/rails/cable/public/apple-touch-icon-precomposed.png +0 -0
- data/example/rails/cable/public/apple-touch-icon.png +0 -0
- data/example/rails/cable/public/favicon.ico +0 -0
- data/example/rails/cable/public/images/avatar1.jpg +0 -0
- data/example/rails/cable/public/images/avatar2.jpg +0 -0
- data/example/rails/cable/public/images/avatar3.jpg +0 -0
- data/example/rails/cable/public/images/avatar4.jpg +0 -0
- data/example/rails/cable/public/images/avatar5.jpg +0 -0
- data/example/rails/cable/public/images/avatar6.jpg +0 -0
- data/example/rails/cable/public/robots.txt +5 -0
- data/example/rails/cable/vendor/assets/javascripts/.keep +0 -0
- data/example/rails/cable/vendor/assets/stylesheets/.keep +0 -0
- data/example/rails/cable/vendor/assets/stylesheets/photon.css +2333 -0
- data/example/rails/simplepay/Gemfile +54 -0
- data/example/rails/simplepay/Gemfile.lock +178 -0
- data/example/rails/simplepay/README.md +30 -0
- data/example/rails/simplepay/Rakefile +6 -0
- data/example/rails/simplepay/app/assets/config/manifest.js +3 -0
- data/example/rails/simplepay/app/assets/images/.keep +0 -0
- data/example/rails/simplepay/app/assets/javascripts/application.js +16 -0
- data/example/rails/simplepay/app/assets/javascripts/cable.js +13 -0
- data/example/rails/simplepay/app/assets/javascripts/channels/.keep +0 -0
- data/example/rails/simplepay/app/assets/javascripts/pay.js +18 -0
- data/example/rails/simplepay/app/assets/stylesheets/application.css +15 -0
- data/example/rails/simplepay/app/assets/stylesheets/style.css +254 -0
- data/example/rails/simplepay/app/channels/application_cable/channel.rb +4 -0
- data/example/rails/simplepay/app/channels/application_cable/connection.rb +4 -0
- data/example/rails/simplepay/app/controllers/application_controller.rb +3 -0
- data/example/rails/simplepay/app/controllers/concerns/.keep +0 -0
- data/example/rails/simplepay/app/controllers/home_controller.rb +16 -0
- data/example/rails/simplepay/app/controllers/pay_controller.rb +10 -0
- data/example/rails/simplepay/app/helpers/application_helper.rb +2 -0
- data/example/rails/simplepay/app/helpers/pay_helper.rb +2 -0
- data/example/rails/simplepay/app/jobs/application_job.rb +2 -0
- data/example/rails/simplepay/app/mailers/application_mailer.rb +4 -0
- data/example/rails/simplepay/app/models/application_record.rb +3 -0
- data/example/rails/simplepay/app/models/concerns/.keep +0 -0
- data/example/rails/simplepay/app/models/order.rb +2 -0
- data/example/rails/simplepay/app/views/home/index.html.erb +19 -0
- data/example/rails/simplepay/app/views/layouts/application.html.erb +15 -0
- data/example/rails/simplepay/app/views/layouts/mailer.html.erb +13 -0
- data/example/rails/simplepay/app/views/layouts/mailer.text.erb +1 -0
- data/example/rails/simplepay/app/views/pay/notify.html.erb +2 -0
- data/example/rails/simplepay/bin/bundle +3 -0
- data/example/rails/simplepay/bin/rails +9 -0
- data/example/rails/simplepay/bin/rake +9 -0
- data/example/rails/simplepay/bin/setup +34 -0
- data/example/rails/simplepay/bin/spring +16 -0
- data/example/rails/simplepay/bin/update +29 -0
- data/example/rails/simplepay/config.ru +5 -0
- data/example/rails/simplepay/config/application.rb +15 -0
- data/example/rails/simplepay/config/boot.rb +3 -0
- data/example/rails/simplepay/config/cable.yml +9 -0
- data/example/rails/simplepay/config/database.yml +25 -0
- data/example/rails/simplepay/config/environment.rb +5 -0
- data/example/rails/simplepay/config/environments/development.rb +57 -0
- data/example/rails/simplepay/config/environments/production.rb +86 -0
- data/example/rails/simplepay/config/environments/test.rb +42 -0
- data/example/rails/simplepay/config/initializers/application_controller_renderer.rb +6 -0
- data/example/rails/simplepay/config/initializers/assets.rb +11 -0
- data/example/rails/simplepay/config/initializers/backtrace_silencers.rb +7 -0
- data/example/rails/simplepay/config/initializers/cookies_serializer.rb +5 -0
- data/example/rails/simplepay/config/initializers/filter_parameter_logging.rb +4 -0
- data/example/rails/simplepay/config/initializers/inflections.rb +16 -0
- data/example/rails/simplepay/config/initializers/mime_types.rb +4 -0
- data/example/rails/simplepay/config/initializers/new_framework_defaults.rb +24 -0
- data/example/rails/simplepay/config/initializers/session_store.rb +3 -0
- data/example/rails/simplepay/config/initializers/veritrans.rb +46 -0
- data/example/rails/simplepay/config/initializers/wrap_parameters.rb +14 -0
- data/example/rails/simplepay/config/locales/en.yml +23 -0
- data/example/rails/simplepay/config/puma.rb +47 -0
- data/example/rails/simplepay/config/routes.rb +5 -0
- data/example/rails/simplepay/config/secrets.yml +22 -0
- data/example/rails/simplepay/config/spring.rb +6 -0
- data/example/rails/simplepay/config/veritrans.yml +18 -0
- data/example/rails/simplepay/db/development.sqlite3 +0 -0
- data/example/rails/simplepay/db/migrate/20161221090855_create_orders.rb +10 -0
- data/example/rails/simplepay/db/schema.rb +22 -0
- data/example/rails/simplepay/db/seeds.rb +7 -0
- data/example/rails/simplepay/db/test.sqlite3 +0 -0
- data/example/rails/simplepay/lib/assets/.keep +0 -0
- data/example/rails/simplepay/lib/tasks/.keep +0 -0
- data/example/rails/simplepay/public/404.html +67 -0
- data/example/rails/simplepay/public/422.html +67 -0
- data/example/rails/simplepay/public/500.html +66 -0
- data/example/rails/simplepay/public/apple-touch-icon-precomposed.png +0 -0
- data/example/rails/simplepay/public/apple-touch-icon.png +0 -0
- data/example/rails/simplepay/public/favicon.ico +0 -0
- data/example/rails/simplepay/public/robots.txt +5 -0
- data/example/rails/simplepay/vendor/assets/javascripts/.keep +0 -0
- data/example/rails/simplepay/vendor/assets/stylesheets/.keep +0 -0
- data/example/{README.md → sinatra/README.md} +0 -0
- data/example/{config.ru → sinatra/config.ru} +3 -0
- data/example/{index.erb → sinatra/index.erb} +7 -6
- data/example/{localization.erb → sinatra/localization.erb} +6 -5
- data/example/{points.erb → sinatra/points.erb} +6 -5
- data/example/{recurring.erb → sinatra/recurring.erb} +6 -6
- data/example/{response.erb → sinatra/response.erb} +4 -1
- data/example/{sinatra.rb → sinatra/sinatra.rb} +9 -3
- data/example/{style.css → sinatra/style.css} +11 -0
- data/example/{veritrans.yml → sinatra/veritrans.yml} +2 -2
- data/example/{widget.erb → sinatra/widget.erb} +18 -6
- data/lib/generators/templates/assets/credit_card_form.js +6 -0
- data/lib/generators/templates/payments_controller.rb +4 -4
- data/lib/generators/templates/veritrans.yml +5 -5
- data/lib/generators/templates/views/_credit_card_form.erb +2 -2
- data/lib/generators/templates/views/_veritrans_include.erb +1 -1
- data/lib/generators/veritrans/install_generator.rb +1 -1
- data/lib/generators/veritrans/payment_form_generator.rb +1 -1
- data/lib/veritrans.rb +106 -5
- data/lib/veritrans/api.rb +7 -7
- data/lib/veritrans/cli.rb +11 -5
- data/lib/veritrans/client.rb +7 -4
- data/lib/veritrans/config.rb +5 -3
- data/lib/veritrans/events.rb +46 -35
- data/lib/veritrans/result.rb +58 -2
- data/lib/veritrans/testing.rb +156 -0
- data/lib/veritrans/version.rb +1 -1
- data/spec/cli_spec.rb +2 -2
- data/spec/fixtures/approve_failed.yml +1 -1
- data/spec/fixtures/cancel_failed.yml +1 -1
- data/spec/fixtures/cancel_success.yml +2 -2
- data/spec/fixtures/capture_failed.yml +1 -1
- data/spec/fixtures/charge.yml +2 -2
- data/spec/fixtures/charge_direct.yml +1 -1
- data/spec/fixtures/charge_vtweb.yml +2 -2
- data/spec/fixtures/cli_test_1111-not-exists.yml +1 -1
- data/spec/fixtures/cli_test_not_exists.yml +1 -1
- data/spec/fixtures/cli_test_real_txn.yml +1 -1
- data/spec/fixtures/cli_test_unauthorized.yml +1 -1
- data/spec/fixtures/events_test_real_txn.yml +1 -1
- data/spec/fixtures/expire_failed.yml +1 -1
- data/spec/fixtures/expire_success.yml +1 -1
- data/spec/fixtures/midtrans_status.yml +2 -2
- data/spec/fixtures/status_fail.yml +1 -1
- data/spec/fixtures/status_success.yml +2 -2
- data/spec/rails_plugin_spec.rb +37 -20
- data/spec/spec_helper.rb +0 -1
- data/spec/veritrans_client_spec.rb +1 -1
- data/spec/veritrans_config_spec.rb +1 -1
- data/spec/veritrans_events_spec.rb +6 -6
- data/spec/veritrans_testing_spec.rb +184 -0
- data/testing_webhooks.md +2 -2
- data/veritrans.gemspec +1 -1
- metadata +195 -16
- data/lib/veritrans/core_extensions.rb +0 -32
data/api_reference.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# API Reference
|
2
2
|
|
3
3
|
Here is only reference for API of this gem, to see complete information
|
4
|
-
please use our [documentation](
|
4
|
+
please use our [documentation](https://api-docs.midtrans.com/)
|
5
5
|
|
6
6
|
|
7
7
|
<table>
|
@@ -19,37 +19,37 @@ please use our [documentation](http://docs.veritrans.co.id/en/api/introduction.h
|
|
19
19
|
<td><a href="#charge">Veritrans.charge(data)</a></td>
|
20
20
|
<td>Charge Transaction</td>
|
21
21
|
<td>POST</td>
|
22
|
-
<td>api.
|
22
|
+
<td>api.midtrans.com/v2/charge</td>
|
23
23
|
</tr>
|
24
24
|
<tr>
|
25
25
|
<td><a href="#status">Veritrans.status(id)</a></td>
|
26
26
|
<td>Get Last Status</td>
|
27
27
|
<td>GET</td>
|
28
|
-
<td>api.
|
28
|
+
<td>api.midtrans.com/v2/{id}/status</td>
|
29
29
|
</tr>
|
30
30
|
<tr>
|
31
31
|
<td><a href="#cancel">Veritrans.cancel(id)</a></td>
|
32
32
|
<td>Cancel Transaction</td>
|
33
33
|
<td>POST</td>
|
34
|
-
<td>api.
|
34
|
+
<td>api.midtrans.com/v2/{id}/cancel</td>
|
35
35
|
</tr>
|
36
36
|
<tr>
|
37
37
|
<td><a href="#approve">Veritrans.approve(id)</a></td>
|
38
38
|
<td>Approve Challenge Transaction</td>
|
39
39
|
<td>POST</td>
|
40
|
-
<td>api.
|
40
|
+
<td>api.midtrans.com/v2/{id}/approve</td>
|
41
41
|
</tr>
|
42
42
|
<tr>
|
43
43
|
<td><a href="#capture">Veritrans.capture(id)</a></td>
|
44
44
|
<td>Capture Authorise Transaction</td>
|
45
45
|
<td>POST</td>
|
46
|
-
<td>api.
|
46
|
+
<td>api.midtrans.com/v2/{id}/capture</td>
|
47
47
|
</tr>
|
48
48
|
<tr>
|
49
49
|
<td><a href="#expire">Veritrans.expire(id)</a></td>
|
50
50
|
<td>Expire Pending Transaction</td>
|
51
51
|
<td>POST</td>
|
52
|
-
<td>api.
|
52
|
+
<td>api.midtrans.com/v2/{id}/expire</td>
|
53
53
|
</tr>
|
54
54
|
</tbody>
|
55
55
|
</table>
|
@@ -76,7 +76,7 @@ q.class # => Veritrans::Result
|
|
76
76
|
q.data == {
|
77
77
|
status_code: "201",
|
78
78
|
status_message: "OK, success do VTWeb transaction, please go to redirect_url",
|
79
|
-
redirect_url: "https://vtweb.sandbox.
|
79
|
+
redirect_url: "https://vtweb.sandbox.midtrans.com/v2/vtweb/b27d421f-90ff-4427-83d2-fbe8acbbce89"
|
80
80
|
}
|
81
81
|
```
|
82
82
|
|
@@ -109,7 +109,7 @@ q = Veritrans.charge({
|
|
109
109
|
customer_details: {
|
110
110
|
first_name: "Nadia",
|
111
111
|
last_name: "Modjo",
|
112
|
-
email: "noreply@
|
112
|
+
email: "noreply@midtrans.com",
|
113
113
|
phone: "+6281 123 12345",
|
114
114
|
billing_address: {
|
115
115
|
address: "Jalan Raya Kalijati",
|
@@ -253,7 +253,7 @@ result.class # => Veritrans::Result
|
|
253
253
|
|
254
254
|
* `Veritrans::Result#success?` - `boolean`, base on `status_code` field in json
|
255
255
|
* `Veritrans::Result#created?` - `boolean`, for VT-Link
|
256
|
-
* `Veritrans::Result#status_code` - `integer`, e.g. 200, 402. Documentation
|
256
|
+
* `Veritrans::Result#status_code` - `integer`, e.g. 200, 402. Documentation https://api-docs.midtrans.com/#status-code
|
257
257
|
* `Veritrans::Result#status_message` - `string`, e.g. "OK, success do VTWeb transaction, please go to redirect_url"
|
258
258
|
* `Veritrans::Result#redirect_url` - `string`, redirect URL for VT-Web and VT-Link
|
259
259
|
* `Veritrans::Result#body` - `string`, raw HTTP request body
|
@@ -0,0 +1,48 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
|
4
|
+
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
|
5
|
+
gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
|
6
|
+
# Use sqlite3 as the database for Active Record
|
7
|
+
gem 'mysql2'
|
8
|
+
# Use Puma as the app server
|
9
|
+
gem 'puma', '~> 3.0'
|
10
|
+
# Use SCSS for stylesheets
|
11
|
+
gem 'sass-rails', '~> 5.0'
|
12
|
+
# Use Uglifier as compressor for JavaScript assets
|
13
|
+
gem 'uglifier', '>= 1.3.0'
|
14
|
+
# Use CoffeeScript for .coffee assets and views
|
15
|
+
gem 'coffee-rails', '~> 4.2'
|
16
|
+
# See https://github.com/rails/execjs#readme for more supported runtimes
|
17
|
+
# gem 'therubyracer', platforms: :ruby
|
18
|
+
gem 'sidekiq'
|
19
|
+
gem 'veritrans', '~> 2'
|
20
|
+
|
21
|
+
# Use jquery as the JavaScript library
|
22
|
+
gem 'jquery-rails'
|
23
|
+
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
|
24
|
+
gem 'jbuilder', '~> 2.5'
|
25
|
+
# Use Redis adapter to run Action Cable in production
|
26
|
+
# gem 'redis', '~> 3.0'
|
27
|
+
# Use ActiveModel has_secure_password
|
28
|
+
# gem 'bcrypt', '~> 3.1.7'
|
29
|
+
|
30
|
+
# Use Capistrano for deployment
|
31
|
+
# gem 'capistrano-rails', group: :development
|
32
|
+
|
33
|
+
group :development, :test do
|
34
|
+
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
35
|
+
gem 'byebug', platform: :mri
|
36
|
+
end
|
37
|
+
|
38
|
+
group :development do
|
39
|
+
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
|
40
|
+
gem 'web-console'
|
41
|
+
gem 'listen', '~> 3.0.5'
|
42
|
+
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
|
43
|
+
gem 'spring'
|
44
|
+
gem 'spring-watcher-listen', '~> 2.0.0'
|
45
|
+
end
|
46
|
+
|
47
|
+
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
48
|
+
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|
@@ -0,0 +1,184 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
actioncable (5.0.0.1)
|
5
|
+
actionpack (= 5.0.0.1)
|
6
|
+
nio4r (~> 1.2)
|
7
|
+
websocket-driver (~> 0.6.1)
|
8
|
+
actionmailer (5.0.0.1)
|
9
|
+
actionpack (= 5.0.0.1)
|
10
|
+
actionview (= 5.0.0.1)
|
11
|
+
activejob (= 5.0.0.1)
|
12
|
+
mail (~> 2.5, >= 2.5.4)
|
13
|
+
rails-dom-testing (~> 2.0)
|
14
|
+
actionpack (5.0.0.1)
|
15
|
+
actionview (= 5.0.0.1)
|
16
|
+
activesupport (= 5.0.0.1)
|
17
|
+
rack (~> 2.0)
|
18
|
+
rack-test (~> 0.6.3)
|
19
|
+
rails-dom-testing (~> 2.0)
|
20
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
21
|
+
actionview (5.0.0.1)
|
22
|
+
activesupport (= 5.0.0.1)
|
23
|
+
builder (~> 3.1)
|
24
|
+
erubis (~> 2.7.0)
|
25
|
+
rails-dom-testing (~> 2.0)
|
26
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
27
|
+
activejob (5.0.0.1)
|
28
|
+
activesupport (= 5.0.0.1)
|
29
|
+
globalid (>= 0.3.6)
|
30
|
+
activemodel (5.0.0.1)
|
31
|
+
activesupport (= 5.0.0.1)
|
32
|
+
activerecord (5.0.0.1)
|
33
|
+
activemodel (= 5.0.0.1)
|
34
|
+
activesupport (= 5.0.0.1)
|
35
|
+
arel (~> 7.0)
|
36
|
+
activesupport (5.0.0.1)
|
37
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
38
|
+
i18n (~> 0.7)
|
39
|
+
minitest (~> 5.1)
|
40
|
+
tzinfo (~> 1.1)
|
41
|
+
arel (7.1.4)
|
42
|
+
builder (3.2.2)
|
43
|
+
byebug (9.0.6)
|
44
|
+
coffee-rails (4.2.1)
|
45
|
+
coffee-script (>= 2.2.0)
|
46
|
+
railties (>= 4.0.0, < 5.2.x)
|
47
|
+
coffee-script (2.4.1)
|
48
|
+
coffee-script-source
|
49
|
+
execjs
|
50
|
+
coffee-script-source (1.11.1)
|
51
|
+
concurrent-ruby (1.0.2)
|
52
|
+
connection_pool (2.2.1)
|
53
|
+
debug_inspector (0.0.2)
|
54
|
+
erubis (2.7.0)
|
55
|
+
excon (0.54.0)
|
56
|
+
execjs (2.7.0)
|
57
|
+
ffi (1.9.14)
|
58
|
+
globalid (0.3.7)
|
59
|
+
activesupport (>= 4.1.0)
|
60
|
+
i18n (0.7.0)
|
61
|
+
jbuilder (2.6.1)
|
62
|
+
activesupport (>= 3.0.0, < 5.1)
|
63
|
+
multi_json (~> 1.2)
|
64
|
+
jquery-rails (4.2.1)
|
65
|
+
rails-dom-testing (>= 1, < 3)
|
66
|
+
railties (>= 4.2.0)
|
67
|
+
thor (>= 0.14, < 2.0)
|
68
|
+
listen (3.0.8)
|
69
|
+
rb-fsevent (~> 0.9, >= 0.9.4)
|
70
|
+
rb-inotify (~> 0.9, >= 0.9.7)
|
71
|
+
loofah (2.0.3)
|
72
|
+
nokogiri (>= 1.5.9)
|
73
|
+
mail (2.6.4)
|
74
|
+
mime-types (>= 1.16, < 4)
|
75
|
+
method_source (0.8.2)
|
76
|
+
mime-types (3.1)
|
77
|
+
mime-types-data (~> 3.2015)
|
78
|
+
mime-types-data (3.2016.0521)
|
79
|
+
mini_portile2 (2.1.0)
|
80
|
+
minitest (5.10.1)
|
81
|
+
multi_json (1.12.1)
|
82
|
+
mysql2 (0.4.4)
|
83
|
+
nio4r (1.2.1)
|
84
|
+
nokogiri (1.6.8.1)
|
85
|
+
mini_portile2 (~> 2.1.0)
|
86
|
+
puma (3.6.2)
|
87
|
+
rack (2.0.1)
|
88
|
+
rack-protection (1.5.3)
|
89
|
+
rack
|
90
|
+
rack-test (0.6.3)
|
91
|
+
rack (>= 1.0)
|
92
|
+
rails (5.0.0.1)
|
93
|
+
actioncable (= 5.0.0.1)
|
94
|
+
actionmailer (= 5.0.0.1)
|
95
|
+
actionpack (= 5.0.0.1)
|
96
|
+
actionview (= 5.0.0.1)
|
97
|
+
activejob (= 5.0.0.1)
|
98
|
+
activemodel (= 5.0.0.1)
|
99
|
+
activerecord (= 5.0.0.1)
|
100
|
+
activesupport (= 5.0.0.1)
|
101
|
+
bundler (>= 1.3.0, < 2.0)
|
102
|
+
railties (= 5.0.0.1)
|
103
|
+
sprockets-rails (>= 2.0.0)
|
104
|
+
rails-dom-testing (2.0.1)
|
105
|
+
activesupport (>= 4.2.0, < 6.0)
|
106
|
+
nokogiri (~> 1.6.0)
|
107
|
+
rails-html-sanitizer (1.0.3)
|
108
|
+
loofah (~> 2.0)
|
109
|
+
railties (5.0.0.1)
|
110
|
+
actionpack (= 5.0.0.1)
|
111
|
+
activesupport (= 5.0.0.1)
|
112
|
+
method_source
|
113
|
+
rake (>= 0.8.7)
|
114
|
+
thor (>= 0.18.1, < 2.0)
|
115
|
+
rake (12.0.0)
|
116
|
+
rb-fsevent (0.9.8)
|
117
|
+
rb-inotify (0.9.7)
|
118
|
+
ffi (>= 0.5.0)
|
119
|
+
redis (3.3.2)
|
120
|
+
sass (3.4.22)
|
121
|
+
sass-rails (5.0.6)
|
122
|
+
railties (>= 4.0.0, < 6)
|
123
|
+
sass (~> 3.1)
|
124
|
+
sprockets (>= 2.8, < 4.0)
|
125
|
+
sprockets-rails (>= 2.0, < 4.0)
|
126
|
+
tilt (>= 1.1, < 3)
|
127
|
+
sidekiq (4.2.7)
|
128
|
+
concurrent-ruby (~> 1.0)
|
129
|
+
connection_pool (~> 2.2, >= 2.2.0)
|
130
|
+
rack-protection (>= 1.5.0)
|
131
|
+
redis (~> 3.2, >= 3.2.1)
|
132
|
+
spring (2.0.0)
|
133
|
+
activesupport (>= 4.2)
|
134
|
+
spring-watcher-listen (2.0.1)
|
135
|
+
listen (>= 2.7, < 4.0)
|
136
|
+
spring (>= 1.2, < 3.0)
|
137
|
+
sprockets (3.7.0)
|
138
|
+
concurrent-ruby (~> 1.0)
|
139
|
+
rack (> 1, < 3)
|
140
|
+
sprockets-rails (3.2.0)
|
141
|
+
actionpack (>= 4.0)
|
142
|
+
activesupport (>= 4.0)
|
143
|
+
sprockets (>= 3.0.0)
|
144
|
+
thor (0.19.4)
|
145
|
+
thread_safe (0.3.5)
|
146
|
+
tilt (2.0.5)
|
147
|
+
tzinfo (1.2.2)
|
148
|
+
thread_safe (~> 0.1)
|
149
|
+
uglifier (3.0.4)
|
150
|
+
execjs (>= 0.3.0, < 3)
|
151
|
+
veritrans (2.1.3)
|
152
|
+
excon (~> 0.20)
|
153
|
+
web-console (3.4.0)
|
154
|
+
actionview (>= 5.0)
|
155
|
+
activemodel (>= 5.0)
|
156
|
+
debug_inspector
|
157
|
+
railties (>= 5.0)
|
158
|
+
websocket-driver (0.6.4)
|
159
|
+
websocket-extensions (>= 0.1.0)
|
160
|
+
websocket-extensions (0.1.2)
|
161
|
+
|
162
|
+
PLATFORMS
|
163
|
+
ruby
|
164
|
+
|
165
|
+
DEPENDENCIES
|
166
|
+
byebug
|
167
|
+
coffee-rails (~> 4.2)
|
168
|
+
jbuilder (~> 2.5)
|
169
|
+
jquery-rails
|
170
|
+
listen (~> 3.0.5)
|
171
|
+
mysql2
|
172
|
+
puma (~> 3.0)
|
173
|
+
rails (~> 5.0.0, >= 5.0.0.1)
|
174
|
+
sass-rails (~> 5.0)
|
175
|
+
sidekiq
|
176
|
+
spring
|
177
|
+
spring-watcher-listen (~> 2.0.0)
|
178
|
+
tzinfo-data
|
179
|
+
uglifier (>= 1.3.0)
|
180
|
+
veritrans (~> 2)
|
181
|
+
web-console
|
182
|
+
|
183
|
+
BUNDLED WITH
|
184
|
+
1.13.6
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Cable: Slack on Rails
|
2
|
+
|
3
|
+
1. To demonstrate Ruby language
|
4
|
+
2. To demonstrate the use of Midtrans library's SNAP in handling payment
|
5
|
+
3. To demonstrate ActionCable, ActiveRecords and Rails in general
|
6
|
+
|
7
|
+
Feel free to fork, copy, modify, etc.
|
8
|
+
|
9
|
+
## Setting up procedures
|
10
|
+
|
11
|
+
1. Install Ruby, Bundler, Ruby on Rails, Redis, and MySQL database.
|
12
|
+
2. Clone the repository
|
13
|
+
3. Run `bundle install` on the root folder of the cloned project
|
14
|
+
4. If your MySQL configuration is standard, you can directly run `rake db:create db:migrate`. Otherwise edit `config/database.yml` and then run the same command.
|
15
|
+
5. Run `rake db:seed` to initialise the database state with some data.
|
16
|
+
6. Run `rails s` to start the web server. By default the system is served at `http://localhost:3000`
|
17
|
+
7. Run `bundle exec sidekiq` to run the sidekiq background job processor that process incoming chat message and properly broadcast them.
|
18
|
+
|
19
|
+
## How to make payment
|
20
|
+
|
21
|
+
Each payment link ("Beli") appear on a message that contains a pattern in the form of:
|
22
|
+
|
23
|
+
> (some text if any) jual (item name) (comma) (item price)
|
24
|
+
|
25
|
+
Example of texts that will create the "Beli" link:
|
26
|
+
|
27
|
+
1. Jual buku, 50.000
|
28
|
+
2. Nih gue jual stick PS, 50.000
|
29
|
+
3. Gue jual stick PS, 50.000; memory card, 200.000
|
File without changes
|
@@ -0,0 +1,15 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// compiled file. JavaScript code in this file should be added after the last require_* statement.
|
9
|
+
//
|
10
|
+
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
|
11
|
+
// about supported directives.
|
12
|
+
//
|
13
|
+
//= require jquery
|
14
|
+
//= require jquery_ujs
|
15
|
+
//= require_tree .
|
@@ -0,0 +1,13 @@
|
|
1
|
+
// Action Cable provides the framework to deal with WebSockets in Rails.
|
2
|
+
// You can generate new channels where WebSocket features live using the rails generate channel command.
|
3
|
+
//
|
4
|
+
//= require action_cable
|
5
|
+
//= require_self
|
6
|
+
//= require_tree ./channels
|
7
|
+
|
8
|
+
(function() {
|
9
|
+
this.App || (this.App = {});
|
10
|
+
|
11
|
+
App.cable = ActionCable.createConsumer();
|
12
|
+
|
13
|
+
}).call(this);
|
File without changes
|
@@ -0,0 +1,39 @@
|
|
1
|
+
function snapTokenGeneratorOnClickFor(elementQualifier) {
|
2
|
+
$(document).on("click", elementQualifier, function(event) {
|
3
|
+
var element = jQuery(this);
|
4
|
+
var chatId = element.data("chat-id");
|
5
|
+
var token = element.data("token");
|
6
|
+
|
7
|
+
if (token == "" || token == undefined) {
|
8
|
+
$.ajax({
|
9
|
+
url: '/chats/' + chatId + '/generate_checkout_token',
|
10
|
+
data: {},
|
11
|
+
success: function(data) {
|
12
|
+
var token = data.token;
|
13
|
+
element.data('token', token);
|
14
|
+
showSnapDialog(element);
|
15
|
+
}
|
16
|
+
});
|
17
|
+
} else { showSnapDialog(element); }
|
18
|
+
});
|
19
|
+
}
|
20
|
+
|
21
|
+
function showSnapDialog(element) {
|
22
|
+
var token = element.data("token");
|
23
|
+
console.log(token);
|
24
|
+
snap.pay(token, {
|
25
|
+
onSuccess: function(res) {
|
26
|
+
|
27
|
+
},
|
28
|
+
onPending: function(res) {
|
29
|
+
|
30
|
+
},
|
31
|
+
onError: function(res) {
|
32
|
+
|
33
|
+
}
|
34
|
+
});
|
35
|
+
}
|
36
|
+
|
37
|
+
jQuery(document).ready(function() {
|
38
|
+
snapTokenGeneratorOnClickFor('.buy-chat-items');
|
39
|
+
})
|
@@ -0,0 +1,55 @@
|
|
1
|
+
function makeSubscription() {
|
2
|
+
App.globalChat = App.cable.subscriptions.create({
|
3
|
+
channel: 'RoomsTextingChannel',
|
4
|
+
}, {
|
5
|
+
connected: function() {},
|
6
|
+
|
7
|
+
disconnected: function() {},
|
8
|
+
|
9
|
+
received: function(data) {
|
10
|
+
jQuery('.chats').append(data.chat);
|
11
|
+
scrollToBottom(jQuery('.chats'));
|
12
|
+
},
|
13
|
+
|
14
|
+
sendMessage: function(message) {
|
15
|
+
return this.perform('send_message', {
|
16
|
+
message: message,
|
17
|
+
});
|
18
|
+
}
|
19
|
+
});
|
20
|
+
}
|
21
|
+
|
22
|
+
function makeFormSubmitCallback(form) {
|
23
|
+
var messageTextArea = form.find('#chat-input-text');
|
24
|
+
messageTextArea.on('keypress', function(e) {
|
25
|
+
if (e.keyCode == 13) {
|
26
|
+
e.preventDefault();
|
27
|
+
form.submit();
|
28
|
+
}
|
29
|
+
});
|
30
|
+
|
31
|
+
form.submit(function(e) {
|
32
|
+
e.preventDefault();
|
33
|
+
|
34
|
+
var messageText = messageTextArea.val();
|
35
|
+
// tidak boleh mengirim text kosong
|
36
|
+
if (jQuery.trim(messageText).length > 1) {
|
37
|
+
App.globalChat.sendMessage(messageTextArea.val());
|
38
|
+
messageTextArea.val('');
|
39
|
+
} else {
|
40
|
+
console.error("Blank message, cannot send it");
|
41
|
+
}
|
42
|
+
|
43
|
+
return false;
|
44
|
+
});
|
45
|
+
}
|
46
|
+
|
47
|
+
function scrollToBottom(element) {
|
48
|
+
element.scrollTop(element.prop('scrollHeight'));
|
49
|
+
}
|
50
|
+
|
51
|
+
jQuery(document).ready(function() {
|
52
|
+
makeSubscription();
|
53
|
+
makeFormSubmitCallback(jQuery('#new_chat'));
|
54
|
+
scrollToBottom(jQuery('.chats'));
|
55
|
+
})
|