blockchyp 1.16.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) hide show
  1. checksums.yaml +7 -0
  2. data/Makefile +78 -0
  3. data/README.md +4023 -0
  4. data/Rakefile +39 -0
  5. data/lib/blockchyp/version.rb +5 -0
  6. data/lib/blockchyp.rb +478 -0
  7. data/lib/blockchyp_client.rb +416 -0
  8. data/lib/crypto_utils.rb +25 -0
  9. data/test/activate_terminal_test.rb +45 -0
  10. data/test/add_test_merchant_test.rb +56 -0
  11. data/test/batch_history_test.rb +54 -0
  12. data/test/boolean_prompt_test.rb +49 -0
  13. data/test/cancel_payment_link_test.rb +72 -0
  14. data/test/capture_signature_test.rb +46 -0
  15. data/test/deactivate_terminal_test.rb +42 -0
  16. data/test/delete_branding_asset_test.rb +50 -0
  17. data/test/delete_customer_test.rb +55 -0
  18. data/test/delete_media_asset_test.rb +53 -0
  19. data/test/delete_queued_transaction_test.rb +56 -0
  20. data/test/delete_slide_show_test.rb +50 -0
  21. data/test/delete_survey_question_test.rb +51 -0
  22. data/test/delete_test_merchant_test.rb +59 -0
  23. data/test/delete_token_test.rb +55 -0
  24. data/test/empty_branding_asset_test.rb +44 -0
  25. data/test/empty_slide_show_test.rb +45 -0
  26. data/test/gateway_timeout_test.rb +49 -0
  27. data/test/get_customer_test.rb +55 -0
  28. data/test/get_merchants_test.rb +52 -0
  29. data/test/heartbeat_test.rb +27 -0
  30. data/test/invite_merchant_user_test.rb +45 -0
  31. data/test/link_token_test.rb +56 -0
  32. data/test/list_queued_transactions_test.rb +55 -0
  33. data/test/list_terminals_test.rb +42 -0
  34. data/test/media_asset_test.rb +57 -0
  35. data/test/media_test.rb +42 -0
  36. data/test/media_upload_test.rb +52 -0
  37. data/test/merchant_platforms_test.rb +59 -0
  38. data/test/merchant_profile_test.rb +43 -0
  39. data/test/merchant_users_test.rb +42 -0
  40. data/test/new_transaction_display_test.rb +64 -0
  41. data/test/pan_charge_test.rb +61 -0
  42. data/test/pan_enroll_test.rb +62 -0
  43. data/test/pan_preauth_test.rb +60 -0
  44. data/test/partial_refund_test.rb +58 -0
  45. data/test/payment_link_status_test.rb +72 -0
  46. data/test/resend_payment_link_test.rb +49 -0
  47. data/test/search_customer_test.rb +55 -0
  48. data/test/send_payment_link_test.rb +67 -0
  49. data/test/simple_batch_close_test.rb +54 -0
  50. data/test/simple_capture_test.rb +55 -0
  51. data/test/simple_gift_activate_test.rb +48 -0
  52. data/test/simple_locate_test.rb +44 -0
  53. data/test/simple_message_test.rb +46 -0
  54. data/test/simple_ping_test.rb +45 -0
  55. data/test/simple_refund_test.rb +57 -0
  56. data/test/simple_reversal_test.rb +56 -0
  57. data/test/simple_void_test.rb +56 -0
  58. data/test/slide_show_test.rb +51 -0
  59. data/test/slide_shows_test.rb +49 -0
  60. data/test/survey_question_test.rb +48 -0
  61. data/test/survey_questions_test.rb +50 -0
  62. data/test/survey_results_test.rb +48 -0
  63. data/test/tc_delete_template_test.rb +51 -0
  64. data/test/tc_entry_test.rb +56 -0
  65. data/test/tc_log_test.rb +42 -0
  66. data/test/tc_template_test.rb +53 -0
  67. data/test/tc_template_update_test.rb +48 -0
  68. data/test/tc_templates_test.rb +42 -0
  69. data/test/terminal_branding_test.rb +42 -0
  70. data/test/terminal_charge_test.rb +57 -0
  71. data/test/terminal_clear_test.rb +45 -0
  72. data/test/terminal_ebt_balance_test.rb +47 -0
  73. data/test/terminal_ebt_charge_test.rb +59 -0
  74. data/test/terminal_enroll_test.rb +56 -0
  75. data/test/terminal_gift_card_balance_test.rb +46 -0
  76. data/test/terminal_keyed_charge_test.rb +58 -0
  77. data/test/terminal_manual_ebt_charge_test.rb +60 -0
  78. data/test/terminal_preauth_test.rb +57 -0
  79. data/test/terminal_queued_transaction_test.rb +51 -0
  80. data/test/terminal_status_test.rb +45 -0
  81. data/test/terminal_timeout_test.rb +46 -0
  82. data/test/terms_and_conditions_test.rb +50 -0
  83. data/test/test_helper.rb +64 -0
  84. data/test/testdata/aviato.png +0 -0
  85. data/test/text_prompt_test.rb +47 -0
  86. data/test/token_metadata_test.rb +55 -0
  87. data/test/transaction_history_test.rb +54 -0
  88. data/test/unlink_token_test.rb +56 -0
  89. data/test/update_branding_asset_test.rb +62 -0
  90. data/test/update_customer_test.rb +49 -0
  91. data/test/update_merchant_platforms_test.rb +61 -0
  92. data/test/update_merchant_test.rb +60 -0
  93. data/test/update_slide_show_test.rb +60 -0
  94. data/test/update_survey_question_test.rb +47 -0
  95. data/test/update_transaction_display_test.rb +64 -0
  96. data/test/upload_status_test.rb +53 -0
  97. metadata +138 -0
