fat_zebra_multi 3.1.0.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 (211) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/.rspec +0 -0
  4. data/.rubocop.yml +44 -0
  5. data/.travis.yml +10 -0
  6. data/Gemfile +4 -0
  7. data/README.md +104 -0
  8. data/Rakefile +11 -0
  9. data/fat_zebra_multi.gemspec +27 -0
  10. data/lib/fat_zebra.rb +65 -0
  11. data/lib/fat_zebra/api_helper.rb +91 -0
  12. data/lib/fat_zebra/api_operation/delete.rb +38 -0
  13. data/lib/fat_zebra/api_operation/find.rb +30 -0
  14. data/lib/fat_zebra/api_operation/save.rb +67 -0
  15. data/lib/fat_zebra/api_operation/search.rb +39 -0
  16. data/lib/fat_zebra/api_operation/void.rb +52 -0
  17. data/lib/fat_zebra/api_resource.rb +88 -0
  18. data/lib/fat_zebra/bank_account.rb +20 -0
  19. data/lib/fat_zebra/batch.rb +60 -0
  20. data/lib/fat_zebra/card.rb +23 -0
  21. data/lib/fat_zebra/config.rb +90 -0
  22. data/lib/fat_zebra/customer.rb +26 -0
  23. data/lib/fat_zebra/direct_credit.rb +26 -0
  24. data/lib/fat_zebra/direct_debit.rb +26 -0
  25. data/lib/fat_zebra/errors.rb +37 -0
  26. data/lib/fat_zebra/fat_zebra_object.rb +68 -0
  27. data/lib/fat_zebra/information.rb +29 -0
  28. data/lib/fat_zebra/object_helper.rb +119 -0
  29. data/lib/fat_zebra/payment_plan.rb +61 -0
  30. data/lib/fat_zebra/purchase.rb +96 -0
  31. data/lib/fat_zebra/refund.rb +27 -0
  32. data/lib/fat_zebra/request.rb +174 -0
  33. data/lib/fat_zebra/request/multipart/epilogue.rb +23 -0
  34. data/lib/fat_zebra/request/multipart/file_io.rb +40 -0
  35. data/lib/fat_zebra/request/multipart/param.rb +37 -0
  36. data/lib/fat_zebra/request/multipart/part.rb +28 -0
  37. data/lib/fat_zebra/request/multipart/stream.rb +57 -0
  38. data/lib/fat_zebra/util.rb +71 -0
  39. data/lib/fat_zebra/validation.rb +67 -0
  40. data/lib/fat_zebra/version.rb +3 -0
  41. data/lib/fat_zebra/web_hook.rb +22 -0
  42. data/spec/cassettes/FatZebra_BankAccount/_create/1_1_1.yml +53 -0
  43. data/spec/cassettes/FatZebra_BankAccount/_create/1_1_2.yml +53 -0
  44. data/spec/cassettes/FatZebra_BankAccount/_search/1_2_1.yml +164 -0
  45. data/spec/cassettes/FatZebra_BankAccount/_search/1_2_2.yml +164 -0
  46. data/spec/cassettes/FatZebra_BankAccount/_search/1_2_3.yml +164 -0
  47. data/spec/cassettes/FatZebra_Batch/_create/with_file/1_1_1_1.yml +61 -0
  48. data/spec/cassettes/FatZebra_Batch/_create/with_file/1_1_1_2.yml +61 -0
  49. data/spec/cassettes/FatZebra_Batch/_create/with_path/1_1_2_1.yml +61 -0
  50. data/spec/cassettes/FatZebra_Batch/_create/with_path/1_1_2_2.yml +61 -0
  51. data/spec/cassettes/FatZebra_Batch/_find/1_2_1.yml +112 -0
  52. data/spec/cassettes/FatZebra_Batch/_find/1_2_2.yml +112 -0
  53. data/spec/cassettes/FatZebra_Batch/_result/1_4_1.yml +163 -0
  54. data/spec/cassettes/FatZebra_Batch/_search/1_3_1.yml +54 -0
  55. data/spec/cassettes/FatZebra_Batch/_search/1_3_2.yml +54 -0
  56. data/spec/cassettes/FatZebra_Batch/_search/1_3_3.yml +54 -0
  57. data/spec/cassettes/FatZebra_Card/_create/1_1_1.yml +54 -0
  58. data/spec/cassettes/FatZebra_Card/_create/1_1_2.yml +54 -0
  59. data/spec/cassettes/FatZebra_Card/_create/1_1_3.yml +54 -0
  60. data/spec/cassettes/FatZebra_Card/_create/1_1_4.yml +54 -0
  61. data/spec/cassettes/FatZebra_Card/_create/1_1_5.yml +54 -0
  62. data/spec/cassettes/FatZebra_Card/_create/1_1_6.yml +54 -0
  63. data/spec/cassettes/FatZebra_Card/_update/1_2_1.yml +105 -0
  64. data/spec/cassettes/FatZebra_Card/_update/1_2_2.yml +105 -0
  65. data/spec/cassettes/FatZebra_Card/_update/1_2_3.yml +105 -0
  66. data/spec/cassettes/FatZebra_Card/_update/validations/1_2_4_1.yml +54 -0
  67. data/spec/cassettes/FatZebra_Customer/_create/1_1_1.yml +55 -0
  68. data/spec/cassettes/FatZebra_Customer/_create/1_1_2.yml +55 -0
  69. data/spec/cassettes/FatZebra_Customer/_create/1_1_3.yml +55 -0
  70. data/spec/cassettes/FatZebra_Customer/_create/1_1_4.yml +55 -0
  71. data/spec/cassettes/FatZebra_Customer/_create/1_1_5.yml +55 -0
  72. data/spec/cassettes/FatZebra_Customer/_create/1_1_6.yml +55 -0
  73. data/spec/cassettes/FatZebra_Customer/_delete/1_5_1.yml +103 -0
  74. data/spec/cassettes/FatZebra_Customer/_find/1_3_1.yml +107 -0
  75. data/spec/cassettes/FatZebra_Customer/_find/1_3_2.yml +107 -0
  76. data/spec/cassettes/FatZebra_Customer/_search/1_2_1.yml +60 -0
  77. data/spec/cassettes/FatZebra_Customer/_search/1_2_2.yml +60 -0
  78. data/spec/cassettes/FatZebra_Customer/_search/1_2_3.yml +60 -0
  79. data/spec/cassettes/FatZebra_Customer/_update/1_4_1.yml +106 -0
  80. data/spec/cassettes/FatZebra_Customer/_update/1_4_2.yml +106 -0
  81. data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_1.yml +52 -0
  82. data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_2.yml +52 -0
  83. data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_3.yml +52 -0
  84. data/spec/cassettes/FatZebra_DirectCredit/_create/1_1_4.yml +52 -0
  85. data/spec/cassettes/FatZebra_DirectCredit/_create/validations/valid/1_1_5_1_1.yml +52 -0
  86. data/spec/cassettes/FatZebra_DirectCredit/_delete/1_4_1.yml +99 -0
  87. data/spec/cassettes/FatZebra_DirectCredit/_find/1_2_1.yml +103 -0
  88. data/spec/cassettes/FatZebra_DirectCredit/_find/1_2_2.yml +103 -0
  89. data/spec/cassettes/FatZebra_DirectCredit/_find/1_2_3.yml +103 -0
  90. data/spec/cassettes/FatZebra_DirectCredit/_search/1_3_1.yml +152 -0
  91. data/spec/cassettes/FatZebra_DirectCredit/_search/1_3_2.yml +152 -0
  92. data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_1.yml +52 -0
  93. data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_2.yml +52 -0
  94. data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_3.yml +52 -0
  95. data/spec/cassettes/FatZebra_DirectDebit/_create/1_1_4.yml +52 -0
  96. data/spec/cassettes/FatZebra_DirectDebit/_create/validations/valid/1_1_5_1_1.yml +52 -0
  97. data/spec/cassettes/FatZebra_DirectDebit/_delete/1_4_1.yml +99 -0
  98. data/spec/cassettes/FatZebra_DirectDebit/_find/1_2_1.yml +103 -0
  99. data/spec/cassettes/FatZebra_DirectDebit/_find/1_2_2.yml +103 -0
  100. data/spec/cassettes/FatZebra_DirectDebit/_find/1_2_3.yml +103 -0
  101. data/spec/cassettes/FatZebra_DirectDebit/_search/1_3_1.yml +152 -0
  102. data/spec/cassettes/FatZebra_DirectDebit/_search/1_3_2.yml +152 -0
  103. data/spec/cassettes/FatZebra_Information/_ping/1_1_1.yml +54 -0
  104. data/spec/cassettes/FatZebra_Information/_ping/1_1_2.yml +54 -0
  105. data/spec/cassettes/FatZebra_PaymentPlan/_active_/1_8_1.yml +222 -0
  106. data/spec/cassettes/FatZebra_PaymentPlan/_active_/1_8_2.yml +222 -0
  107. data/spec/cassettes/FatZebra_PaymentPlan/_create/1_1_1.yml +110 -0
  108. data/spec/cassettes/FatZebra_PaymentPlan/_create/1_1_2.yml +110 -0
  109. data/spec/cassettes/FatZebra_PaymentPlan/_create/1_1_3.yml +110 -0
  110. data/spec/cassettes/FatZebra_PaymentPlan/_delete/1_5_1.yml +158 -0
  111. data/spec/cassettes/FatZebra_PaymentPlan/_destroy/1_6_1.yml +158 -0
  112. data/spec/cassettes/FatZebra_PaymentPlan/_find/1_2_1.yml +167 -0
  113. data/spec/cassettes/FatZebra_PaymentPlan/_find/1_2_2.yml +167 -0
  114. data/spec/cassettes/FatZebra_PaymentPlan/_find/1_2_3.yml +167 -0
  115. data/spec/cassettes/FatZebra_PaymentPlan/_suspend_/1_7_1.yml +166 -0
  116. data/spec/cassettes/FatZebra_PaymentPlan/_suspend_/1_7_2.yml +166 -0
  117. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_3_1.yml +160 -0
  118. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_3_2.yml +160 -0
  119. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_3_3.yml +160 -0
  120. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_4_1.yml +166 -0
  121. data/spec/cassettes/FatZebra_PaymentPlan/_update/1_4_2.yml +166 -0
  122. data/spec/cassettes/FatZebra_Purchase/_capture/1_5_1.yml +115 -0
  123. data/spec/cassettes/FatZebra_Purchase/_capture/1_5_2.yml +115 -0
  124. data/spec/cassettes/FatZebra_Purchase/_capture/1_5_3.yml +115 -0
  125. data/spec/cassettes/FatZebra_Purchase/_create/1_1_1.yml +53 -0
  126. data/spec/cassettes/FatZebra_Purchase/_create/1_1_10.yml +53 -0
  127. data/spec/cassettes/FatZebra_Purchase/_create/1_1_11.yml +53 -0
  128. data/spec/cassettes/FatZebra_Purchase/_create/1_1_12.yml +53 -0
  129. data/spec/cassettes/FatZebra_Purchase/_create/1_1_13.yml +53 -0
  130. data/spec/cassettes/FatZebra_Purchase/_create/1_1_2.yml +53 -0
  131. data/spec/cassettes/FatZebra_Purchase/_create/1_1_3.yml +53 -0
  132. data/spec/cassettes/FatZebra_Purchase/_create/1_1_4.yml +53 -0
  133. data/spec/cassettes/FatZebra_Purchase/_create/1_1_5.yml +53 -0
  134. data/spec/cassettes/FatZebra_Purchase/_create/1_1_6.yml +53 -0
  135. data/spec/cassettes/FatZebra_Purchase/_create/1_1_7.yml +53 -0
  136. data/spec/cassettes/FatZebra_Purchase/_create/1_1_8.yml +53 -0
  137. data/spec/cassettes/FatZebra_Purchase/_create/1_1_9.yml +53 -0
  138. data/spec/cassettes/FatZebra_Purchase/_create/bad_request/1_1_14_1.yml +55 -0
  139. data/spec/cassettes/FatZebra_Purchase/_create/bad_request/1_1_14_2.yml +55 -0
  140. data/spec/cassettes/FatZebra_Purchase/_find/1_2_1.yml +117 -0
  141. data/spec/cassettes/FatZebra_Purchase/_find/1_2_2.yml +117 -0
  142. data/spec/cassettes/FatZebra_Purchase/_find/1_2_3.yml +117 -0
  143. data/spec/cassettes/FatZebra_Purchase/_find/1_2_4.yml +117 -0
  144. data/spec/cassettes/FatZebra_Purchase/_refund/1_4_1.yml +115 -0
  145. data/spec/cassettes/FatZebra_Purchase/_refund/1_4_2.yml +115 -0
  146. data/spec/cassettes/FatZebra_Purchase/_refund/1_4_3.yml +115 -0
  147. data/spec/cassettes/FatZebra_Purchase/_search/1_3_1.yml +164 -0
  148. data/spec/cassettes/FatZebra_Purchase/_search/1_3_2.yml +164 -0
  149. data/spec/cassettes/FatZebra_Purchase/_search/1_3_3.yml +164 -0
  150. data/spec/cassettes/FatZebra_Purchase/_settlement/1_8_1.yml +652 -0
  151. data/spec/cassettes/FatZebra_Purchase/_settlement/1_8_2.yml +652 -0
  152. data/spec/cassettes/FatZebra_Purchase/_settlement/1_8_3.yml +652 -0
  153. data/spec/cassettes/FatZebra_Purchase/_void/1_6_1.yml +103 -0
  154. data/spec/cassettes/FatZebra_Purchase/_void/1_6_2.yml +103 -0
  155. data/spec/cassettes/FatZebra_Purchase/_void/1_6_3.yml +103 -0
  156. data/spec/cassettes/FatZebra_Purchase/_void/1_6_4.yml +103 -0
  157. data/spec/cassettes/FatZebra_Purchase/_void/1_7_1.yml +103 -0
  158. data/spec/cassettes/FatZebra_Purchase/_void/1_7_2.yml +103 -0
  159. data/spec/cassettes/FatZebra_Purchase/_void/1_7_3.yml +103 -0
  160. data/spec/cassettes/FatZebra_Purchase/_void/1_7_4.yml +103 -0
  161. data/spec/cassettes/FatZebra_Refund/_create/1_1_1.yml +103 -0
  162. data/spec/cassettes/FatZebra_Refund/_create/1_1_10.yml +103 -0
  163. data/spec/cassettes/FatZebra_Refund/_create/1_1_2.yml +103 -0
  164. data/spec/cassettes/FatZebra_Refund/_create/1_1_3.yml +103 -0
  165. data/spec/cassettes/FatZebra_Refund/_create/1_1_4.yml +103 -0
  166. data/spec/cassettes/FatZebra_Refund/_create/1_1_5.yml +103 -0
  167. data/spec/cassettes/FatZebra_Refund/_create/1_1_6.yml +103 -0
  168. data/spec/cassettes/FatZebra_Refund/_create/1_1_7.yml +103 -0
  169. data/spec/cassettes/FatZebra_Refund/_create/1_1_8.yml +103 -0
  170. data/spec/cassettes/FatZebra_Refund/_create/1_1_9.yml +103 -0
  171. data/spec/cassettes/FatZebra_Refund/_find/1_2_1.yml +155 -0
  172. data/spec/cassettes/FatZebra_Refund/_find/1_2_2.yml +155 -0
  173. data/spec/cassettes/FatZebra_Refund/_find/1_2_3.yml +155 -0
  174. data/spec/cassettes/FatZebra_Refund/_search/responds_with_the_newly-created_refunds.yml +214 -0
  175. data/spec/cassettes/FatZebra_Refund/_void/1_4_1.yml +153 -0
  176. data/spec/cassettes/FatZebra_Refund/_void/1_4_2.yml +153 -0
  177. data/spec/cassettes/FatZebra_Refund/_void/1_4_3.yml +153 -0
  178. data/spec/cassettes/FatZebra_Refund/_void/1_4_4.yml +153 -0
  179. data/spec/cassettes/FatZebra_WebHook/_create/1_1_1.yml +53 -0
  180. data/spec/cassettes/FatZebra_WebHook/_create/1_1_2.yml +53 -0
  181. data/spec/cassettes/FatZebra_WebHook/_create/1_1_3.yml +53 -0
  182. data/spec/cassettes/FatZebra_WebHook/_delete/1_4_1.yml +101 -0
  183. data/spec/cassettes/FatZebra_WebHook/_search/1_2_1.yml +298 -0
  184. data/spec/cassettes/FatZebra_WebHook/_search/1_2_2.yml +300 -0
  185. data/spec/cassettes/FatZebra_WebHook/_update/1_3_1.yml +104 -0
  186. data/spec/cassettes/FatZebra_WebHook/_update/1_3_2.yml +104 -0
  187. data/spec/cassettes/Multiple_accounts/The_basics/1_1_5.yml +59 -0
  188. data/spec/cassettes/Multiple_accounts/The_basics/1_1_6.yml +59 -0
  189. data/spec/fixtures/batch_test.csv +4 -0
  190. data/spec/lib/fat_zebra/api_resource_spec.rb +25 -0
  191. data/spec/lib/fat_zebra/bank_account_spec.rb +34 -0
  192. data/spec/lib/fat_zebra/batch_spec.rb +59 -0
  193. data/spec/lib/fat_zebra/card_spec.rb +41 -0
  194. data/spec/lib/fat_zebra/config_spec.rb +69 -0
  195. data/spec/lib/fat_zebra/customer_spec.rb +53 -0
  196. data/spec/lib/fat_zebra/direct_credit_spec.rb +74 -0
  197. data/spec/lib/fat_zebra/direct_debit_spec.rb +74 -0
  198. data/spec/lib/fat_zebra/fat_zebra_object_spec.rb +117 -0
  199. data/spec/lib/fat_zebra/information_spec.rb +13 -0
  200. data/spec/lib/fat_zebra/multiple_accounts_spec.rb +69 -0
  201. data/spec/lib/fat_zebra/payment_plan_spec.rb +94 -0
  202. data/spec/lib/fat_zebra/purchase_spec.rb +105 -0
  203. data/spec/lib/fat_zebra/refund_spec.rb +95 -0
  204. data/spec/lib/fat_zebra/request_spec.rb +59 -0
  205. data/spec/lib/fat_zebra/util_spec.rb +43 -0
  206. data/spec/lib/fat_zebra/validation_spec.rb +22 -0
  207. data/spec/lib/fat_zebra/web_hook_spec.rb +50 -0
  208. data/spec/spec_helper.rb +68 -0
  209. data/spec/support/payloads.rb +43 -0
  210. data/vendor/cacert.pem +3390 -0
  211. metadata +338 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: ee47c7e08352ee5db3f0648ccbb0331af1e0cbf6e2364cddbae5525f747cf5a0
