veritrans 2.3.0 → 2.4.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.
Files changed (275) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/.idea/.gitignore +8 -0
  4. data/.rubocop.yml +1 -1
  5. data/.travis.yml +2 -1
  6. data/CHANGELOG.md +13 -0
  7. data/Gemfile +2 -11
  8. data/Gemfile.lock +116 -145
  9. data/Maintaining.MD +8 -0
  10. data/README.md +247 -278
  11. data/api_reference.md +482 -173
  12. data/example/coreapi/core_api_credit_card_example.rb +66 -0
  13. data/example/coreapi/readme.md +4 -0
  14. data/example/sinatra/Gemfile +7 -0
  15. data/example/sinatra/README.md +4 -6
  16. data/example/sinatra/index.erb +180 -192
  17. data/example/sinatra/response.erb +1 -40
  18. data/example/sinatra/snap.erb +33 -0
  19. data/example/sinatra/snap_redirect.erb +10 -0
  20. data/example/sinatra/webapp.rb +113 -0
  21. data/example/snap/readme.md +4 -0
  22. data/example/snap/snap_example.rb +39 -0
  23. data/lib/test/all.rb +1 -0
  24. data/lib/test/api_test.rb +319 -0
  25. data/lib/test/config_test.rb +26 -0
  26. data/lib/test/gopay_tokenization_test.rb +80 -0
  27. data/lib/test/snap_test.rb +79 -0
  28. data/lib/test/subscription_test.rb +116 -0
  29. data/lib/test/transaction_test.rb +160 -0
  30. data/lib/veritrans/api.rb +105 -8
  31. data/lib/veritrans/client.rb +40 -7
  32. data/lib/veritrans/config.rb +26 -3
  33. data/lib/veritrans/midtrans_error.rb +15 -0
  34. data/lib/veritrans/version.rb +1 -1
  35. data/lib/veritrans.rb +5 -6
  36. data/veritrans.gemspec +1 -2
  37. metadata +25 -248
  38. data/.rspec +0 -2
  39. data/Procfile +0 -1
  40. data/Rakefile +0 -16
  41. data/bin/midtrans +0 -3
  42. data/bin/veritrans +0 -68
  43. data/example/rails/cable/Gemfile +0 -48
  44. data/example/rails/cable/Gemfile.lock +0 -184
  45. data/example/rails/cable/README.md +0 -29
  46. data/example/rails/cable/Rakefile +0 -6
  47. data/example/rails/cable/app/assets/config/manifest.js +0 -3
  48. data/example/rails/cable/app/assets/images/.keep +0 -0
  49. data/example/rails/cable/app/assets/javascripts/application.js +0 -15
  50. data/example/rails/cable/app/assets/javascripts/cable.js +0 -13
  51. data/example/rails/cable/app/assets/javascripts/channels/.keep +0 -0
  52. data/example/rails/cable/app/assets/javascripts/chats.js +0 -39
  53. data/example/rails/cable/app/assets/javascripts/rooms.js +0 -55
  54. data/example/rails/cable/app/assets/stylesheets/application.css +0 -16
  55. data/example/rails/cable/app/assets/stylesheets/chatbox.scss +0 -31
  56. data/example/rails/cable/app/assets/stylesheets/peoplebox.scss +0 -6
  57. data/example/rails/cable/app/channels/application_cable/channel.rb +0 -4
  58. data/example/rails/cable/app/channels/application_cable/connection.rb +0 -4
  59. data/example/rails/cable/app/channels/rooms_texting_channel.rb +0 -13
  60. data/example/rails/cable/app/controllers/application_controller.rb +0 -3
  61. data/example/rails/cable/app/controllers/chats_controller.rb +0 -18
  62. data/example/rails/cable/app/controllers/concerns/.keep +0 -0
  63. data/example/rails/cable/app/controllers/pays_controller.rb +0 -28
  64. data/example/rails/cable/app/controllers/rooms_controller.rb +0 -4
  65. data/example/rails/cable/app/helpers/application_helper.rb +0 -2
  66. data/example/rails/cable/app/helpers/chats_helper.rb +0 -2
  67. data/example/rails/cable/app/helpers/rooms_helper.rb +0 -5
  68. data/example/rails/cable/app/jobs/application_job.rb +0 -2
  69. data/example/rails/cable/app/jobs/chat_broadcaster_job.rb +0 -15
  70. data/example/rails/cable/app/mailers/application_mailer.rb +0 -4
  71. data/example/rails/cable/app/models/application_record.rb +0 -3
  72. data/example/rails/cable/app/models/chat.rb +0 -41
  73. data/example/rails/cable/app/models/concerns/.keep +0 -0
  74. data/example/rails/cable/app/models/order.rb +0 -2
  75. data/example/rails/cable/app/models/user.rb +0 -2
  76. data/example/rails/cable/app/views/chats/_chat.html.erb +0 -18
  77. data/example/rails/cable/app/views/layouts/application.html.erb +0 -19
  78. data/example/rails/cable/app/views/layouts/mailer.html.erb +0 -13
  79. data/example/rails/cable/app/views/layouts/mailer.text.erb +0 -1
  80. data/example/rails/cable/app/views/rooms/_chatbox.html.erb +0 -13
  81. data/example/rails/cable/app/views/rooms/_online_people.html.erb +0 -53
  82. data/example/rails/cable/app/views/rooms/index.html.erb +0 -9
  83. data/example/rails/cable/bin/bundle +0 -3
  84. data/example/rails/cable/bin/rails +0 -9
  85. data/example/rails/cable/bin/rake +0 -9
  86. data/example/rails/cable/bin/setup +0 -34
  87. data/example/rails/cable/bin/spring +0 -16
  88. data/example/rails/cable/bin/update +0 -29
  89. data/example/rails/cable/config/application.rb +0 -16
  90. data/example/rails/cable/config/boot.rb +0 -3
  91. data/example/rails/cable/config/cable.yml +0 -9
  92. data/example/rails/cable/config/database.yml +0 -20
  93. data/example/rails/cable/config/environment.rb +0 -5
  94. data/example/rails/cable/config/environments/development.rb +0 -57
  95. data/example/rails/cable/config/environments/production.rb +0 -86
  96. data/example/rails/cable/config/environments/test.rb +0 -42
  97. data/example/rails/cable/config/initializers/application_controller_renderer.rb +0 -6
  98. data/example/rails/cable/config/initializers/assets.rb +0 -11
  99. data/example/rails/cable/config/initializers/backtrace_silencers.rb +0 -7
  100. data/example/rails/cable/config/initializers/cookies_serializer.rb +0 -5
  101. data/example/rails/cable/config/initializers/filter_parameter_logging.rb +0 -4
  102. data/example/rails/cable/config/initializers/inflections.rb +0 -16
  103. data/example/rails/cable/config/initializers/mime_types.rb +0 -4
  104. data/example/rails/cable/config/initializers/new_framework_defaults.rb +0 -24
  105. data/example/rails/cable/config/initializers/session_store.rb +0 -3
  106. data/example/rails/cable/config/initializers/sidekiq.rb +0 -2
  107. data/example/rails/cable/config/initializers/veritrans.rb +0 -46
  108. data/example/rails/cable/config/initializers/wrap_parameters.rb +0 -14
  109. data/example/rails/cable/config/locales/en.yml +0 -23
  110. data/example/rails/cable/config/puma.rb +0 -47
  111. data/example/rails/cable/config/routes.rb +0 -18
  112. data/example/rails/cable/config/secrets.yml +0 -22
  113. data/example/rails/cable/config/spring.rb +0 -6
  114. data/example/rails/cable/config/veritrans.yml +0 -13
  115. data/example/rails/cable/config.ru +0 -5
  116. data/example/rails/cable/db/development.sqlite3 +0 -0
  117. data/example/rails/cable/db/migrate/20161215070044_create_chats.rb +0 -10
  118. data/example/rails/cable/db/migrate/20161215072021_create_users.rb +0 -10
  119. data/example/rails/cable/db/migrate/20161219110219_create_orders.rb +0 -11
  120. data/example/rails/cable/db/schema.rb +0 -37
  121. data/example/rails/cable/db/seeds.rb +0 -41
  122. data/example/rails/cable/db/test.sqlite3 +0 -0
  123. data/example/rails/cable/lib/assets/.keep +0 -0
  124. data/example/rails/cable/lib/tasks/.keep +0 -0
  125. data/example/rails/cable/log/.keep +0 -0
  126. data/example/rails/cable/public/404.html +0 -67
  127. data/example/rails/cable/public/422.html +0 -67
  128. data/example/rails/cable/public/500.html +0 -66
  129. data/example/rails/cable/public/apple-touch-icon-precomposed.png +0 -0
  130. data/example/rails/cable/public/apple-touch-icon.png +0 -0
  131. data/example/rails/cable/public/favicon.ico +0 -0
  132. data/example/rails/cable/public/images/avatar1.jpg +0 -0
  133. data/example/rails/cable/public/images/avatar2.jpg +0 -0
  134. data/example/rails/cable/public/images/avatar3.jpg +0 -0
  135. data/example/rails/cable/public/images/avatar4.jpg +0 -0
  136. data/example/rails/cable/public/images/avatar5.jpg +0 -0
  137. data/example/rails/cable/public/images/avatar6.jpg +0 -0
  138. data/example/rails/cable/public/robots.txt +0 -5
  139. data/example/rails/cable/vendor/assets/javascripts/.keep +0 -0
  140. data/example/rails/cable/vendor/assets/stylesheets/.keep +0 -0
  141. data/example/rails/cable/vendor/assets/stylesheets/photon.css +0 -2333
  142. data/example/rails/simplepay/Gemfile +0 -54
  143. data/example/rails/simplepay/Gemfile.lock +0 -178
  144. data/example/rails/simplepay/README.md +0 -30
  145. data/example/rails/simplepay/Rakefile +0 -6
  146. data/example/rails/simplepay/app/assets/config/manifest.js +0 -3
  147. data/example/rails/simplepay/app/assets/images/.keep +0 -0
  148. data/example/rails/simplepay/app/assets/javascripts/application.js +0 -16
  149. data/example/rails/simplepay/app/assets/javascripts/cable.js +0 -13
  150. data/example/rails/simplepay/app/assets/javascripts/channels/.keep +0 -0
  151. data/example/rails/simplepay/app/assets/javascripts/pay.js +0 -18
  152. data/example/rails/simplepay/app/assets/stylesheets/application.css +0 -15
  153. data/example/rails/simplepay/app/assets/stylesheets/style.css +0 -254
  154. data/example/rails/simplepay/app/channels/application_cable/channel.rb +0 -4
  155. data/example/rails/simplepay/app/channels/application_cable/connection.rb +0 -4
  156. data/example/rails/simplepay/app/controllers/application_controller.rb +0 -3
  157. data/example/rails/simplepay/app/controllers/concerns/.keep +0 -0
  158. data/example/rails/simplepay/app/controllers/home_controller.rb +0 -16
  159. data/example/rails/simplepay/app/controllers/pay_controller.rb +0 -10
  160. data/example/rails/simplepay/app/helpers/application_helper.rb +0 -2
  161. data/example/rails/simplepay/app/helpers/pay_helper.rb +0 -2
  162. data/example/rails/simplepay/app/jobs/application_job.rb +0 -2
  163. data/example/rails/simplepay/app/mailers/application_mailer.rb +0 -4
  164. data/example/rails/simplepay/app/models/application_record.rb +0 -3
  165. data/example/rails/simplepay/app/models/concerns/.keep +0 -0
  166. data/example/rails/simplepay/app/models/order.rb +0 -2
  167. data/example/rails/simplepay/app/views/home/index.html.erb +0 -19
  168. data/example/rails/simplepay/app/views/layouts/application.html.erb +0 -15
  169. data/example/rails/simplepay/app/views/layouts/mailer.html.erb +0 -13
  170. data/example/rails/simplepay/app/views/layouts/mailer.text.erb +0 -1
  171. data/example/rails/simplepay/app/views/pay/notify.html.erb +0 -2
  172. data/example/rails/simplepay/bin/bundle +0 -3
  173. data/example/rails/simplepay/bin/rails +0 -9
  174. data/example/rails/simplepay/bin/rake +0 -9
  175. data/example/rails/simplepay/bin/setup +0 -34
  176. data/example/rails/simplepay/bin/spring +0 -16
  177. data/example/rails/simplepay/bin/update +0 -29
  178. data/example/rails/simplepay/config/application.rb +0 -15
  179. data/example/rails/simplepay/config/boot.rb +0 -3
  180. data/example/rails/simplepay/config/cable.yml +0 -9
  181. data/example/rails/simplepay/config/database.yml +0 -25
  182. data/example/rails/simplepay/config/environment.rb +0 -5
  183. data/example/rails/simplepay/config/environments/development.rb +0 -57
  184. data/example/rails/simplepay/config/environments/production.rb +0 -86
  185. data/example/rails/simplepay/config/environments/test.rb +0 -42
  186. data/example/rails/simplepay/config/initializers/application_controller_renderer.rb +0 -6
  187. data/example/rails/simplepay/config/initializers/assets.rb +0 -11
  188. data/example/rails/simplepay/config/initializers/backtrace_silencers.rb +0 -7
  189. data/example/rails/simplepay/config/initializers/cookies_serializer.rb +0 -5
  190. data/example/rails/simplepay/config/initializers/filter_parameter_logging.rb +0 -4
  191. data/example/rails/simplepay/config/initializers/inflections.rb +0 -16
  192. data/example/rails/simplepay/config/initializers/mime_types.rb +0 -4
  193. data/example/rails/simplepay/config/initializers/new_framework_defaults.rb +0 -24
  194. data/example/rails/simplepay/config/initializers/session_store.rb +0 -3
  195. data/example/rails/simplepay/config/initializers/veritrans.rb +0 -46
  196. data/example/rails/simplepay/config/initializers/wrap_parameters.rb +0 -14
  197. data/example/rails/simplepay/config/locales/en.yml +0 -23
  198. data/example/rails/simplepay/config/puma.rb +0 -47
  199. data/example/rails/simplepay/config/routes.rb +0 -5
  200. data/example/rails/simplepay/config/secrets.yml +0 -22
  201. data/example/rails/simplepay/config/spring.rb +0 -6
  202. data/example/rails/simplepay/config/veritrans.yml +0 -18
  203. data/example/rails/simplepay/config.ru +0 -5
  204. data/example/rails/simplepay/db/development.sqlite3 +0 -0
  205. data/example/rails/simplepay/db/migrate/20161221090855_create_orders.rb +0 -10
  206. data/example/rails/simplepay/db/schema.rb +0 -22
  207. data/example/rails/simplepay/db/seeds.rb +0 -7
  208. data/example/rails/simplepay/db/test.sqlite3 +0 -0
  209. data/example/rails/simplepay/lib/assets/.keep +0 -0
  210. data/example/rails/simplepay/lib/tasks/.keep +0 -0
  211. data/example/rails/simplepay/log/.keep +0 -0
  212. data/example/rails/simplepay/public/404.html +0 -67
  213. data/example/rails/simplepay/public/422.html +0 -67
  214. data/example/rails/simplepay/public/500.html +0 -66
  215. data/example/rails/simplepay/public/apple-touch-icon-precomposed.png +0 -0
  216. data/example/rails/simplepay/public/apple-touch-icon.png +0 -0
  217. data/example/rails/simplepay/public/favicon.ico +0 -0
  218. data/example/rails/simplepay/public/robots.txt +0 -5
  219. data/example/rails/simplepay/vendor/assets/javascripts/.keep +0 -0
  220. data/example/rails/simplepay/vendor/assets/stylesheets/.keep +0 -0
  221. data/example/sinatra/config.ru +0 -9
  222. data/example/sinatra/localization.erb +0 -249
  223. data/example/sinatra/points.erb +0 -188
  224. data/example/sinatra/recurring.erb +0 -201
  225. data/example/sinatra/sinatra.rb +0 -194
  226. data/example/sinatra/style.css +0 -137
  227. data/example/sinatra/veritrans.yml +0 -11
  228. data/example/sinatra/widget.erb +0 -63
  229. data/lib/generators/templates/assets/credit_card_form.js +0 -57
  230. data/lib/generators/templates/payments_controller.rb +0 -85
  231. data/lib/generators/templates/veritrans.rb +0 -46
  232. data/lib/generators/templates/veritrans.yml +0 -18
  233. data/lib/generators/templates/views/_credit_card_form.erb +0 -42
  234. data/lib/generators/templates/views/_veritrans_include.erb +0 -10
  235. data/lib/generators/templates/views/payments/create.erb +0 -15
  236. data/lib/generators/templates/views/payments/new.erb +0 -6
  237. data/lib/generators/veritrans/install_generator.rb +0 -32
  238. data/lib/generators/veritrans/payment_form_generator.rb +0 -45
  239. data/lib/veritrans/cli.rb +0 -161
  240. data/lib/veritrans/testing.rb +0 -156
  241. data/spec/cli_spec.rb +0 -83
  242. data/spec/configs/real_key.yml +0 -4
  243. data/spec/configs/veritrans.yml +0 -7
  244. data/spec/configs/veritrans_flat.yml +0 -2
  245. data/spec/configs/veritrans_with_erb.yml +0 -2
  246. data/spec/fixtures/approve_failed.yml +0 -48
  247. data/spec/fixtures/cancel_failed.yml +0 -48
  248. data/spec/fixtures/cancel_success.yml +0 -126
  249. data/spec/fixtures/capture_failed.yml +0 -48
  250. data/spec/fixtures/charge.yml +0 -50
  251. data/spec/fixtures/charge_direct.yml +0 -56
  252. data/spec/fixtures/charge_vtweb.yml +0 -50
  253. data/spec/fixtures/cli_test_1111-not-exists.yml +0 -45
  254. data/spec/fixtures/cli_test_not_exists.yml +0 -45
  255. data/spec/fixtures/cli_test_real_txn.yml +0 -55
  256. data/spec/fixtures/cli_test_unauthorized.yml +0 -47
  257. data/spec/fixtures/deny_failed.yml +0 -144
  258. data/spec/fixtures/events_test_real_txn.yml +0 -55
  259. data/spec/fixtures/expire_failed.yml +0 -50
  260. data/spec/fixtures/expire_success.yml +0 -56
  261. data/spec/fixtures/midtrans_status.yml +0 -117
  262. data/spec/fixtures/refund_failed.yml +0 -54
  263. data/spec/fixtures/status_fail.yml +0 -48
  264. data/spec/fixtures/status_success.yml +0 -128
  265. data/spec/fixtures/test_token.yml +0 -49
  266. data/spec/midtrans_rename_spec.rb +0 -27
  267. data/spec/rails_plugin_spec.rb +0 -317
  268. data/spec/spec_helper.rb +0 -71
  269. data/spec/veritrans_client_spec.rb +0 -235
  270. data/spec/veritrans_config_spec.rb +0 -70
  271. data/spec/veritrans_events_spec.rb +0 -72
  272. data/spec/veritrans_logger_spec.rb +0 -46
  273. data/spec/veritrans_snap_spec.rb +0 -54
  274. data/spec/veritrans_testing_spec.rb +0 -184
  275. data/testing_webhooks.md +0 -78
