fat_zebra_multi 3.1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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