data/Rakefile ADDED
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+
5
+ begin
6
+ Bundler.setup(:default)
7
+ rescue Bundler::BundlerError => e
8
+ warn e.message
9
+ warn 'Run `bundle install` to install missing gems'
10
+ exit e.status_code
11
+ end
12
+
13
+ require 'rake'
14
+ require 'rake/testtask'
15
+
16
+ task(default: %i[test lint])
17
+
18
+ Rake::TestTask.new(:test) do |t|
19
+ t.libs << '.' << 'lib' << 'test'
20
+ t.test_files = FileList['test/*_test.rb']
21
+ t.verbose = false
22
+ end
23
+
24
+ task :lint do
25
+ if RUBY_ENGINE == 'ruby'
26
+ require 'rubocop/rake_task'
27
+ RuboCop::RakeTask.new
28
+ end
29
+ end
30
+
31
+ task(gem: :build)
32
+ task :build do
33
+ system 'gem build blockchyp.gemspec'
34
+ end
35
+
36
+ task publish: :build do
37
+ system "gem push blockchyp-#{BlockChyp::VERSION}.gem"
38
+ system "rm blockchyp-#{BlockChyp::VERSION}.gem"
39
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BlockChyp
4
+ VERSION = '1.16.1'
5
+ end
data/lib/blockchyp.rb ADDED
@@ -0,0 +1,478 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2019-2023 BlockChyp, Inc. All rights reserved. Use of this code is
4
+ # governed by a license that can be found in the LICENSE file.
5
+ #
6
+ # This file was generated automatically by the BlockChyp SDK Generator.
7
+ # Changes to this file will be lost every time the code is regenerated.
8
+
9
+ require_relative 'blockchyp_client'
10
+
11
+ module CardType
12
+ CREDIT = 0
13
+ DEBIT = 1
14
+ EBT = 2
15
+ BLOCKCHAIN_GIFT = 3
16
+ HEALTHCARE = 4
17
+ end
18
+
19
+ module SignatureFormat
20
+ NONE = ''
21
+ PNG = 'png'
22
+ JPG = 'jpg'
23
+ GIF = 'gif'
24
+ end
25
+
26
+ module RoundingMode
27
+ UP = 'up'
28
+ NEAREST = 'nearest'
29
+ DOWN = 'down'
30
+ end
31
+
32
+ module PromptType
33
+ AMOUNT = 'amount'
34
+ EMAIL = 'email'
35
+ PHONE_NUMBER = 'phone'
36
+ CUSTOMER_NUMBER = 'customer-number'
37
+ REWARDS_NUMBER = 'rewards-number'
38
+ FIRST_NAME = 'first-name'
39
+ LAST_NAME = 'last-name'
40
+ end
41
+
42
+ module AVSResponse
43
+ NOT_APPLICABLE = ''
44
+ NOT_SUPPORTED = 'not_supported'
45
+ RETRY = 'retry'
46
+ NO_MATCH = 'no_match'
47
+ ADDRESS_MATCH = 'address_match'
48
+ POSTAL_CODE_MATCH = 'zip_match'
49
+ ADDRESS_AND_POSTAL_CODE_MATCH = 'match'
50
+ end
51
+
52
+ module CVMType
53
+ SIGNATURE = 'Signature'
54
+ OFFLINE_PIN = 'Offline PIN'
55
+ ONLINE_PIN = 'Online PIN'
56
+ CDCVM = 'CDCVM'
57
+ NO_CVM = 'No CVM'
58
+ end
59
+
60
+ module HealthcareType
61
+ HEALTHCARE = 'healthcare'
62
+ PRESCRIPTION = 'prescription'
63
+ VISION = 'vision'
64
+ CLINIC = 'clinic'
65
+ DENTAL = 'dental'
66
+ end
67
+
68
+ module BlockChyp
69
+ # the main autogenerated blockchyp client
70
+ class BlockChyp < BlockChypClient
71
+
72
+ def heartbeat(test)
73
+ gateway_request('GET', '/api/heartbeat', { test: test })
74
+ end
75
+
76
+ # Tests connectivity with a payment terminal.
77
+ def ping(request)
78
+ route_terminal_request('POST', '/api/test', '/api/terminal-test', request)
79
+ end
80
+
81
+ # Executes a standard direct preauth and capture.
82
+ def charge(request)
83
+ route_terminal_request('POST', '/api/charge', '/api/charge', request)
84
+ end
85
+
86
+ # Executes a preauthorization intended to be captured later.
87
+ def preauth(request)
88
+ route_terminal_request('POST', '/api/preauth', '/api/preauth', request)
89
+ end
90
+
91
+ # Executes a refund.
92
+ def refund(request)
93
+ route_terminal_request('POST', '/api/refund', '/api/refund', request)
94
+ end
95
+
96
+ # Adds a new payment method to the token vault.
97
+ def enroll(request)
98
+ route_terminal_request('POST', '/api/enroll', '/api/enroll', request)
99
+ end
100
+
101
+ # Activates or recharges a gift card.
102
+ def gift_activate(request)
103
+ route_terminal_request('POST', '/api/gift-activate', '/api/gift-activate', request)
104
+ end
105
+
106
+ # Checks the remaining balance on a payment method.
107
+ def balance(request)
108
+ route_terminal_request('POST', '/api/balance', '/api/balance', request)
109
+ end
110
+
111
+ # Clears the line item display and any in progress transaction.
112
+ def clear(request)
113
+ route_terminal_request('POST', '/api/clear', '/api/terminal-clear', request)
114
+ end
115
+
116
+ # Returns the current status of a terminal.
117
+ def terminal_status(request)
118
+ route_terminal_request('POST', '/api/terminal-status', '/api/terminal-status', request)
119
+ end
120
+
121
+ # Prompts the user to accept terms and conditions.
122
+ def terms_and_conditions(request)
123
+ route_terminal_request('POST', '/api/tc', '/api/terminal-tc', request)
124
+ end
125
+
126
+ # Captures and returns a signature.
127
+ def capture_signature(request)
128
+ route_terminal_request('POST', '/api/capture-signature', '/api/capture-signature', request)
129
+ end
130
+
131
+ # Displays a new transaction on the terminal.
132
+ def new_transaction_display(request)
133
+ route_terminal_request('POST', '/api/txdisplay', '/api/terminal-txdisplay', request)
134
+ end
135
+
136
+ # Appends items to an existing transaction display. Subtotal, Tax, and
137
+ # Total are overwritten by the request. Items with the same description
138
+ # are combined into groups.
139
+ def update_transaction_display(request)
140
+ route_terminal_request('PUT', '/api/txdisplay', '/api/terminal-txdisplay', request)
141
+ end
142
+
143
+ # Displays a short message on the terminal.
144
+ def message(request)
145
+ route_terminal_request('POST', '/api/message', '/api/message', request)
146
+ end
147
+
148
+ # Asks the consumer a yes/no question.
149
+ def boolean_prompt(request)
150
+ route_terminal_request('POST', '/api/boolean-prompt', '/api/boolean-prompt', request)
151
+ end
152
+
153
+ # Asks the consumer a text based question.
154
+ def text_prompt(request)
155
+ route_terminal_request('POST', '/api/text-prompt', '/api/text-prompt', request)
156
+ end
157
+
158
+ # Returns a list of queued transactions on a terminal.
159
+ def list_queued_transactions(request)
160
+ route_terminal_request('POST', '/api/queue/list', '/api/queue/list', request)
161
+ end
162
+
163
+ # Deletes a queued transaction from the terminal.
164
+ def delete_queued_transaction(request)
165
+ route_terminal_request('POST', '/api/queue/delete', '/api/queue/delete', request)
166
+ end
167
+
168
+ # Reboot a payment terminal.
169
+ def reboot(request)
170
+ route_terminal_request('POST', '/api/reboot', '/api/terminal-reboot', request)
171
+ end
172
+
173
+ # Returns routing and location data for a payment terminal.
174
+ def locate(request)
175
+ gateway_request('POST', '/api/terminal-locate', request)
176
+ end
177
+
178
+ # Captures a preauthorization.
179
+ def capture(request)
180
+ gateway_request('POST', '/api/capture', request)
181
+ end
182
+
183
+ # Discards a previous transaction.
184
+ def void(request)
185
+ gateway_request('POST', '/api/void', request)
186
+ end
187
+
188
+ # Executes a manual time out reversal.
189
+ #
190
+ # We love time out reversals. Don't be afraid to use them whenever a
191
+ # request to a BlockChyp terminal times out. You have up to two minutes to
192
+ # reverse any transaction. The only caveat is that you must assign
193
+ # transactionRef values when you build the original request. Otherwise, we
194
+ # have no real way of knowing which transaction you're trying to reverse
195
+ # because we may not have assigned it an id yet. And if we did assign it
196
+ # an id, you wouldn't know what it is because your request to the terminal
197
+ # timed out before you got a response.
198
+ def reverse(request)
199
+ gateway_request('POST', '/api/reverse', request)
200
+ end
201
+
202
+ # Closes the current credit card batch.
203
+ def close_batch(request)
204
+ gateway_request('POST', '/api/close-batch', request)
205
+ end
206
+
207
+ # Creates and send a payment link to a customer.
208
+ def send_payment_link(request)
209
+ gateway_request('POST', '/api/send-payment-link', request)
210
+ end
211
+
212
+ # Resends payment link.
213
+ def resend_payment_link(request)
214
+ gateway_request('POST', '/api/resend-payment-link', request)
215
+ end
216
+
217
+ # Cancels a payment link.
218
+ def cancel_payment_link(request)
219
+ gateway_request('POST', '/api/cancel-payment-link', request)
220
+ end
221
+
222
+ # Retrieves the status of a payment link.
223
+ def payment_link_status(request)
224
+ gateway_request('POST', '/api/payment-link-status', request)
225
+ end
226
+
227
+ # Retrieves the current status of a transaction.
228
+ def transaction_status(request)
229
+ gateway_request('POST', '/api/tx-status', request)
230
+ end
231
+
232
+ # Updates or creates a customer record.
233
+ def update_customer(request)
234
+ gateway_request('POST', '/api/update-customer', request)
235
+ end
236
+
237
+ # Retrieves a customer by id.
238
+ def customer(request)
239
+ gateway_request('POST', '/api/customer', request)
240
+ end
241
+
242
+ # Searches the customer database.
243
+ def customer_search(request)
244
+ gateway_request('POST', '/api/customer-search', request)
245
+ end
246
+
247
+ # Calculates the discount for actual cash transactions.
248
+ def cash_discount(request)
249
+ gateway_request('POST', '/api/cash-discount', request)
250
+ end
251
+
252
+ # Returns the batch history for a merchant.
253
+ def batch_history(request)
254
+ gateway_request('POST', '/api/batch-history', request)
255
+ end
256
+
257
+ # Returns the batch details for a single batch.
258
+ def batch_details(request)
259
+ gateway_request('POST', '/api/batch-details', request)
260
+ end
261
+
262
+ # Returns the transaction history for a merchant.
263
+ def transaction_history(request)
264
+ gateway_request('POST', '/api/tx-history', request)
265
+ end
266
+
267
+ # Returns profile information for a merchant.
268
+ def merchant_profile(request)
269
+ gateway_request('POST', '/api/public-merchant-profile', request)
270
+ end
271
+
272
+ # Deletes a customer record.
273
+ def delete_customer(request)
274
+ gateway_request('DELETE', '/api/customer/' + request[:customerId], request)
275
+ end
276
+
277
+ # Retrieves payment token metadata.
278
+ def token_metadata(request)
279
+ gateway_request('GET', '/api/token/' + request[:token], request)
280
+ end
281
+
282
+ # Links a token to a customer record.
283
+ def link_token(request)
284
+ gateway_request('POST', '/api/link-token', request)
285
+ end
286
+
287
+ # Removes a link between a customer and a token.
288
+ def unlink_token(request)
289
+ gateway_request('POST', '/api/unlink-token', request)
290
+ end
291
+
292
+ # Deletes a payment token.
293
+ def delete_token(request)
294
+ gateway_request('DELETE', '/api/token/' + request[:token], request)
295
+ end
296
+
297
+
298
+ # Adds a test merchant account.
299
+ def get_merchants(request)
300
+ dashboard_request('POST', '/api/get-merchants', request)
301
+ end
302
+
303
+ # Adds or updates a merchant account. Can be used to create or update test
304
+ # merchants. Only gateway partners may create new live merchants.
305
+ def update_merchant(request)
306
+ dashboard_request('POST', '/api/update-merchant', request)
307
+ end
308
+
309
+ # List all active users and pending invites for a merchant account.
310
+ def merchant_users(request)
311
+ dashboard_request('POST', '/api/merchant-users', request)
312
+ end
313
+
314
+ # Invites a user to join a merchant account.
315
+ def invite_merchant_user(request)
316
+ dashboard_request('POST', '/api/invite-merchant-user', request)
317
+ end
318
+
319
+ # Adds a test merchant account.
320
+ def add_test_merchant(request)
321
+ dashboard_request('POST', '/api/add-test-merchant', request)
322
+ end
323
+
324
+ # Deletes a test merchant account. Supports partner scoped API credentials
325
+ # only. Live merchant accounts cannot be deleted.
326
+ def delete_test_merchant(request)
327
+ dashboard_request('DELETE', '/api/test-merchant/' + request[:merchantId], request)
328
+ end
329
+
330
+ # List all merchant platforms configured for a gateway merchant.
331
+ def merchant_platforms(request)
332
+ dashboard_request('GET', '/api/plugin-configs/' + request[:merchantId], request)
333
+ end
334
+
335
+ # List all merchant platforms configured for a gateway merchant.
336
+ def update_merchant_platforms(request)
337
+ dashboard_request('POST', '/api/plugin-configs', request)
338
+ end
339
+
340
+ # Deletes a boarding platform configuration.
341
+ def delete_merchant_platforms(request)
342
+ dashboard_request('DELETE', '/api/plugin-config/' + request[:platformId], request)
343
+ end
344
+
345
+ # Returns all terminals associated with the merchant account.
346
+ def terminals(request)
347
+ dashboard_request('GET', '/api/terminals', request)
348
+ end
349
+
350
+ # Deactivates a terminal.
351
+ def deactivate_terminal(request)
352
+ dashboard_request('DELETE', '/api/terminal/' + request[:terminalId], request)
353
+ end
354
+
355
+ # Activates a terminal.
356
+ def activate_terminal(request)
357
+ dashboard_request('POST', '/api/terminal-activate', request)
358
+ end
359
+
360
+ # Returns a list of terms and conditions templates associated with a
361
+ # merchant account.
362
+ def tc_templates(request)
363
+ dashboard_request('GET', '/api/tc-templates', request)
364
+ end
365
+
366
+ # Returns a single terms and conditions template.
367
+ def tc_template(request)
368
+ dashboard_request('GET', '/api/tc-templates/' + request[:templateId], request)
369
+ end
370
+
371
+ # Updates or creates a terms and conditions template.
372
+ def tc_update_template(request)
373
+ dashboard_request('POST', '/api/tc-templates', request)
374
+ end
375
+
376
+ # Deletes a single terms and conditions template.
377
+ def tc_delete_template(request)
378
+ dashboard_request('DELETE', '/api/tc-templates/' + request[:templateId], request)
379
+ end
380
+
381
+ # Returns up to 250 entries from the Terms and Conditions log.
382
+ def tc_log(request)
383
+ dashboard_request('POST', '/api/tc-log', request)
384
+ end
385
+
386
+ # Returns a single detailed Terms and Conditions entry.
387
+ def tc_entry(request)
388
+ dashboard_request('GET', '/api/tc-entry/' + request[:logEntryId], request)
389
+ end
390
+
391
+ # Returns all survey questions for a given merchant.
392
+ def survey_questions(request)
393
+ dashboard_request('GET', '/api/survey-questions', request)
394
+ end
395
+
396
+ # Returns a single survey question with response data.
397
+ def survey_question(request)
398
+ dashboard_request('GET', '/api/survey-questions/' + request[:questionId], request)
399
+ end
400
+
401
+ # Updates or creates a survey question.
402
+ def update_survey_question(request)
403
+ dashboard_request('POST', '/api/survey-questions', request)
404
+ end
405
+
406
+ # Deletes a survey question.
407
+ def delete_survey_question(request)
408
+ dashboard_request('DELETE', '/api/survey-questions/' + request[:questionId], request)
409
+ end
410
+
411
+ # Returns results for a single survey question.
412
+ def survey_results(request)
413
+ dashboard_request('POST', '/api/survey-results', request)
414
+ end
415
+
416
+ # Returns the media library for a given partner, merchant, or
417
+ # organization.
418
+ def media(request)
419
+ dashboard_request('GET', '/api/media', request)
420
+ end
421
+
422
+ # Uploads a media asset to the media library.
423
+ def upload_media(request, file)
424
+ upload_request('/api/upload-media', request, file)
425
+ end
426
+
427
+ # Retrieves the current status of a file upload.
428
+ def upload_status(request)
429
+ dashboard_request('GET', '/api/media-upload/' + request[:uploadId], request)
430
+ end
431
+
432
+ # Returns the media details for a single media asset.
433
+ def media_asset(request)
434
+ dashboard_request('GET', '/api/media/' + request[:mediaId], request)
435
+ end
436
+
437
+ # Deletes a media asset.
438
+ def delete_media_asset(request)
439
+ dashboard_request('DELETE', '/api/media/' + request[:mediaId], request)
440
+ end
441
+
442
+ # Returns a collection of slide shows.
443
+ def slide_shows(request)
444
+ dashboard_request('GET', '/api/slide-shows', request)
445
+ end
446
+
447
+ # Returns a single slide show with slides.
448
+ def slide_show(request)
449
+ dashboard_request('GET', '/api/slide-shows/' + request[:slideShowId], request)
450
+ end
451
+
452
+ # Updates or creates a slide show.
453
+ def update_slide_show(request)
454
+ dashboard_request('POST', '/api/slide-shows', request)
455
+ end
456
+
457
+ # Deletes a single slide show.
458
+ def delete_slide_show(request)
459
+ dashboard_request('DELETE', '/api/slide-shows/' + request[:slideShowId], request)
460
+ end
461
+
462
+ # Returns the terminal branding stack for a given set of API credentials.
463
+ def terminal_branding(request)
464
+ dashboard_request('GET', '/api/terminal-branding', request)
465
+ end
466
+
467
+ # Updates a branding asset.
468
+ def update_branding_asset(request)
469
+ dashboard_request('POST', '/api/terminal-branding', request)
470
+ end
471
+
472
+ # Deletes a branding asset.
473
+ def delete_branding_asset(request)
474
+ dashboard_request('DELETE', '/api/terminal-branding/' + request[:assetId], request)
475
+ end
476
+
477
+ end
478
+ end