@@ -1,137 +0,0 @@
1
- body {
2
- max-width: 900px;
3
- margin: 0 auto;
4
- font-size: 16px;
5
- background: white;
6
- }
7
- a {
8
- color: #00E;
9
- }
10
- a:hover, a:focus {
11
- color: #00E;
12
- }
13
-
14
- header {
15
- background: #F5FAFC;
16
- padding: 3px 5px;
17
- border-bottom: 1px solid #ccc;
18
- overflow: hidden;
19
- }
20
-
21
- header .github {
22
- float: right;
23
- margin: 18px 0;
24
- }
25
-
26
- header h3 {
27
- float: left;
28
- margin: 18px 0;
29
- }
30
-
31
- section {
32
- padding: 1em 0;
33
- }
34
-
35
- section + section {
36
- border-top: 1px solid #ccc;
37
- }
38
-
39
- label {
40
- display: inline-block;
41
- min-width: 100px;
42
- vertical-align: top;
43
- }
44
- .card-numbers {
45
- margin-left: 100px;
46
- }
47
- .card-numbers a {
48
- text-decoration: none;
49
- border-bottom: 1px dotted #88f;
50
- margin-right: 10px;
51
- cursor: pointer;
52
- }
53
- .card-numbers a[href] {
54
- text-decoration: underline;
55
- border: none;
56
- }
57
-
58
- fieldset {
59
- margin: 25px 0 12px;
60
- }
61
-
62
- .white-popup {
63
- position: relative;
64
- background: #FFF;
65
- padding: 20px;
66
- width: auto;
67
- max-width: 600px;
68
- margin: 20px auto;
69
- }
70
-
71
- .white-popup pre code {
72
- white-space: pre-wrap;
73
- }
74
-
75
- #vtweb_form label {
76
- min-width: 180px;
77
- }
78
-
79
- #vtweb_form ul {
80
- display: inline-block;
81
- vertical-align: top;
82
- margin-top: 0;
83
- padding-left: 0px;
84
- }
85
-
86
- #vtweb_form ul li {
87
- list-style-type: none;
88
- margin-bottom: 1px;
89
- font-size: 15px;
90
- }
91
-
92
- #vtweb_form small {
93
- margin-left: 184px;
94
- }
95
-
96
- .recurring-page .cards {
97
- border: 1px dashed #acf;
98
- padding: 10px;
99
- }
100
-
101
- .recurring-page .cards ul {
102
- padding-left: 0;
103
- margin-bottom: 3px;
104
- }
105
-
106
- .recurring-page .cards ul li {
107
- list-style-type: none;
108
- display: block;
109
- background: #f5f5f5;
110
- padding: 7px 9px;
111
- box-shadow: inset 0px 0px 2px rgba(0, 0, 64, 0.25);
112
- }
113
-
114
- .recurring-page .cards ul li + li {
115
- margin-top: 10px;
116
- }
117
-
118
- .recurring-page .cards ul li code {
119
- margin: 0 18px 0 4px;
120
- }
121
- .recurring-page .cards ul li i {
122
- margin: 0 35px 0 4px;
123
- font-style: normal;
124
- }
125
-
126
- .recurring-page .cards ul li a {
127
- margin-right: 10px;
128
- }
129
-
130
- .recurring-page .cards ul li small {
131
- display: block;
132
- margin-top: 7px;
133
- color: #666;
134
- font-family: monospace;
135
- font-size: 10px;
136
- }
137
-
@@ -1,11 +0,0 @@
1
- development:
2
- # merchant_id: M000937
3
-
4
- client_key: VT-client-NArmatJZqzsmTmzR
5
- server_key: VT-server-9Htb-RxXkg7-7hznSCCjxvoY
6
-
7
- # For production use
8
- # api_host: https://api.midtrans.com
9
-
10
- # For sandbox use
11
- # api_host: https://api.sandbox.midtrans.com
@@ -1,63 +0,0 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <title>veritrans-ruby demo</title>
5
- <link rel="icon" type="image/x-icon" href="https://account.midtrans.com/favicon.ico" />
6
- <link rel="stylesheet" href="/style.css">
7
- </head>
8
- <body>
9
-
10
- <header>
11
- <h3>
12
- <a href="/">Midtrans sinatra app</a>
13
- </h3>
14
- <a href="https://github.com/veritrans/veritrans-ruby" class="github">Source Code</a>
15
- </header>
16
-
17
- <section>
18
- <h4>Midtrans SNAP example</h4>
19
-
20
- <section>
21
- <p>
22
- <label>Snap Token</label>
23
- <input type="text" id="token" value="<%= @token %>" readonly size="50">
24
- </p>
25
- <button id="snap_pay">Pay Now</button>
26
- </section>
27
-
28
- <p>
29
- To complete payment in sandbox mode, plese use <a href="https://docs.midtrans.com/en/api/test_credentials.html" target="_blank">testing credentials</a>.<br/>
30
- For more details see <a href="https://snap-docs.midtrans.com/">SNAP Documentation</a>
31
- <p>
32
-
33
- <code>
34
- <pre class="callback-result"></pre>
35
- </code>
36
- </section>
37
-
38
- <script src="https://app.sandbox.midtrans.com/snap/snap.js"></script>
39
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
40
-
41
- <script type="text/javascript">
42
- $('#snap_pay').on('click', function (e) {
43
- e.preventDefault();
44
- snap.pay($('#token').val() + "?locale=en", {
45
- onSuccess: function (res) {
46
- console.log('onSuccess', res);
47
- $('.callback-result').text("SNAP Callback parameters:\n" + JSON.stringify(res, null, 4));
48
- if (confirm(res.status_message + "\nRedirect to confirm page?")) {
49
- window.location = "/widget/confirm/" + res.transaction_id;
50
- }
51
- },
52
- onPending: function (res) {
53
- console.log('onPending', res);
54
- },
55
- onError: function (res) {
56
- console.log('onError', res);
57
- }
58
- });
59
- });
60
- </script>
61
-
62
- </body>
63
- </html>
@@ -1,57 +0,0 @@
1
- // Veritrans is defined in https://api.midtrans.com/v2/assets/js/midtrans.min.js
2
- // and it has no JS dependecies, but this example uses jquery for simplicity
3
-
4
- //= require jquery
5
-
6
- $(document).ready(function () {
7
-
8
- function VT_createTokenData() {
9
- return {
10
- // Optional params:
11
- // secure: true
12
- // bank: 'MANDIRI'
13
- // gross_amount: 1000
14
-
15
- card_number: $('#credit_card_number').val(),
16
- card_cvv: $('#credit_card_cvv').val(),
17
- card_exp_month: $('#credit_card_expire').val().match(/(\d+) \//)[1],
18
- card_exp_year: '20' + $('#credit_card_expire').val().match(/\/ (\d+)/)[1],
19
- gross_amount: $('#payment_amount').val(),
20
- secure: $('#payment_credit_card_secure')[0].checked
21
- };
22
- }
23
-
24
- $('.veritrans-payment-form').on('submit', function (event) {
25
- event.preventDefault();
26
-
27
- var form = this;
28
- var button = $(form).find('input[type=submit]:last');
29
- var buttonValBefore = button.val();
30
- button.val("Processing ...");
31
- button.attr('disabled', true); // prevent double submit
32
-
33
- Veritrans.token(VT_createTokenData, function (data) {
34
- //console.log('Get token response:');
35
- //console.log(JSON.stringify(VT_createTokenData()));
36
- //console.log(JSON.stringify(data));
37
-
38
- // if we get redirect_url then it's 3d-secure transaction
39
- // so we need to open that page
40
- // this callback function will be called again after user confirm 3d-secure
41
- // you can also redirect on server side
42
-
43
- if (data.redirect_url) {
44
- // it works nice with lightbox js libraries
45
- $('#3d-secure-iframe').attr('src', data.redirect_url).show();
46
- // if no redirect_url and we have token_id then just make charge request
47
- } else if (data.token_id) {
48
- $('#payment_token_id').val(data.token_id);
49
- form.submit();
50
- // if no redirect_url and no token_id, then it should be error
51
- } else {
52
- alert(data.validation_messages ? data.validation_messages.join("\n") : data.status_message);
53
- button.removeAttr('disabled').val(buttonValBefore);
54
- }
55
- });
56
- });
57
- });
@@ -1,85 +0,0 @@
1
- class PaymentsController < ApplicationController # :nodoc:
2
- skip_before_action :verify_authenticity_token, only: [:receive_webhook]
3
-
4
- def new
5
- @payment = make_payment
6
- end
7
-
8
- # Creating example payment
9
- def create
10
- @payment = make_payment
11
-
12
- if params[:type] == "vtweb"
13
- @result = Veritrans.charge(
14
- payment_type: "VTWEB",
15
- transaction_details: {
16
- order_id: @payment.order_id,
17
- gross_amount: @payment.amount
18
- }
19
- )
20
- redirect_to @result.redirect_url
21
- return
22
- end
23
-
24
- @result = Veritrans.charge(
25
- payment_type: "credit_card",
26
- credit_card: { token_id: params[:payment][:token_id] },
27
- transaction_details: {
28
- order_id: @payment.order_id,
29
- gross_amount: params[:payment][:amount].presence || @payment.amount
30
- }
31
- )
32
- end
33
-
34
- # Processing HTTP Notification from Veritrans
35
- # POST request with JSON-encoded body
36
- # If you using Veritrans::Events then you don't need this
37
- def receive_webhook
38
- post_body = request.body.read
39
-
40
- Veritrans.file_logger.info("Callback for order: " +
41
- "#{params[:order_id]} #{params[:transaction_status]}\n" +
42
- post_body + "\n"
43
- )
44
-
45
- verified_data = Veritrans.status(params["transaction_id"])
46
-
47
- if verified_data.status_code != 404
48
- puts "--- Transaction callback ---"
49
- puts "Payment: #{verified_data.data[:order_id]}"
50
- puts "Payment type: #{verified_data.data[:payment_type]}"
51
- puts "Payment status: #{verified_data.data[:transaction_status]}"
52
- puts "Fraud status: #{verified_data.data[:fraud_status]}" if verified_data.data[:fraud_status]
53
- puts "Payment amount: #{verified_data.data[:gross_amount]}"
54
- puts "--- Transaction callback ---"
55
-
56
- render plain: "ok"
57
- else
58
- Veritrans.file_logger.info("Callback verification failed for order: " +
59
- "#{params[:order_id]} #{params[:transaction_status]}}\n" +
60
- verified_data.body + "\n"
61
- )
62
-
63
- render plain: "error", :status => :not_found
64
- end
65
-
66
- end
67
-
68
- # You should replace this with your own model
69
- private
70
- def make_payment
71
- @paymentKlass = Struct.new("Payment", :amount, :token_id, :order_id, :credit_card_secure) do
72
- extend ActiveModel::Naming
73
- include ActiveModel::Conversion
74
-
75
- def persisted?; false; end
76
-
77
- def self.name
78
- "Payment"
79
- end
80
- end
81
-
82
- @paymentKlass.new(100_000, '', "testing-#{rand.round(4)}-#{Time.now.to_i}", false)
83
- end
84
-
85
- end
@@ -1,46 +0,0 @@
1
- Veritrans.setup do
2
- config.load_config Rails.root.join("config/veritrans.yml"), Rails.env
3
-
4
- # Or set it manually...
5
- # config.server_key = ""
6
- # config.client_key = ""
7
- # config.api_host = ""
8
-
9
- # Veritrans::Events is rack application to handle http notifications from Veritrans
10
- # To enable it, add in config/routes.rb
11
- #
12
- # mount Veritrans::Events.new => '/vt_events'
13
- #
14
- # All possible events:
15
- #
16
- # 'payment.success' == ['authorize', 'capture', 'settlement']
17
- # 'payment.failed' == ['deny', 'cancel', 'expire']
18
- # 'payment.challenge' # when payment.fraud_status == 'challenge'
19
- #
20
- # 'payment.authorize'
21
- # 'payment.capture'
22
- # 'payment.settlement'
23
- # 'payment.deny'
24
- # 'payment.cancel'
25
- # 'payment.expire'
26
-
27
- # events.subscribe 'payment.success' do |payment|
28
- # payment is instance of Veritrans::Result
29
- # puts "Payment #{payment.data[:order_id]} is successful"
30
- # end
31
- #
32
- # events.subscribe 'payment.failed' do |payment|
33
- # puts "Payment #{payment.data[:order_id]} is failed"
34
- # end
35
- #
36
- # events.subscribe 'payment.challenge' do |payment|
37
- # puts "Payment #{payment.data[:order_id]} chellenged by fraud system"
38
- # payment.mark_challenge!
39
- # end
40
- #
41
- # events.subscribe /.+/ do |payment, event_name|
42
- # puts "Payment #{payment.data[:order_id]} has status #{payment.data[:transaction_status]}"
43
- # p payment
44
- # end
45
-
46
- end
@@ -1,18 +0,0 @@
1
- development:
2
- # Register in sandbox veritrans and get your keys here:
3
- # https://dashboard.sandbox.midtrans.com/settings/config_info
4
- client_key: ""
5
- server_key: ""
6
- api_host: https://api.sandbox.midtrans.com
7
-
8
- production:
9
- # Register and get your keys here:
10
- # https://dashboard.midtrans.com/settings/config_info
11
- client_key: <%= ENV['VERITRANS_CLIENT_KEY'] %>
12
- server_key: <%= ENV['VERITRANS_SERVER_KEY'] %>
13
- api_host: https://api.midtrans.com
14
-
15
- staging:
16
- client_key: <%= ENV['VT_SANDBOX_CLIENT_KEY'] %>
17
- server_key: <%= ENV['VT_SANDBOX_SERVER_KEY'] %>
18
- api_host: https://api.sandbox.midtrans.com
@@ -1,42 +0,0 @@
1
- <%= form_for @payment, html: {class: "veritrans-payment-form"} do |f| %>
2
- <%= f.hidden_field :token_id %>
3
- <input type="submit" style="display: none">
4
- <p>
5
- <%= f.label :amount %>
6
- <%= f.number_field :amount %>
7
- </p>
8
-
9
- <p>
10
- <%= label_tag :credit_card_number %>
11
- <%= text_field_tag :credit_card_number, '4811 1111 1111 1114', name: nil, size: 25 %>
12
- </p>
13
- <p>
14
- <button onclick="$('#credit_card_number').val('5810 1111 1111 1112'); return false">success MasterCard</button>
15
- <button onclick="$('#credit_card_number').val('4811 1111 1111 1114'); return false">success Visa</button>
16
- <button onclick="$('#credit_card_number').val('4511 1111 1111 1117'); return false">challenge</button>
17
- <button onclick="$('#credit_card_number').val('4611 1111 1111 1116'); return false">Deny by FDS</button>
18
- <button onclick="$('#credit_card_number').val('4911 1111 1111 1113'); return false">Deny by bank</button>
19
- <a href="https://docs.midtrans.com/en/reference/test.html" target="_blank">documentation</a>
20
- </p>
21
-
22
- <p>
23
- <%= label_tag :credit_card_cvv %>
24
- <%= text_field_tag :credit_card_cvv, '123', name: nil %>
25
- </p>
26
-
27
- <p>
28
- <%= label_tag :credit_card_expire %>
29
- <%= text_field_tag :credit_card_expire, '12 / 20', placeholder: "MM / YY", name: nil %>
30
- </p>
31
-
32
- <p>
33
- <%= f.label :credit_card_secure, "3D-secure" %>
34
- <%= f.check_box :credit_card_secure %>
35
- </p>
36
-
37
- <p>
38
- <%= f.submit "Pay via VT-Direct" %>
39
- </p>
40
- <% end %>
41
-
42
- <iframe id="3d-secure-iframe" style="display: none; width: 500px; height: 600px"></iframe>
@@ -1,10 +0,0 @@
1
- <%= javascript_include_tag "#{Veritrans.config.api_host}/v2/assets/js/midtrans.min.js" %>
2
-
3
- <script type="text/javascript">
4
- Veritrans.url = "<%= Veritrans.config.api_host %>/v2/token";
5
- Veritrans.client_key = "<%= Veritrans.config.client_key %>";
6
- </script>
7
-
8
- <% unless Veritrans.config.client_key.present? %>
9
- <h4 style="color: red">Please add client_key in config/veritrans.yml</h4>
10
- <% end %>
@@ -1,15 +0,0 @@
1
- <strong>
2
- <% if @result.success? %><span style="color: green"><% end %>
3
- <%= @result.status_message %>
4
- </span>
5
- </strong>
6
-
7
- <br>
8
-
9
- <code>
10
- <pre>
11
- <%= @result.response.body %>
12
- </pre>
13
- </code>
14
-
15
- <%= link_to "Go back", :new_payment %>
@@ -1,6 +0,0 @@
1
- <h3>New payment</h3>
2
-
3
- <%= link_to "Pay via VT-Web", payments_path(type: 'vtweb'), data: {method: 'post'} %>
4
-
5
- <%= render "shared/credit_card_form" %>
6
- <%= render "shared/veritrans_include" %>
@@ -1,32 +0,0 @@
1
- class Veritrans
2
- class InstallGenerator < ::Rails::Generators::Base # :nodoc:
3
- source_root File.expand_path("../../templates", __FILE__)
4
-
5
- desc %{
6
- Description:
7
- Copies Veritrans configuration file to your application's initializer directory.
8
- }
9
-
10
- desc "copy veritrans.yml"
11
- def copy_config_file
12
- copy_file "veritrans.yml", "config/veritrans.yml"
13
- end
14
-
15
- desc "copy initializer veritrans.rb"
16
- def copy_initializer_file
17
- copy_file "./veritrans.rb", "config/initializers/veritrans.rb"
18
-
19
- say_status "", %{
20
-
21
- We copy configs in your rails application
22
- Please edit:
23
-
24
- config/veritrans.yml
25
-
26
- }
27
-
28
-
29
- end
30
-
31
- end
32
- end
@@ -1,45 +0,0 @@
1
- class Veritrans
2
- class PaymentFormGenerator < ::Rails::Generators::Base # :nodoc:
3
- source_root File.expand_path("../../templates", __FILE__)
4
-
5
- desc %{
6
- Description:
7
- Copies Veritrans payment form example to your rails application.
8
- }
9
-
10
- def copy_shared_views
11
- copy_file "views/_veritrans_include.erb", "app/views/shared/_veritrans_include.erb"
12
- copy_file "views/_credit_card_form.erb", "app/views/shared/_credit_card_form.erb"
13
- end
14
-
15
- def copy_controller
16
- copy_file "payments_controller.rb", "app/controllers/payments_controller.rb"
17
-
18
- route "resources :payments do\n" +
19
- " collection do\n" +
20
- " post :receive_webhook\n" +
21
- " end\n" +
22
- " end"
23
-
24
- copy_file "views/payments/new.erb", "app/views/payments/new.erb"
25
- copy_file "views/payments/create.erb", "app/views/payments/create.erb"
26
- end
27
-
28
- def append_javascript_file
29
- copy_file "assets/credit_card_form.js", "app/assets/javascripts/credit_card_form.js"
30
- insert_into_file "app/assets/javascripts/application.js", :after => %r{//= require +['"]?jquery['"]?$} do
31
- "\n//= require credit_card_form"
32
- end
33
-
34
- say_status "", %{
35
-
36
- Sample form installed in you app!
37
- It contains example for VT-Web and VT-Direct
38
-
39
- Now open http://localhost:3000/payments/new
40
-
41
- }
42
-
43
- end
44
- end
45
- end