blockchyp 1.16.1

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 (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