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,72 +0,0 @@
1
- describe Veritrans do
2
- include ActiveSupport::Testing::Stream
3
-
4
- before do
5
- stub_const("CONFIG", {})
6
- Veritrans.logger = Logger.new(STDOUT)
7
- Veritrans.file_logger = Logger.new(STDOUT)
8
- Veritrans.setup do
9
- config.load_yml "./example/sinatra/veritrans.yml#development"
10
- end
11
- end
12
-
13
- after do
14
- if Veritrans::Events.listeners
15
- Veritrans::Events.listeners.clear
16
- end
17
- end
18
-
19
- JSON_RESPONSE = '{
20
- "status_code": "200",
21
- "status_message": "Success, transaction found",
22
- "transaction_id": "b1cbcc66-5608-4af1-a3ed-0f152f9ed871",
23
- "order_id": "testing-0.2703-1415600236",
24
- "payment_type": "credit_card",
25
- "transaction_time": "2014-11-10 13:17:33",
26
- "transaction_status": "settlement",
27
- "gross_amount": "30000.00",
28
- "masked_card": "481111-1114",
29
- "fraud_status": "accept",
30
- "approval_code": "1415600254322",
31
- "bank": "bni"
32
- }'
33
-
34
- DOUBLE_ENCODED_JSON_RESPONSE = JSON.dump(JSON_RESPONSE)
35
-
36
- def stub_vt_status_response
37
- stub_request(:any, /.*(veritrans|midtrans).*/).to_return(lambda {|request|
38
- {status: 200, body: JSON_RESPONSE}
39
- })
40
- end
41
-
42
- it "should work with single encoded json" do
43
- Veritrans::Events.subscribe('payment.success') do |payment|
44
- @payment = payment
45
- end
46
-
47
- stub_vt_status_response
48
-
49
- handler = Rack::MockRequest.new(Veritrans::Events.new)
50
- silence_stream(STDOUT) do
51
- handler.post("http://example.com/", input: JSON_RESPONSE)
52
- end
53
-
54
- @payment.order_id.should == "testing-0.2703-1415600236"
55
- end
56
-
57
- it "should work with double encoded json" do
58
- Veritrans::Events.subscribe('payment.success') do |payment|
59
- @payment = payment
60
- end
61
-
62
- stub_vt_status_response
63
-
64
- handler = Rack::MockRequest.new(Veritrans::Events.new)
65
- silence_stream(STDOUT) do
66
- handler.post("http://example.com/", input: DOUBLE_ENCODED_JSON_RESPONSE)
67
- end
68
-
69
- @payment.order_id.should == "testing-0.2703-1415600236"
70
- end
71
-
72
- end
@@ -1,46 +0,0 @@
1
- describe Veritrans do
2
-
3
- after do
4
- Veritrans.logger = nil
5
- Veritrans.file_logger = nil
6
- end
7
-
8
- it "should set logger" do
9
- Veritrans.logger = :nothing
10
- Veritrans.logger.should == :nothing
11
-
12
- Veritrans.file_logger = :nothing2
13
- Veritrans.file_logger.should == :nothing2
14
- end
15
-
16
- describe "widthout rails" do
17
- before do
18
- hide_const("Rails")
19
- end
20
-
21
- it "should log to stdout when there is no rails" do
22
- Veritrans.logger.instance_variable_get(:@logdev).dev.should == $stdout
23
- end
24
-
25
- it "should set file_logger" do
26
- Veritrans.file_logger.instance_variable_get(:@logdev).filename.should == "/dev/null"
27
- end
28
-
29
- end
30
-
31
- describe "width rails" do
32
- before do
33
- FileUtils.mkdir_p("/tmp/log")
34
- allow(Rails).to receive(:logger).and_return(Logger.new(STDERR))
35
- allow(Rails).to receive(:root).and_return(Pathname.new("/tmp"))
36
- end
37
-
38
- it "should use rails logger" do
39
- Veritrans.logger.should == Rails.logger
40
- end
41
-
42
- it "should set file_logger" do
43
- Veritrans.file_logger.instance_variable_get(:@logdev).filename.should == "/tmp/log/veritrans.log"
44
- end
45
- end
46
- end
@@ -1,54 +0,0 @@
1
- describe Veritrans::Config do
2
-
3
- before do
4
- hide_const("Rails")
5
- Veritrans.logger = Logger.new("/dev/null")
6
- Veritrans.setup do
7
- config.load_config "./spec/configs/real_key.yml"
8
- end
9
-
10
- VCR.configure do |c|
11
- c.allow_http_connections_when_no_cassette = true
12
- end
13
- end
14
-
15
- after do
16
- VCR.configure do |c|
17
- c.allow_http_connections_when_no_cassette = false
18
- end
19
- end
20
-
21
- def generate_order_id
22
- "testing-#{rand.round(4)}-#{Time.now.to_i}"
23
- end
24
-
25
- it "should create snap token" do
26
- response = Veritrans.create_snap_token(
27
- transaction_details: {
28
- order_id: generate_order_id,
29
- gross_amount: 30_000
30
- }
31
- )
32
-
33
- response.should be_a(Veritrans::SnapResult)
34
- response.success?.should be_truthy
35
- response.token.should be_present
36
- response.token.should == response.data[:token]
37
- response.inspect.should =~ /#<Veritrans::SnapResult:\d+ \^\^ status: 201 time: \d+ms \^\^ data: \{token: "[\da-f\-]+", redirect_url: ".+"\}>/
38
- end
39
-
40
- it "should create snap redirect_url" do
41
- response = Veritrans.create_snap_redirect_url(
42
- transaction_details: {
43
- order_id: generate_order_id,
44
- gross_amount: 30_000
45
- }
46
- )
47
-
48
- response.should be_a(Veritrans::SnapResult)
49
- response.success?.should be_truthy
50
- response.redirect_url.should be_present
51
- response.redirect_url.should == response.data[:redirect_url]
52
- response.inspect.should =~ /#<Veritrans::SnapResult:\d+ \^\^ status: 201 time: \d+ms \^\^ data: \{token: "[\da-f\-]+", redirect_url: ".+"\}>/
53
- end
54
- end
@@ -1,184 +0,0 @@
1
- describe Veritrans::Testing, skip: true do
2
-
3
- before do
4
- hide_const("Rails")
5
- #Veritrans.logger = Logger.new("/dev/null")
6
- Veritrans.setup do
7
- config.load_config "./spec/configs/real_key.yml"
8
- end
9
- end
10
-
11
- context "Peramata VA" do
12
- it "It should pay Peramata VA txn", vcr: false do
13
- txn_result = Veritrans.charge("bank_transfer",
14
- bank_transfer: {bank: "permata"},
15
- transaction_details: txn_details
16
- )
17
- txn_result.success?.should == true
18
- txn_result.status_message.should == "Success, PERMATA VA transaction is successful"
19
-
20
- result = Veritrans::Testing.pay_permata_va(txn_result.permata_va_number)
21
-
22
- result['status'].should == 'SUCCESS'
23
- assert_txn_status(txn_result.order_id, 'settlement')
24
- end
25
- end
26
-
27
- context "bca va" do
28
- it "should pay for BCA VA", vcr: false do
29
- txn_result = Veritrans.charge("bank_transfer",
30
- bank_transfer: {bank: "bca"},
31
- transaction_details: txn_details
32
- )
33
- va_number = txn_result.va_numbers[0]['va_number']
34
-
35
- result = Veritrans::Testing.pay_bca_va(va_number)
36
-
37
- result['status'].should == 'SUCCESS'
38
- assert_txn_status(txn_result.order_id, 'settlement')
39
- end
40
- end
41
-
42
- context "Mandiri Bill" do
43
- it "should pay for Mandiri Bill", vcr: false do
44
- txn_result = Veritrans.charge('echannel',
45
- echannel: {bill_info1: "Payment for", bill_info2: "Test txn"},
46
- transaction_details: txn_details,
47
- item_details: [ { id: 'a1', price: txn_details[:gross_amount], quantity: 1, name: 'Violin' } ]
48
- )
49
-
50
- result = Veritrans::Testing.pay_mandiri_bill(txn_result.bill_key)
51
- result['status'].should == 'SUCCESS'
52
- assert_txn_status(txn_result.order_id, 'settlement')
53
- end
54
- end
55
-
56
- context "klik bca" do
57
- it "should pay for klik bca", vcr: false do
58
- txn_result = Veritrans.charge("bca_klikbca",
59
- bca_klikbca: {user_id: 'testuser123', description: "Test txn"},
60
- transaction_details: txn_details
61
- )
62
-
63
- result = Veritrans::Testing.pay_klik_bca('1234000937', 'testuser123', txn_result.order_id)
64
-
65
- result['status'].should == 'SUCCESS'
66
- assert_txn_status(txn_result.order_id, 'settlement')
67
- end
68
- end
69
-
70
- context "indomaret" do
71
- it "should pay for indomaret transaction", vcr: false do
72
- txn_result = Veritrans.charge('cstore',
73
- cstore: {store: "Indomaret", message: "Buah Mangga"},
74
- transaction_details: txn_details
75
- )
76
-
77
- result = Veritrans::Testing.pay_indomaret(txn_result.payment_code)
78
-
79
- result['status'].should == 'SUCCESS'
80
- assert_txn_status(txn_result.order_id, 'settlement')
81
- end
82
- end
83
-
84
- context "cimb clicks" do
85
- it "should get cimb clicks txn info", vcr: false do
86
-
87
- txn_result = Veritrans.charge("cimb_clicks",
88
- cimb_clicks: { description: "My Payment" },
89
- transaction_details: txn_details
90
- )
91
-
92
- cimb_txn = Veritrans::Testing.get_cimb_clicks(txn_result.redirect_url)
93
-
94
- cimb_txn.should == {
95
- "status_code" => "00",
96
- "amount" => "100000.00",
97
- "status" => "SUCCESS",
98
- "user_email" => "noreply@veritrans.co.id",
99
- "message" => "Success Inquiry Cimb Clicks",
100
- "user_name" => "Veritrans"
101
- }
102
- end
103
-
104
- it "should pay cimb clicks txn", vcr: false do
105
- txn_result = Veritrans.charge("cimb_clicks",
106
- cimb_clicks: { description: "My Payment" },
107
- transaction: { order_id: Time.now.to_s, gross_amount: 100_000 }
108
- )
109
-
110
- result = Veritrans::Testing.pay_cimb_clicks(txn_result.redirect_url)
111
-
112
- result['status'].should == 'SUCCESS'
113
- assert_txn_status(txn_result.order_id, 'settlement')
114
- end
115
-
116
- it "should reject cimb clicks txn with wrong user_id", vcr: false do
117
- txn_result = Veritrans.charge("cimb_clicks",
118
- cimb_clicks: { description: "My Payment" },
119
- transaction: { order_id: Time.now.to_s, gross_amount: 100_000 }
120
- )
121
-
122
- result = Veritrans::Testing.pay_cimb_clicks(txn_result.redirect_url, 'aaaa')
123
-
124
- result['status'].should == 'ERROR'
125
- assert_txn_status(txn_result.order_id, 'pending')
126
- end
127
- end
128
-
129
- context "SNAP" do
130
- it "should confirm snap payment", vcr: false do
131
- snap_txn_details = txn_details
132
- result = Veritrans.create_snap_token(transaction_details: snap_txn_details)
133
-
134
- snap_result = Veritrans::Testing.pay_snap(result.token, 'mandiri_clickpay', {
135
- payment_params: {
136
- mandiri_card_no: "4111111111111111",
137
- input3: 43044,
138
- token_response: '000000'
139
- }
140
- })
141
-
142
- snap_result['status_code'].should == '200'
143
- snap_result['transaction_status'].should == 'settlement'
144
- snap_result['finish_redirect_url'].should =~ /.+/
145
-
146
- assert_txn_status(snap_txn_details[:order_id], 'settlement')
147
- end
148
-
149
- it "should complete snap payment for permata VA", vcr: false do
150
- snap_txn_details = txn_details
151
- result = Veritrans.create_snap_token(transaction_details: snap_txn_details)
152
-
153
- snap_result = Veritrans::Testing.pay_snap(result.token, 'permata_va', {
154
- #customer_details: {
155
- # email: "budi@utomo.com"
156
- #}
157
- })
158
-
159
- snap_result['status_code'].should == '201'
160
- snap_result['transaction_status'].should == 'pending'
161
- snap_result['permata_va_number'].should =~ /.+/
162
-
163
- result = Veritrans::Testing.pay_permata_va(snap_result['permata_va_number'])
164
-
165
- result['status'].should == 'SUCCESS'
166
- assert_txn_status(snap_txn_details[:order_id], 'settlement')
167
- end
168
- end
169
-
170
- def txn_details
171
- { order_id: "gem-testing-" + (Time.now.to_f * 1000).round.to_s(36), gross_amount: 100_000 }
172
- end
173
-
174
- def assert_txn_status(order_id, status)
175
- status_result = nil
176
- 3.times do
177
- status_result = Veritrans.status(order_id)
178
- break if status_result.transaction_status == status
179
- sleep 0.3
180
- end
181
- status_result.transaction_status.should == status
182
- end
183
-
184
- end
data/testing_webhooks.md DELETED
@@ -1,78 +0,0 @@
1
- # Webhooks
2
-
3
- For better security we recommend to use webhooks and check status of transaction via api.
4
-
5
- Webhook is http post request that veritrans send to merchant's server when any transaction change status.
6
- It can be success transaction, can be failed transaction, and when transaction settled.
7
-
8
- Now you can set webhook url at https://dashboard.sandbox.midtrans.com/settings/vtweb_configuration
9
-
10
- ## Veritrans command line tool
11
-
12
- You can send testing request from command line:
13
-
14
- ```bash
15
- gem install veritrans
16
-
17
- # Send default data, payment which not exists
18
- veritrans testhook http://localhost:3000/vt_events
19
-
20
- # Get fetch real payment information and send
21
- veritrans testhook -o my-order-1 -c ~/path/to/veritrans.yml http://localhost:3000/vt_events
22
- ```
23
-
24
- ## Test locally
25
-
26
- Most of computers don't have public ip address, in that case you can't simply receive http requests on your computer.
27
- If you're using wi-fi router you need to change router settings to make a route from router to your local computer.
28
- To check if your ip is public, you can open http://www.whatismyip.com/, make some local http server and try to open it.
29
- For example if your IP address is `117.102.113.10` and you started rails on port 3000, try to open http://117.102.113.10:3000 in your browser;
30
- if you able to see your application, then your IP is public.
31
-
32
- There are several tools to accept http requests if you can't do it directly.
33
-
34
- * npm localtunnel
35
- * https://ngrok.com/
36
- * gem [ultrahook](http://www.ultrahook.com/)
37
- * gem [forward](https://forwardhq.com/)
38
-
39
- Or you can make ssh tunnel to your globally accessible server (if you have one)
40
-
41
- ssh -N -R 127.0.0.1:13000:localhost:3000 remoteuser@remote-host.com
42
- # 3000 - port on your local computer
43
- # 13000 - port witch will be accessible on remote computer
44
- # remoteuser@remote-host.com - your user and host
45
-
46
- Also you can collect requests online for further inspection.
47
-
48
- * http://requestb.in/
49
- * http://httpi.pe/
50
-
51
-
52
- ## Trigger callback
53
-
54
- To receive http notification from veritrans you can try to make transaction or use callback tester in merchant portal
55
-
56
- https://dashboard.sandbox.midtrans.com/settings/vtweb_configuration/test_callback
57
-
58
-
59
- ## Format
60
-
61
- Veritrans will try to send message in JSON format:
62
-
63
- ```js
64
- // Content-Type: application/json
65
- {
66
- "status_code": "200",
67
- "status_message": "Veritrans payment notification",
68
- "transaction_id": "826acc53-14e0-4ae7-95e2-845bf0311579",
69
- "order_id": "2014040745",
70
- "payment_type": "credit_card",
71
- "transaction_time": "2014-04-07 16:22:36",
72
- "transaction_status": "capture",
73
- "fraud_status": "accept",
74
- "masked_card": "411111-1111",
75
- "gross_amount": "2700"
76
- }
77
-
78
- ```