4
+ data.tar.gz: 57a95b2cd2f58cd814798f990bb5b03267dd42e607febcfd7c568f57a44709ee
5
+ SHA512:
6
+ metadata.gz: 7914d2d1e23cdce79db77fb6ea0aeab26039344b2cc5a1d3157089ebad6e577d693048f3c901d1a70345a1ff97063b165e89f579c29120e475507bb81134b2eb
7
+ data.tar.gz: 1fd30cea517d76df7612752972f83089a33a201092d8b3dd6483a5ece8faa01eecb3bb895d534d09c52ce9471bff407b8d030b64fcab3b82692f876164dd0e6b
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .yardoc
6
+ doc/
data/.rspec ADDED
File without changes
data/.rubocop.yml ADDED
@@ -0,0 +1,44 @@
1
+ Layout/EmptyLinesAroundClassBody:
2
+ Enabled: false
3
+ Layout/EmptyLinesAroundModuleBody:
4
+ Enabled: false
5
+ Layout/EmptyLinesAroundBlockBody:
6
+ Enabled: false
7
+
8
+ Style/MissingRespondToMissing:
9
+ Enabled: false
10
+ Style/MethodMissingSuper:
11
+ Enabled: false
12
+ Style/NumericPredicate:
13
+ Enabled: false
14
+ Style/FrozenStringLiteralComment:
15
+ Enabled: false
16
+
17
+ Metrics/AbcSize:
18
+ # The ABC size is a calculated magnitude, so this number can be a Fixnum or
19
+ # a Float.
20
+ Max: 27
21
+ Metrics/LineLength:
22
+ Max: 200
23
+ Metrics/ClassLength:
24
+ CountComments: false
25
+ Max: 200
26
+ Metrics/MethodLength:
27
+ CountComments: false
28
+ Max: 25
29
+ Metrics/ModuleLength:
30
+ CountComments: false
31
+ Max: 200
32
+ Metrics/CyclomaticComplexity:
33
+ Max: 7
34
+
35
+ Documentation:
36
+ Enabled: false
37
+
38
+ AllCops:
39
+ TargetRubyVersion: 2.3
40
+ Exclude:
41
+ - bin/**/*
42
+ - vendor/**/*
43
+ - tmp/**/*
44
+ - spec/**/*
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ cache: bundler
2
+ language: ruby
3
+ rvm:
4
+ - 2.3
5
+ - 2.4
6
+ - 2.5
7
+ - 2.6
8
+ script:
9
+ - bundle exec rspec spec
10
+ - bundle exec rubocop
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'http://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in FatZebra.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,104 @@
1
+ Ruby API Library for Fat Zebra
2
+ ==============================
3
+
4
+ [![Build Status](https://travis-ci.org/supporterhub/fat-zebra-api-client.svg?branch=master)](https://travis-ci.org/supporterhub/fat-zebra-api-client)
5
+
6
+ A Ruby client for the [Fat Zebra](https://www.fatzebra.com.au) Online Payment Gateway (for Australian Merchants)
7
+
8
+ This is an unofficial fork of the Fat Zebra API client. This version has been patched to allow multiple accounts to be used simultaneously.
9
+
10
+ Version 3.1.0.1 of this gem aims to be a drop-in replacement for version 3.1.0 of the official gem.
11
+
12
+ It aims to maintain parity with the [official Fat Zebra API client](https://github.com/fatzebra/Ruby-Library).
13
+
14
+ Dependencies
15
+ ------------
16
+
17
+ * Ruby (tested on 2.3, 2.4, 2.5, 2.6)
18
+ * Rest Client
19
+
20
+ Installing
21
+ ----------
22
+
23
+ gem install fat_zebra_multi
24
+
25
+ Or in a Rails App (or similar, with Bundler), in your Gemfile:
26
+
27
+ gem "fat_zebra_multi"
28
+
29
+ Usage
30
+ -----
31
+
32
+ With one account:
33
+ ```ruby
34
+ require 'fat_zebra_multi'
35
+
36
+ # Configuration only needs to be done once, usually in your rails initializers
37
+ FatZebra.configure do |config|
38
+ config.username = 'TEST'
39
+ config.token = 'TEST'
40
+ end
41
+
42
+ purchase = FatZebra::Purchase.create(
43
+ amount: 10000,
44
+ card_holder: 'Bill Simpson',
45
+ card_number: '5123456789012346',
46
+ card_expiry: '05/2023',
47
+ cvv: '123',
48
+ reference: 'ORDER-23',
49
+ customer_ip: '203.99.87.4'
50
+ )
51
+
52
+ if purchase.successful?
53
+ puts "Transaction ID: #{purchase.id}"
54
+ else
55
+ abort "Error in transaction: #{purchase.errors}"
56
+ end
57
+ ```
58
+
59
+ With multiple accounts:
60
+ ```ruby
61
+ require 'fat_zebra_multi'
62
+
63
+ account_1 = FatZebra::Config.new(
64
+ username: 'USERNAME_1',
65
+ token: 'API_TOKEN_1',
66
+ )
67
+
68
+ account_2 = FatZebra::Config.new(
69
+ username: 'USERNAME_2',
70
+ token: 'API_TOKEN_2',
71
+ )
72
+
73
+ purchase = FatZebra::Purchase.create({
74
+ amount: 10000,
75
+ card_holder: 'Bill Simpson',
76
+ card_number: '5123456789012346',
77
+ card_expiry: '05/2023',
78
+ cvv: '123',
79
+ reference: 'ORDER-23',
80
+ customer_ip: '203.99.87.4'
81
+ }, {
82
+ account: account_1
83
+ })
84
+
85
+ if purchase.successful?
86
+ puts "Transaction ID: #{purchase.id}"
87
+ else
88
+ abort "Error in transaction: #{purchase.errors}"
89
+ end
90
+ ```
91
+
92
+
93
+ Documentation
94
+ -------------
95
+
96
+ Full API reference can be found at http://docs.fatzebra.com.au
97
+
98
+ Support
99
+ -------
100
+ If you have any issue with the Fat Zebra Ruby Client please contact us at support@fatzebra.com.au and we will be more then happy to help out. Alternatively you may raise an issue in github.
101
+
102
+ Pull Requests
103
+ -------------
104
+ If you would like to contribute to the plugin please fork the project, make your changes within a feature branch and then submit a pull request. All pull requests will be reviewed as soon as possible and integrated into the main branch if deemed suitable.
data/Rakefile ADDED
@@ -0,0 +1,11 @@
1
+ require 'bundler/gem_tasks'
2
+
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new('spec')
6
+
7
+ # If you want to make this the default task
8
+ task default: :spec
9
+
10
+ desc 'Run the unit tests (alias of `spec`)'
11
+ task test: :spec
@@ -0,0 +1,27 @@
1
+ lib = File.expand_path('lib', __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+
4
+ require 'fat_zebra/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = 'fat_zebra_multi'
8
+ s.version = FatZebra::VERSION
9
+ s.authors = ['Matthew Savage']
10
+ s.email = ['matt@amasses.net']
11
+ s.homepage = ''
12
+ s.summary = 'Unofficial fork of the Fat Zebra API client - integrate your Ruby app with Fat Zebra'
13
+ s.description = 'Provides integration with the Fat Zebra internet payment gateway (www.fatzebra.com.au), including purchase, refund, auth, capture and recurring billing functionality.'
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {spec}/*`.split("\n")
17
+ s.require_paths = %w[lib]
18
+
19
+ s.add_development_dependency 'pry'
20
+ s.add_development_dependency 'rake'
21
+ s.add_development_dependency 'rspec', '~> 3.6'
22
+ s.add_development_dependency 'rubocop', '~> 0.58.1'
23
+ s.add_development_dependency 'vcr', '~> 3.0'
24
+ s.add_development_dependency 'webmock', '~> 3.0'
25
+
26
+ s.required_ruby_version = '~> 2.3'
27
+ end
data/lib/fat_zebra.rb ADDED
@@ -0,0 +1,65 @@
1
+ # Libraries
2
+ require 'securerandom'
3
+ require 'json'
4
+ require 'ostruct'
5
+ require 'net/http'
6
+ require 'cgi'
7
+ require 'date'
8
+
9
+ require 'fat_zebra/version'
10
+ require 'fat_zebra/util'
11
+ require 'fat_zebra/config'
12
+ require 'fat_zebra/errors'
13
+ require 'fat_zebra/validation'
14
+ require 'fat_zebra/object_helper'
15
+ require 'fat_zebra/fat_zebra_object'
16
+ require 'fat_zebra/request'
17
+ require 'fat_zebra/api_helper'
18
+ require 'fat_zebra/api_resource'
19
+
20
+ # API Operations
21
+ require 'fat_zebra/api_operation/find'
22
+ require 'fat_zebra/api_operation/search'
23
+ require 'fat_zebra/api_operation/save'
24
+ require 'fat_zebra/api_operation/delete'
25
+ require 'fat_zebra/api_operation/void'
26
+
27
+ # API Resources
28
+ require 'fat_zebra/purchase'
29
+ require 'fat_zebra/information'
30
+ require 'fat_zebra/card'
31
+ require 'fat_zebra/refund'
32
+ require 'fat_zebra/payment_plan'
33
+ require 'fat_zebra/customer'
34
+ require 'fat_zebra/direct_debit'
35
+ require 'fat_zebra/direct_credit'
36
+ require 'fat_zebra/bank_account'
37
+ require 'fat_zebra/web_hook'
38
+ require 'fat_zebra/batch'
39
+
40
+ ##
41
+ # Implementation of the FatZebra
42
+ module FatZebra
43
+ class << self
44
+
45
+ ##
46
+ # @return [FatZebra::Config] configurations
47
+ attr_reader :configurations
48
+
49
+ ##
50
+ # Configures the FatZebra API
51
+ #
52
+ # @example Default configuration
53
+ # FatZebra.configure do |config|
54
+ # config.username = 'my-username'
55
+ # config.token = 'my-token'
56
+ # end
57
+ def configure
58
+ yield @configurations = FatZebra::Config.new
59
+
60
+ FatZebra.configurations.valid!
61
+ end
62
+
63
+ end
64
+
65
+ end
@@ -0,0 +1,91 @@
1
+ module FatZebra
2
+ ##
3
+ # == FatZebra \Helper
4
+ #
5
+ # Help for the api resource
6
+ module APIHelper
7
+
8
+ module ClassMethods
9
+
10
+ ##
11
+ # @return [String] resource path
12
+ def resource_path(path = nil)
13
+ (path || @resource_name || CGI.escape(resource_name)).to_s
14
+ end
15
+
16
+ ##
17
+ # @return [String] resource name
18
+ def resource_name
19
+ Util.underscore("#{class_name}s")
20
+ end
21
+
22
+ ##
23
+ # @return [String] the class name
24
+ def class_name
25
+ name.split('::').last
26
+ end
27
+
28
+ ##
29
+ # Send a request to the API
30
+ def request
31
+ raise NotImplementedError
32
+ end
33
+
34
+ def build_endpoint_url(base_url, path, params = nil, options = {})
35
+ host, port = base_url.split(':')
36
+ port = port.to_i if port
37
+
38
+ url_params = Util.compact(
39
+ host: host,
40
+ path: path,
41
+ port: port,
42
+ query: params
43
+ )
44
+
45
+ return URI::HTTPS.build(url_params) if options[:http_secure]
46
+ URI::HTTP.build(url_params)
47
+ end
48
+
49
+ def default_headers
50
+ {
51
+ headers: {
52
+ accept: 'application/json',
53
+ content_type: 'application/json'
54
+ }
55
+ }
56
+ end
57
+
58
+ end
59
+
60
+ ##
61
+ # @return [String] resource name
62
+ def resource_name
63
+ self.class.resource_name
64
+ end
65
+
66
+ ##
67
+ # @return [String] resource path
68
+ def resource_path(path = nil)
69
+ self.class.resource_path(path)
70
+ end
71
+
72
+ ##
73
+ # Send a request to the API
74
+ #
75
+ # @param [Symbol] method for the request
76
+ # @param [String] endpoint for the request
77
+ # @param [Hash] options
78
+ # @param [Hash] Payload
79
+ #
80
+ # @return [Hash] response
81
+ # @raise [FatZebra::RequestError] if the request is invalid
82
+ def request(method, resource_path, payload = {}, options = {})
83
+ self.class.request(method, resource_path, payload, options)
84
+ end
85
+
86
+ def self.included(base)
87
+ base.extend(ClassMethods)
88
+ end
89
+
90
+ end
91
+ end
@@ -0,0 +1,38 @@
1
+ module FatZebra
2
+ class APIOperation
3
+ ##
4
+ # == Delete a resource for the API
5
+ #
6
+ module Delete
7
+ module ClassMethods
8
+ ##
9
+ # Delete an API Resource
10
+ #
11
+ # @param [String] id for the request
12
+ # @param [Hash] Additional options for the request
13
+ #
14
+ # @return [FatZebra::Object] response from the API
15
+ def delete(id, options = {})
16
+ response = request(:delete, "#{resource_path}/#{id}", options)
17
+ initialize_from(response)
18
+ end
19
+ end
20
+
21
+ ##
22
+ # Delete an API Resources
23
+ #
24
+ # @param [Hash] Additional options for the request
25
+ #
26
+ # @return [FatZebra::Object] response from the API
27
+ def destroy(options = {})
28
+ response = request(:delete, "#{resource_path}/#{id}", {}, options)
29
+ update_from(response)
30
+ end
31
+
32
+ def self.included(base)
33
+ base.extend(ClassMethods)
34
+ end
35
+
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,30 @@
1
+ module FatZebra
2
+ class APIOperation
3
+ ##
4
+ # == Find a resource for the API
5
+ #
6
+ module Find
7
+ module ClassMethods
8
+
9
+ ##
10
+ # Find an API Resource
11
+ #
12
+ # @param [String] id for the request
13
+ # @param [Hash] params for the request
14
+ # @param [Hash] Additional options for the request
15
+ #
16
+ # @return [FatZebra::Object] response from the API
17
+ def find(id, params = {}, options = {})
18
+ response = request(:get, "#{resource_path}/#{id}", params, options)
19
+ initialize_from(response)
20
+ end
21
+
22
+ end
23
+
24
+ def self.included(base)
25
+ base.extend(ClassMethods)
26
+ end
27
+
28
+ end
29
+ end
30
+ end