veritrans 2.3.0 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +4 -0
- data/.idea/.gitignore +8 -0
- data/.rubocop.yml +1 -1
- data/.travis.yml +2 -1
- data/CHANGELOG.md +13 -0
- data/Gemfile +2 -11
- data/Gemfile.lock +116 -145
- data/Maintaining.MD +8 -0
- data/README.md +247 -278
- data/api_reference.md +482 -173
- data/example/coreapi/core_api_credit_card_example.rb +66 -0
- data/example/coreapi/readme.md +4 -0
- data/example/sinatra/Gemfile +7 -0
- data/example/sinatra/README.md +4 -6
- data/example/sinatra/index.erb +180 -192
- data/example/sinatra/response.erb +1 -40
- data/example/sinatra/snap.erb +33 -0
- data/example/sinatra/snap_redirect.erb +10 -0
- data/example/sinatra/webapp.rb +113 -0
- data/example/snap/readme.md +4 -0
- data/example/snap/snap_example.rb +39 -0
- data/lib/test/all.rb +1 -0
- data/lib/test/api_test.rb +319 -0
- data/lib/test/config_test.rb +26 -0
- data/lib/test/gopay_tokenization_test.rb +80 -0
- data/lib/test/snap_test.rb +79 -0
- data/lib/test/subscription_test.rb +116 -0
- data/lib/test/transaction_test.rb +160 -0
- data/lib/veritrans/api.rb +105 -8
- data/lib/veritrans/client.rb +40 -7
- data/lib/veritrans/config.rb +26 -3
- data/lib/veritrans/midtrans_error.rb +15 -0
- data/lib/veritrans/version.rb +1 -1
- data/lib/veritrans.rb +5 -6
- data/veritrans.gemspec +1 -2
- metadata +25 -248
- data/.rspec +0 -2
- data/Procfile +0 -1
- data/Rakefile +0 -16
- data/bin/midtrans +0 -3
- data/bin/veritrans +0 -68
- data/example/rails/cable/Gemfile +0 -48
- data/example/rails/cable/Gemfile.lock +0 -184
- data/example/rails/cable/README.md +0 -29
- data/example/rails/cable/Rakefile +0 -6
- data/example/rails/cable/app/assets/config/manifest.js +0 -3
- data/example/rails/cable/app/assets/images/.keep +0 -0
- data/example/rails/cable/app/assets/javascripts/application.js +0 -15
- data/example/rails/cable/app/assets/javascripts/cable.js +0 -13
- data/example/rails/cable/app/assets/javascripts/channels/.keep +0 -0
- data/example/rails/cable/app/assets/javascripts/chats.js +0 -39
- data/example/rails/cable/app/assets/javascripts/rooms.js +0 -55
- data/example/rails/cable/app/assets/stylesheets/application.css +0 -16
- data/example/rails/cable/app/assets/stylesheets/chatbox.scss +0 -31
- data/example/rails/cable/app/assets/stylesheets/peoplebox.scss +0 -6
- data/example/rails/cable/app/channels/application_cable/channel.rb +0 -4
- data/example/rails/cable/app/channels/application_cable/connection.rb +0 -4
- data/example/rails/cable/app/channels/rooms_texting_channel.rb +0 -13
- data/example/rails/cable/app/controllers/application_controller.rb +0 -3
- data/example/rails/cable/app/controllers/chats_controller.rb +0 -18
- data/example/rails/cable/app/controllers/concerns/.keep +0 -0
- data/example/rails/cable/app/controllers/pays_controller.rb +0 -28
- data/example/rails/cable/app/controllers/rooms_controller.rb +0 -4
- data/example/rails/cable/app/helpers/application_helper.rb +0 -2
- data/example/rails/cable/app/helpers/chats_helper.rb +0 -2
- data/example/rails/cable/app/helpers/rooms_helper.rb +0 -5
- data/example/rails/cable/app/jobs/application_job.rb +0 -2
- data/example/rails/cable/app/jobs/chat_broadcaster_job.rb +0 -15
- data/example/rails/cable/app/mailers/application_mailer.rb +0 -4
- data/example/rails/cable/app/models/application_record.rb +0 -3
- data/example/rails/cable/app/models/chat.rb +0 -41
- data/example/rails/cable/app/models/concerns/.keep +0 -0
- data/example/rails/cable/app/models/order.rb +0 -2
- data/example/rails/cable/app/models/user.rb +0 -2
- data/example/rails/cable/app/views/chats/_chat.html.erb +0 -18
- data/example/rails/cable/app/views/layouts/application.html.erb +0 -19
- data/example/rails/cable/app/views/layouts/mailer.html.erb +0 -13
- data/example/rails/cable/app/views/layouts/mailer.text.erb +0 -1
- data/example/rails/cable/app/views/rooms/_chatbox.html.erb +0 -13
- data/example/rails/cable/app/views/rooms/_online_people.html.erb +0 -53
- data/example/rails/cable/app/views/rooms/index.html.erb +0 -9
- data/example/rails/cable/bin/bundle +0 -3
- data/example/rails/cable/bin/rails +0 -9
- data/example/rails/cable/bin/rake +0 -9
- data/example/rails/cable/bin/setup +0 -34
- data/example/rails/cable/bin/spring +0 -16
- data/example/rails/cable/bin/update +0 -29
- data/example/rails/cable/config/application.rb +0 -16
- data/example/rails/cable/config/boot.rb +0 -3
- data/example/rails/cable/config/cable.yml +0 -9
- data/example/rails/cable/config/database.yml +0 -20
- data/example/rails/cable/config/environment.rb +0 -5
- data/example/rails/cable/config/environments/development.rb +0 -57
- data/example/rails/cable/config/environments/production.rb +0 -86
- data/example/rails/cable/config/environments/test.rb +0 -42
- data/example/rails/cable/config/initializers/application_controller_renderer.rb +0 -6
- data/example/rails/cable/config/initializers/assets.rb +0 -11
- data/example/rails/cable/config/initializers/backtrace_silencers.rb +0 -7
- data/example/rails/cable/config/initializers/cookies_serializer.rb +0 -5
- data/example/rails/cable/config/initializers/filter_parameter_logging.rb +0 -4
- data/example/rails/cable/config/initializers/inflections.rb +0 -16
- data/example/rails/cable/config/initializers/mime_types.rb +0 -4
- data/example/rails/cable/config/initializers/new_framework_defaults.rb +0 -24
- data/example/rails/cable/config/initializers/session_store.rb +0 -3
- data/example/rails/cable/config/initializers/sidekiq.rb +0 -2
- data/example/rails/cable/config/initializers/veritrans.rb +0 -46
- data/example/rails/cable/config/initializers/wrap_parameters.rb +0 -14
- data/example/rails/cable/config/locales/en.yml +0 -23
- data/example/rails/cable/config/puma.rb +0 -47
- data/example/rails/cable/config/routes.rb +0 -18
- data/example/rails/cable/config/secrets.yml +0 -22
- data/example/rails/cable/config/spring.rb +0 -6
- data/example/rails/cable/config/veritrans.yml +0 -13
- data/example/rails/cable/config.ru +0 -5
- data/example/rails/cable/db/development.sqlite3 +0 -0
- data/example/rails/cable/db/migrate/20161215070044_create_chats.rb +0 -10
- data/example/rails/cable/db/migrate/20161215072021_create_users.rb +0 -10
- data/example/rails/cable/db/migrate/20161219110219_create_orders.rb +0 -11
- data/example/rails/cable/db/schema.rb +0 -37
- data/example/rails/cable/db/seeds.rb +0 -41
- 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/log/.keep +0 -0
- data/example/rails/cable/public/404.html +0 -67
- data/example/rails/cable/public/422.html +0 -67
- data/example/rails/cable/public/500.html +0 -66
- 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 +0 -5
- 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 +0 -2333
- data/example/rails/simplepay/Gemfile +0 -54
- data/example/rails/simplepay/Gemfile.lock +0 -178
- data/example/rails/simplepay/README.md +0 -30
- data/example/rails/simplepay/Rakefile +0 -6
- data/example/rails/simplepay/app/assets/config/manifest.js +0 -3
- data/example/rails/simplepay/app/assets/images/.keep +0 -0
- data/example/rails/simplepay/app/assets/javascripts/application.js +0 -16
- data/example/rails/simplepay/app/assets/javascripts/cable.js +0 -13
- data/example/rails/simplepay/app/assets/javascripts/channels/.keep +0 -0
- data/example/rails/simplepay/app/assets/javascripts/pay.js +0 -18
- data/example/rails/simplepay/app/assets/stylesheets/application.css +0 -15
- data/example/rails/simplepay/app/assets/stylesheets/style.css +0 -254
- data/example/rails/simplepay/app/channels/application_cable/channel.rb +0 -4
- data/example/rails/simplepay/app/channels/application_cable/connection.rb +0 -4
- data/example/rails/simplepay/app/controllers/application_controller.rb +0 -3
- data/example/rails/simplepay/app/controllers/concerns/.keep +0 -0
- data/example/rails/simplepay/app/controllers/home_controller.rb +0 -16
- data/example/rails/simplepay/app/controllers/pay_controller.rb +0 -10
- data/example/rails/simplepay/app/helpers/application_helper.rb +0 -2
- data/example/rails/simplepay/app/helpers/pay_helper.rb +0 -2
- data/example/rails/simplepay/app/jobs/application_job.rb +0 -2
- data/example/rails/simplepay/app/mailers/application_mailer.rb +0 -4
- data/example/rails/simplepay/app/models/application_record.rb +0 -3
- data/example/rails/simplepay/app/models/concerns/.keep +0 -0
- data/example/rails/simplepay/app/models/order.rb +0 -2
- data/example/rails/simplepay/app/views/home/index.html.erb +0 -19
- data/example/rails/simplepay/app/views/layouts/application.html.erb +0 -15
- data/example/rails/simplepay/app/views/layouts/mailer.html.erb +0 -13
- data/example/rails/simplepay/app/views/layouts/mailer.text.erb +0 -1
- data/example/rails/simplepay/app/views/pay/notify.html.erb +0 -2
- data/example/rails/simplepay/bin/bundle +0 -3
- data/example/rails/simplepay/bin/rails +0 -9
- data/example/rails/simplepay/bin/rake +0 -9
- data/example/rails/simplepay/bin/setup +0 -34
- data/example/rails/simplepay/bin/spring +0 -16
- data/example/rails/simplepay/bin/update +0 -29
- data/example/rails/simplepay/config/application.rb +0 -15
- data/example/rails/simplepay/config/boot.rb +0 -3
- data/example/rails/simplepay/config/cable.yml +0 -9
- data/example/rails/simplepay/config/database.yml +0 -25
- data/example/rails/simplepay/config/environment.rb +0 -5
- data/example/rails/simplepay/config/environments/development.rb +0 -57
- data/example/rails/simplepay/config/environments/production.rb +0 -86
- data/example/rails/simplepay/config/environments/test.rb +0 -42
- data/example/rails/simplepay/config/initializers/application_controller_renderer.rb +0 -6
- data/example/rails/simplepay/config/initializers/assets.rb +0 -11
- data/example/rails/simplepay/config/initializers/backtrace_silencers.rb +0 -7
- data/example/rails/simplepay/config/initializers/cookies_serializer.rb +0 -5
- data/example/rails/simplepay/config/initializers/filter_parameter_logging.rb +0 -4
- data/example/rails/simplepay/config/initializers/inflections.rb +0 -16
- data/example/rails/simplepay/config/initializers/mime_types.rb +0 -4
- data/example/rails/simplepay/config/initializers/new_framework_defaults.rb +0 -24
- data/example/rails/simplepay/config/initializers/session_store.rb +0 -3
- data/example/rails/simplepay/config/initializers/veritrans.rb +0 -46
- data/example/rails/simplepay/config/initializers/wrap_parameters.rb +0 -14
- data/example/rails/simplepay/config/locales/en.yml +0 -23
- data/example/rails/simplepay/config/puma.rb +0 -47
- data/example/rails/simplepay/config/routes.rb +0 -5
- data/example/rails/simplepay/config/secrets.yml +0 -22
- data/example/rails/simplepay/config/spring.rb +0 -6
- data/example/rails/simplepay/config/veritrans.yml +0 -18
- data/example/rails/simplepay/config.ru +0 -5
- data/example/rails/simplepay/db/development.sqlite3 +0 -0
- data/example/rails/simplepay/db/migrate/20161221090855_create_orders.rb +0 -10
- data/example/rails/simplepay/db/schema.rb +0 -22
- data/example/rails/simplepay/db/seeds.rb +0 -7
- 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/log/.keep +0 -0
- data/example/rails/simplepay/public/404.html +0 -67
- data/example/rails/simplepay/public/422.html +0 -67
- data/example/rails/simplepay/public/500.html +0 -66
- 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 +0 -5
- data/example/rails/simplepay/vendor/assets/javascripts/.keep +0 -0
- data/example/rails/simplepay/vendor/assets/stylesheets/.keep +0 -0
- data/example/sinatra/config.ru +0 -9
- data/example/sinatra/localization.erb +0 -249
- data/example/sinatra/points.erb +0 -188
- data/example/sinatra/recurring.erb +0 -201
- data/example/sinatra/sinatra.rb +0 -194
- data/example/sinatra/style.css +0 -137
- data/example/sinatra/veritrans.yml +0 -11
- data/example/sinatra/widget.erb +0 -63
- data/lib/generators/templates/assets/credit_card_form.js +0 -57
- data/lib/generators/templates/payments_controller.rb +0 -85
- data/lib/generators/templates/veritrans.rb +0 -46
- data/lib/generators/templates/veritrans.yml +0 -18
- data/lib/generators/templates/views/_credit_card_form.erb +0 -42
- data/lib/generators/templates/views/_veritrans_include.erb +0 -10
- data/lib/generators/templates/views/payments/create.erb +0 -15
- data/lib/generators/templates/views/payments/new.erb +0 -6
- data/lib/generators/veritrans/install_generator.rb +0 -32
- data/lib/generators/veritrans/payment_form_generator.rb +0 -45
- data/lib/veritrans/cli.rb +0 -161
- data/lib/veritrans/testing.rb +0 -156
- data/spec/cli_spec.rb +0 -83
- data/spec/configs/real_key.yml +0 -4
- data/spec/configs/veritrans.yml +0 -7
- data/spec/configs/veritrans_flat.yml +0 -2
- data/spec/configs/veritrans_with_erb.yml +0 -2
- data/spec/fixtures/approve_failed.yml +0 -48
- data/spec/fixtures/cancel_failed.yml +0 -48
- data/spec/fixtures/cancel_success.yml +0 -126
- data/spec/fixtures/capture_failed.yml +0 -48
- data/spec/fixtures/charge.yml +0 -50
- data/spec/fixtures/charge_direct.yml +0 -56
- data/spec/fixtures/charge_vtweb.yml +0 -50
- data/spec/fixtures/cli_test_1111-not-exists.yml +0 -45
- data/spec/fixtures/cli_test_not_exists.yml +0 -45
- data/spec/fixtures/cli_test_real_txn.yml +0 -55
- data/spec/fixtures/cli_test_unauthorized.yml +0 -47
- data/spec/fixtures/deny_failed.yml +0 -144
- data/spec/fixtures/events_test_real_txn.yml +0 -55
- data/spec/fixtures/expire_failed.yml +0 -50
- data/spec/fixtures/expire_success.yml +0 -56
- data/spec/fixtures/midtrans_status.yml +0 -117
- data/spec/fixtures/refund_failed.yml +0 -54
- data/spec/fixtures/status_fail.yml +0 -48
- data/spec/fixtures/status_success.yml +0 -128
- data/spec/fixtures/test_token.yml +0 -49
- data/spec/midtrans_rename_spec.rb +0 -27
- data/spec/rails_plugin_spec.rb +0 -317
- data/spec/spec_helper.rb +0 -71
- data/spec/veritrans_client_spec.rb +0 -235
- data/spec/veritrans_config_spec.rb +0 -70
- data/spec/veritrans_events_spec.rb +0 -72
- data/spec/veritrans_logger_spec.rb +0 -46
- data/spec/veritrans_snap_spec.rb +0 -54
- data/spec/veritrans_testing_spec.rb +0 -184
- data/testing_webhooks.md +0 -78
File without changes
|
@@ -1,15 +0,0 @@
|
|
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 .
|
@@ -1,13 +0,0 @@
|
|
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
|
@@ -1,39 +0,0 @@
|
|
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
|
-
})
|
@@ -1,55 +0,0 @@
|
|
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
|
-
})
|
@@ -1,16 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
-
* listed below.
|
4
|
-
*
|
5
|
-
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
-
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
|
7
|
-
*
|
8
|
-
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
9
|
-
* compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
|
10
|
-
* files in this directory. Styles in this file should be added after the last require_* statement.
|
11
|
-
* It is generally better to create a new file per style scope.
|
12
|
-
*
|
13
|
-
*= require_tree .
|
14
|
-
*= require photon
|
15
|
-
*= require_self
|
16
|
-
*/
|
@@ -1,31 +0,0 @@
|
|
1
|
-
.chatbox {
|
2
|
-
height: 100%;
|
3
|
-
.chats {
|
4
|
-
height: 85%;
|
5
|
-
padding: 0px;
|
6
|
-
list-style: none;
|
7
|
-
margin: 0;
|
8
|
-
overflow-x: scroll;
|
9
|
-
|
10
|
-
.chat {
|
11
|
-
padding: 5px 25px;
|
12
|
-
p { margin: 0px; }
|
13
|
-
img.person-avatar {
|
14
|
-
width: 25px;
|
15
|
-
height: 25px;
|
16
|
-
}
|
17
|
-
} // .chat
|
18
|
-
} // .chats
|
19
|
-
|
20
|
-
.chat-input {
|
21
|
-
height: 15%;
|
22
|
-
padding: 7px;
|
23
|
-
|
24
|
-
form { height: 100%; width: 100%; }
|
25
|
-
|
26
|
-
#chat-input-text {
|
27
|
-
width: 100%;
|
28
|
-
height: 100%;
|
29
|
-
} // #chat-input-text
|
30
|
-
} // .chat-input
|
31
|
-
} // .chatbox
|
@@ -1,18 +0,0 @@
|
|
1
|
-
class ChatsController < ApplicationController
|
2
|
-
def generate_checkout_token
|
3
|
-
chat = Chat.find(params[:id])
|
4
|
-
|
5
|
-
order_id = "#{params[:id]}#{SecureRandom.hex(3)}"
|
6
|
-
Order.create!(order_id: order_id)
|
7
|
-
|
8
|
-
response = Veritrans.create_widget_token(
|
9
|
-
transaction_details: {
|
10
|
-
order_id: order_id,
|
11
|
-
gross_amount: chat.gross_amount
|
12
|
-
}
|
13
|
-
)
|
14
|
-
|
15
|
-
token = response.token_id
|
16
|
-
render json: {token: token}
|
17
|
-
end
|
18
|
-
end
|
File without changes
|
@@ -1,28 +0,0 @@
|
|
1
|
-
class PaysController < ApplicationController
|
2
|
-
skip_before_action :verify_authenticity_token
|
3
|
-
|
4
|
-
def notify
|
5
|
-
transaction_status = params["transaction_status"]
|
6
|
-
fraud_status = params["fraud_status"]
|
7
|
-
|
8
|
-
if transaction_status == "capture" && fraud_status == "accept"
|
9
|
-
Order.find_by_order_id(params["order_id"]).update_attributes!(
|
10
|
-
transaction_status: transaction_status
|
11
|
-
)
|
12
|
-
end
|
13
|
-
|
14
|
-
render text: "OK"
|
15
|
-
end
|
16
|
-
|
17
|
-
def finish
|
18
|
-
redirect_to rooms_path
|
19
|
-
end
|
20
|
-
|
21
|
-
def unfinish
|
22
|
-
redirect_to rooms_path
|
23
|
-
end
|
24
|
-
|
25
|
-
def error
|
26
|
-
redirect_to rooms_path
|
27
|
-
end
|
28
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
class ChatBroadcasterJob < ApplicationJob
|
2
|
-
queue_as :default
|
3
|
-
|
4
|
-
def perform(chat)
|
5
|
-
ActionCable.server.broadcast "chat_rooms_channel",
|
6
|
-
chat: render_message(chat)
|
7
|
-
end
|
8
|
-
|
9
|
-
private
|
10
|
-
|
11
|
-
def render_message(chat)
|
12
|
-
ChatsController.render partial: 'chats/chat',
|
13
|
-
locals: {chat: chat}
|
14
|
-
end
|
15
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
class Chat < ApplicationRecord
|
2
|
-
belongs_to :sender, class_name: User
|
3
|
-
after_create_commit { ChatBroadcasterJob.perform_later(self) }
|
4
|
-
|
5
|
-
ITEMABLE_REGEX = /\A.*jual\s+/i
|
6
|
-
|
7
|
-
def itemable?
|
8
|
-
!(text =~ ITEMABLE_REGEX).nil?
|
9
|
-
end
|
10
|
-
|
11
|
-
def gross_amount
|
12
|
-
items.inject(0) { |sum, elem| sum + elem[:price] }
|
13
|
-
end
|
14
|
-
|
15
|
-
def items
|
16
|
-
items = []
|
17
|
-
return items unless itemable?
|
18
|
-
|
19
|
-
clean_text = text.dup.gsub(ITEMABLE_REGEX, '')
|
20
|
-
|
21
|
-
# satu text jualan bisa berisi banyak item yang dipisahkan
|
22
|
-
# oleh tanda titik koma (;)
|
23
|
-
items_texts = clean_text.split(';')
|
24
|
-
|
25
|
-
# iterasi tiap text item
|
26
|
-
items_texts.each do |item_text|
|
27
|
-
# pisahkan item text berdasarkan tanda koma
|
28
|
-
# setelah itu ambil tiap 2 elemen data tiap satu iterasi
|
29
|
-
item_text.split(",").each_slice(2) do |name, price|
|
30
|
-
# tambahkan ke koleksi items
|
31
|
-
items << {
|
32
|
-
name: name,
|
33
|
-
price: price.try(:tr, '.', '').to_i
|
34
|
-
}
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
# return items
|
39
|
-
items
|
40
|
-
end
|
41
|
-
end
|
File without changes
|
@@ -1,18 +0,0 @@
|
|
1
|
-
<li class='chat'>
|
2
|
-
<%= image_tag chat.sender.avatar,
|
3
|
-
class: 'person-avatar img-circle media-object pull-left' %>
|
4
|
-
<div class='media-body'>
|
5
|
-
<strong><%= chat.sender.name %></strong>
|
6
|
-
<p><%= chat.text %></p>
|
7
|
-
|
8
|
-
<% if chat.itemable? && chat.items.any? && chat.gross_amount > 0 %>
|
9
|
-
<a href="#beli-<%= chat.id %>"
|
10
|
-
data-token=""
|
11
|
-
data-chat-id="<%= chat.id %>"
|
12
|
-
class='buy-chat-items'>
|
13
|
-
Beli
|
14
|
-
</a>
|
15
|
-
<% end %>
|
16
|
-
|
17
|
-
</div>
|
18
|
-
</li>
|
@@ -1,19 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<title>Cable</title>
|
5
|
-
<%= csrf_meta_tags %>
|
6
|
-
|
7
|
-
<%= stylesheet_link_tag 'application', media: 'all' %>
|
8
|
-
<%= javascript_include_tag 'application' %>
|
9
|
-
<script src="https://app.sandbox.midtrans.com/snap/snap.js"></script>
|
10
|
-
</head>
|
11
|
-
|
12
|
-
<body>
|
13
|
-
<div class='window'>
|
14
|
-
<div class='window-content'>
|
15
|
-
<%= yield %>
|
16
|
-
</div>
|
17
|
-
</div>
|
18
|
-
</body>
|
19
|
-
</html>
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= yield %>
|
@@ -1,13 +0,0 @@
|
|
1
|
-
<div class='chatbox'>
|
2
|
-
<ul class='chats'>
|
3
|
-
<% all_chats.each do |chat| %>
|
4
|
-
<%= render "chats/chat", chat: chat %>
|
5
|
-
<% end %>
|
6
|
-
</ul>
|
7
|
-
|
8
|
-
<div class='chat-input'>
|
9
|
-
<%= form_for Chat.new do |f| %>
|
10
|
-
<textarea id='chat-input-text' class='form-control' placeholder="Type 'Jual Nama Product, harga', e.g 'jual pisang, 3000'"></textarea>
|
11
|
-
<% end %>
|
12
|
-
</div>
|
13
|
-
</div>
|
@@ -1,53 +0,0 @@
|
|
1
|
-
<ul class="list-group people-box">
|
2
|
-
<li class="list-group-header">
|
3
|
-
<input class="form-control" type="text" placeholder="Search for someone">
|
4
|
-
</li>
|
5
|
-
|
6
|
-
<li class="list-group-item active">
|
7
|
-
<%= image_tag 'avatar1.jpg', class: 'person-avatar img-circle media-object pull-left' %>
|
8
|
-
<div class="media-body">
|
9
|
-
<strong>List item title</strong>
|
10
|
-
<p>Lorem ipsum dolor sit amet.</p>
|
11
|
-
</div>
|
12
|
-
</li>
|
13
|
-
|
14
|
-
<li class="list-group-item">
|
15
|
-
<%= image_tag 'avatar2.jpg', class: 'person-avatar img-circle media-object pull-left' %>
|
16
|
-
<div class="media-body">
|
17
|
-
<strong>List item title</strong>
|
18
|
-
<p>Lorem ipsum dolor sit amet.</p>
|
19
|
-
</div>
|
20
|
-
</li>
|
21
|
-
|
22
|
-
<li class="list-group-item">
|
23
|
-
<%= image_tag 'avatar3.jpg', class: 'person-avatar img-circle media-object pull-left' %>
|
24
|
-
<div class="media-body">
|
25
|
-
<strong>List item title</strong>
|
26
|
-
<p>Lorem ipsum dolor sit amet.</p>
|
27
|
-
</div>
|
28
|
-
</li>
|
29
|
-
|
30
|
-
<li class="list-group-item">
|
31
|
-
<%= image_tag 'avatar4.jpg', class: 'person-avatar img-circle media-object pull-left' %>
|
32
|
-
<div class="media-body">
|
33
|
-
<strong>List item title</strong>
|
34
|
-
<p>Lorem ipsum dolor sit amet.</p>
|
35
|
-
</div>
|
36
|
-
</li>
|
37
|
-
|
38
|
-
<li class="list-group-item">
|
39
|
-
<%= image_tag 'avatar5.jpg', class: 'person-avatar img-circle media-object pull-left' %>
|
40
|
-
<div class="media-body">
|
41
|
-
<strong>List item title</strong>
|
42
|
-
<p>Lorem ipsum dolor sit amet.</p>
|
43
|
-
</div>
|
44
|
-
</li>
|
45
|
-
|
46
|
-
<li class="list-group-item">
|
47
|
-
<%= image_tag 'avatar6.jpg', class: 'person-avatar img-circle media-object pull-left' %>
|
48
|
-
<div class="media-body">
|
49
|
-
<strong>List item title</strong>
|
50
|
-
<p>Lorem ipsum dolor sit amet.</p>
|
51
|
-
</div>
|
52
|
-
</li>
|
53
|
-
</ul>
|
@@ -1,9 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
begin
|
3
|
-
load File.expand_path('../spring', __FILE__)
|
4
|
-
rescue LoadError => e
|
5
|
-
raise unless e.message.include?('spring')
|
6
|
-
end
|
7
|
-
APP_PATH = File.expand_path('../config/application', __dir__)
|
8
|
-
require_relative '../config/boot'
|
9
|
-
require 'rails/commands'
|
@@ -1,34 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'pathname'
|
3
|
-
require 'fileutils'
|
4
|
-
include FileUtils
|
5
|
-
|
6
|
-
# path to your application root.
|
7
|
-
APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
|
8
|
-
|
9
|
-
def system!(*args)
|
10
|
-
system(*args) || abort("\n== Command #{args} failed ==")
|
11
|
-
end
|
12
|
-
|
13
|
-
chdir APP_ROOT do
|
14
|
-
# This script is a starting point to setup your application.
|
15
|
-
# Add necessary setup steps to this file.
|
16
|
-
|
17
|
-
puts '== Installing dependencies =='
|
18
|
-
system! 'gem install bundler --conservative'
|
19
|
-
system('bundle check') || system!('bundle install')
|
20
|
-
|
21
|
-
# puts "\n== Copying sample files =="
|
22
|
-
# unless File.exist?('config/database.yml')
|
23
|
-
# cp 'config/database.yml.sample', 'config/database.yml'
|
24
|
-
# end
|
25
|
-
|
26
|
-
puts "\n== Preparing database =="
|
27
|
-
system! 'bin/rails db:setup'
|
28
|
-
|
29
|
-
puts "\n== Removing old logs and tempfiles =="
|
30
|
-
system! 'bin/rails log:clear tmp:clear'
|
31
|
-
|
32
|
-
puts "\n== Restarting application server =="
|
33
|
-
system! 'bin/rails restart'
|
34
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
# This file loads spring without using Bundler, in order to be fast.
|
4
|
-
# It gets overwritten when you run the `spring binstub` command.
|
5
|
-
|
6
|
-
unless defined?(Spring)
|
7
|
-
require 'rubygems'
|
8
|
-
require 'bundler'
|
9
|
-
|
10
|
-
lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read)
|
11
|
-
if spring = lockfile.specs.detect { |spec| spec.name == "spring" }
|
12
|
-
Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path
|
13
|
-
gem 'spring', spring.version
|
14
|
-
require 'spring/binstub'
|
15
|
-
end
|
16
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'pathname'
|
3
|
-
require 'fileutils'
|
4
|
-
include FileUtils
|
5
|
-
|
6
|
-
# path to your application root.
|
7
|
-
APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
|
8
|
-
|
9
|
-
def system!(*args)
|
10
|
-
system(*args) || abort("\n== Command #{args} failed ==")
|
11
|
-
end
|
12
|
-
|
13
|
-
chdir APP_ROOT do
|
14
|
-
# This script is a way to update your development environment automatically.
|
15
|
-
# Add necessary update steps to this file.
|
16
|
-
|
17
|
-
puts '== Installing dependencies =='
|
18
|
-
system! 'gem install bundler --conservative'
|
19
|
-
system('bundle check') || system!('bundle install')
|
20
|
-
|
21
|
-
puts "\n== Updating database =="
|
22
|
-
system! 'bin/rails db:migrate'
|
23
|
-
|
24
|
-
puts "\n== Removing old logs and tempfiles =="
|
25
|
-
system! 'bin/rails log:clear tmp:clear'
|
26
|
-
|
27
|
-
puts "\n== Restarting application server =="
|
28
|
-
system! 'bin/rails restart'
|
29
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require_relative 'boot'
|
2
|
-
|
3
|
-
require 'rails/all'
|
4
|
-
|
5
|
-
# Require the gems listed in Gemfile, including any gems
|
6
|
-
# you've limited to :test, :development, or :production.
|
7
|
-
Bundler.require(*Rails.groups)
|
8
|
-
|
9
|
-
module Cable
|
10
|
-
class Application < Rails::Application
|
11
|
-
# Settings in config/environments/* take precedence over those specified here.
|
12
|
-
# Application configuration should go into files in config/initializers
|
13
|
-
# -- all .rb files in that directory are automatically loaded.
|
14
|
-
config.active_job.queue_adapter = :sidekiq
|
15
|
-
end
|
16
|
-
end
|