judopay 2.1.0 → 2.1.3

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 (122) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +24 -23
  3. data/.rspec +1 -1
  4. data/.rubocop.yml +54 -51
  5. data/.travis.yml +6 -6
  6. data/CHANGELOG.md +17 -17
  7. data/Gemfile +4 -4
  8. data/LICENSE +21 -21
  9. data/README.md +96 -94
  10. data/Rakefile +22 -22
  11. data/judopay.gemspec +38 -38
  12. data/lib/certs/digicert_sha256_ca.pem +49 -49
  13. data/lib/certs/rapidssl_ca.crt +63 -63
  14. data/lib/faraday/judo_mashify.rb +11 -11
  15. data/lib/faraday/raise_http_exception.rb +19 -19
  16. data/lib/judopay.rb +70 -70
  17. data/lib/judopay/api.rb +10 -10
  18. data/lib/judopay/connection.rb +77 -77
  19. data/lib/judopay/core_ext/hash.rb +29 -29
  20. data/lib/judopay/core_ext/string.rb +32 -32
  21. data/lib/judopay/error.rb +117 -115
  22. data/lib/judopay/mash.rb +11 -11
  23. data/lib/judopay/model.rb +134 -134
  24. data/lib/judopay/models/android_payment.rb +26 -26
  25. data/lib/judopay/models/android_preauth.rb +8 -8
  26. data/lib/judopay/models/apple_payment.rb +26 -26
  27. data/lib/judopay/models/apple_preauth.rb +9 -9
  28. data/lib/judopay/models/card_address.rb +11 -11
  29. data/lib/judopay/models/card_payment.rb +33 -33
  30. data/lib/judopay/models/card_preauth.rb +11 -11
  31. data/lib/judopay/models/collection.rb +16 -16
  32. data/lib/judopay/models/encrypt_details.rb +18 -0
  33. data/lib/judopay/models/inner/pk_payment.rb +17 -17
  34. data/lib/judopay/models/inner/pk_payment_token.rb +13 -13
  35. data/lib/judopay/models/inner/transmitted_field.rb +39 -39
  36. data/lib/judopay/models/inner/wallet.rb +30 -30
  37. data/lib/judopay/models/market/collection.rb +10 -10
  38. data/lib/judopay/models/market/payment.rb +10 -10
  39. data/lib/judopay/models/market/preauth.rb +10 -10
  40. data/lib/judopay/models/market/refund.rb +10 -10
  41. data/lib/judopay/models/market/transaction.rb +10 -10
  42. data/lib/judopay/models/one_use_token_payment.rb +29 -0
  43. data/lib/judopay/models/payment.rb +8 -8
  44. data/lib/judopay/models/preauth.rb +8 -8
  45. data/lib/judopay/models/refund.rb +16 -16
  46. data/lib/judopay/models/register_card.rb +27 -27
  47. data/lib/judopay/models/save_card.rb +24 -25
  48. data/lib/judopay/models/token_payment.rb +30 -30
  49. data/lib/judopay/models/token_preauth.rb +10 -10
  50. data/lib/judopay/models/transaction.rb +8 -8
  51. data/lib/judopay/models/void.rb +19 -19
  52. data/lib/judopay/models/web_payments/payment.rb +28 -28
  53. data/lib/judopay/models/web_payments/preauth.rb +10 -10
  54. data/lib/judopay/models/web_payments/transaction.rb +19 -19
  55. data/lib/judopay/models/web_payments/web_payment_operation.rb +8 -8
  56. data/lib/judopay/null_logger.rb +9 -11
  57. data/lib/judopay/request.rb +50 -50
  58. data/lib/judopay/response.rb +7 -7
  59. data/lib/judopay/serializer.rb +27 -27
  60. data/lib/judopay/version.rb +4 -4
  61. data/spec/factories.rb +227 -208
  62. data/spec/faraday/response_spec.rb +27 -27
  63. data/spec/fixtures/card_payments/create.json +21 -21
  64. data/spec/fixtures/card_payments/create_3dsecure.json +7 -7
  65. data/spec/fixtures/card_payments/create_bad_request.json +12 -12
  66. data/spec/fixtures/card_payments/create_declined.json +23 -23
  67. data/spec/fixtures/card_payments/validate.json +4 -4
  68. data/spec/fixtures/token_payments/create.json +21 -21
  69. data/spec/fixtures/transactions/all.json +237 -237
  70. data/spec/fixtures/transactions/android_payment.json +26 -26
  71. data/spec/fixtures/transactions/apple_payment.json +26 -26
  72. data/spec/fixtures/transactions/find.json +22 -22
  73. data/spec/fixtures/transactions/find_not_found.json +4 -4
  74. data/spec/fixtures/transactions/register_card.json +28 -28
  75. data/spec/fixtures/transactions/save_card.json +27 -27
  76. data/spec/fixtures/transactions/void.json +26 -26
  77. data/spec/fixtures/web_payments/payments/create.json +3 -3
  78. data/spec/fixtures/web_payments/payments/find.json +38 -38
  79. data/spec/judopay/android_payment_spec.rb +74 -74
  80. data/spec/judopay/apple_payment_spec.rb +80 -80
  81. data/spec/judopay/card_address_spec.rb +10 -10
  82. data/spec/judopay/card_payment_spec.rb +51 -63
  83. data/spec/judopay/card_preauth_spec.rb +35 -35
  84. data/spec/judopay/collection_spec.rb +26 -26
  85. data/spec/judopay/core_ext/hash_spec.rb +24 -24
  86. data/spec/judopay/core_ext/string_spec.rb +16 -16
  87. data/spec/judopay/error_spec.rb +70 -70
  88. data/spec/judopay/judopay_spec.rb +19 -19
  89. data/spec/judopay/market/collection_spec.rb +26 -26
  90. data/spec/judopay/market/payment_spec.rb +14 -14
  91. data/spec/judopay/market/preauth_spec.rb +14 -14
  92. data/spec/judopay/market/refund_spec.rb +26 -26
  93. data/spec/judopay/market/transaction_spec.rb +14 -14
  94. data/spec/judopay/payment_spec.rb +14 -14
  95. data/spec/judopay/preauth_spec.rb +14 -14
  96. data/spec/judopay/refund_spec.rb +26 -26
  97. data/spec/judopay/register_card_spec.rb +24 -24
  98. data/spec/judopay/save_card_spec.rb +23 -23
  99. data/spec/judopay/token_payment_spec.rb +22 -22
  100. data/spec/judopay/token_preauth_spec.rb +22 -22
  101. data/spec/judopay/transaction_spec.rb +51 -51
  102. data/spec/judopay/void_spec.rb +24 -24
  103. data/spec/judopay/web_payments/payment_spec.rb +16 -16
  104. data/spec/judopay/web_payments/preauth_spec.rb +16 -16
  105. data/spec/judopay/web_payments/transaction_spec.rb +15 -15
  106. data/spec/spec_helper.rb +41 -41
  107. data/test/additions_payment_test.rb +30 -0
  108. data/test/authentication_test.rb +23 -23
  109. data/test/base/integration_base.rb +20 -20
  110. data/test/base/payments_tests.rb +47 -47
  111. data/test/base/token_payment_tests.rb +98 -98
  112. data/test/card_details_test.rb +21 -21
  113. data/test/configuration_test.rb +35 -35
  114. data/test/helper/assertion_helper.rb +29 -29
  115. data/test/payment_test.rb +10 -10
  116. data/test/preauth_test.rb +10 -10
  117. data/test/register_card_test.rb +42 -42
  118. data/test/save_card_test.rb +23 -0
  119. data/test/token_payment_test.rb +10 -10
  120. data/test/token_preauth_test.rb +10 -10
  121. data/test/void_test.rb +45 -45
  122. metadata +18 -12
@@ -0,0 +1,29 @@
1
+ require_relative '../model'
2
+ require_relative 'payment'
3
+ require_relative 'card_address'
4
+
5
+ module Judopay
6
+ class OneUseTokenPayment < Model
7
+ @resource_path = 'transactions/preauths'
8
+ @valid_api_methods = [:create]
9
+
10
+ attribute :one_use_token, String # required
11
+ attribute :your_consumer_reference, String # required
12
+ attribute :your_payment_reference, String # required
13
+ attribute :judo_id, String # required
14
+ attribute :amount, Float # required
15
+ attribute :currency, String # required
16
+ attribute :your_payment_meta_data, Hash
17
+ attribute :card_address, Judopay::CardAddress
18
+ attribute :mobile_number, String
19
+ attribute :email_address, String
20
+ attribute :client_details, Hash
21
+
22
+ validates_presence_of :one_use_token,
23
+ :your_consumer_reference,
24
+ :your_payment_reference,
25
+ :judo_id,
26
+ :amount,
27
+ :currency
28
+ end
29
+ end
@@ -1,8 +1,8 @@
1
- require_relative '../model'
2
-
3
- module Judopay
4
- class Payment < Model
5
- @resource_path = 'transactions/payments'
6
- @valid_api_methods = [:all]
7
- end
8
- end
1
+ require_relative '../model'
2
+
3
+ module Judopay
4
+ class Payment < Model
5
+ @resource_path = 'transactions/payments'
6
+ @valid_api_methods = [:all]
7
+ end
8
+ end
@@ -1,8 +1,8 @@
1
- require_relative '../model'
2
-
3
- module Judopay
4
- class Preauth < Model
5
- @resource_path = 'transactions/preauths'
6
- @valid_api_methods = [:all]
7
- end
8
- end
1
+ require_relative '../model'
2
+
3
+ module Judopay
4
+ class Preauth < Model
5
+ @resource_path = 'transactions/preauths'
6
+ @valid_api_methods = [:all]
7
+ end
8
+ end
@@ -1,16 +1,16 @@
1
- require_relative '../model'
2
-
3
- module Judopay
4
- class Refund < Model
5
- @resource_path = 'transactions/refunds'
6
- @valid_api_methods = [:all, :create, :validate]
7
-
8
- attribute :receipt_id, Integer
9
- attribute :amount, Float
10
- attribute :your_payment_reference, String
11
-
12
- validates_presence_of :receipt_id,
13
- :amount,
14
- :your_payment_reference
15
- end
16
- end
1
+ require_relative '../model'
2
+
3
+ module Judopay
4
+ class Refund < Model
5
+ @resource_path = 'transactions/refunds'
6
+ @valid_api_methods = [:all, :create]
7
+
8
+ attribute :receipt_id, Integer
9
+ attribute :amount, Float
10
+ attribute :your_payment_reference, String
11
+
12
+ validates_presence_of :receipt_id,
13
+ :amount,
14
+ :your_payment_reference
15
+ end
16
+ end
@@ -1,27 +1,27 @@
1
- require_relative '../model'
2
- require_relative 'payment'
3
- require_relative 'card_address'
4
-
5
- module Judopay
6
- class RegisterCard < Model
7
- @resource_path = 'transactions/registercard'
8
- @valid_api_methods = [:create]
9
-
10
- attribute :your_consumer_reference, String
11
- attribute :your_payment_reference, String
12
- attribute :card_number, String
13
- attribute :expiry_date, String
14
- attribute :cv2, String
15
- attribute :card_address, Judopay::CardAddress
16
- attribute :amount, Float
17
- attribute :currency, String
18
- attribute :judo_id, String
19
- attribute :your_payment_meta_data, Hash
20
-
21
- validates_presence_of :your_consumer_reference,
22
- :your_payment_reference,
23
- :card_number,
24
- :expiry_date,
25
- :cv2
26
- end
27
- end
1
+ require_relative '../model'
2
+ require_relative 'payment'
3
+ require_relative 'card_address'
4
+
5
+ module Judopay
6
+ class RegisterCard < Model
7
+ @resource_path = 'transactions/registercard'
8
+ @valid_api_methods = [:create]
9
+
10
+ attribute :your_consumer_reference, String
11
+ attribute :your_payment_reference, String
12
+ attribute :card_number, String
13
+ attribute :expiry_date, String
14
+ attribute :cv2, String
15
+ attribute :card_address, Judopay::CardAddress
16
+ attribute :amount, Float
17
+ attribute :currency, String
18
+ attribute :judo_id, String
19
+ attribute :your_payment_meta_data, Hash
20
+
21
+ validates_presence_of :your_consumer_reference,
22
+ :your_payment_reference,
23
+ :card_number,
24
+ :expiry_date,
25
+ :cv2
26
+ end
27
+ end
@@ -1,25 +1,24 @@
1
- require_relative '../model'
2
- require_relative 'payment'
3
- require_relative 'card_address'
4
-
5
- module Judopay
6
- class SaveCard < Model
7
- @resource_path = 'transactions/savecard'
8
- @valid_api_methods = [:create]
9
-
10
- attribute :your_consumer_reference, String
11
- attribute :judo_id, String
12
- attribute :card_number, String
13
- attribute :expiry_date, String
14
- attribute :string_date, String
15
- attribute :issue_number, String
16
- attribute :cv2, String
17
- attribute :card_address, Judopay::CardAddress
18
- attribute :currency, String
19
-
20
- validates_presence_of :your_consumer_reference,
21
- :card_number,
22
- :expiry_date,
23
- :cv2
24
- end
25
- end
1
+ require_relative '../model'
2
+ require_relative 'payment'
3
+ require_relative 'card_address'
4
+
5
+ module Judopay
6
+ class SaveCard < Model
7
+ @resource_path = 'transactions/savecard'
8
+ @valid_api_methods = [:create]
9
+
10
+ attribute :your_consumer_reference, String
11
+ attribute :judo_id, String
12
+ attribute :card_number, String
13
+ attribute :expiry_date, String
14
+ attribute :string_date, String
15
+ attribute :issue_number, String
16
+ attribute :cv2, String
17
+ attribute :card_address, Judopay::CardAddress
18
+ attribute :currency, String
19
+
20
+ validates_presence_of :your_consumer_reference,
21
+ :card_number,
22
+ :expiry_date
23
+ end
24
+ end
@@ -1,30 +1,30 @@
1
- require_relative '../model'
2
- require_relative 'payment'
3
- require_relative 'card_address'
4
-
5
- module Judopay
6
- class TokenPayment < Model
7
- @resource_path = 'transactions/payments'
8
- @valid_api_methods = [:create]
9
-
10
- attribute :your_consumer_reference, String
11
- attribute :your_payment_reference, String
12
- attribute :your_payment_meta_data, Hash
13
- attribute :judo_id, String
14
- attribute :amount, Float
15
- attribute :consumer_token, String
16
- attribute :card_token, String
17
- attribute :cv2, String
18
- attribute :mobile_number, String
19
- attribute :email_address, String
20
- attribute :currency, String
21
- attribute :client_details, Hash
22
-
23
- validates_presence_of :your_consumer_reference,
24
- :your_payment_reference,
25
- :judo_id,
26
- :amount,
27
- :consumer_token,
28
- :card_token
29
- end
30
- end
1
+ require_relative '../model'
2
+ require_relative 'payment'
3
+ require_relative 'card_address'
4
+
5
+ module Judopay
6
+ class TokenPayment < Model
7
+ @resource_path = 'transactions/payments'
8
+ @valid_api_methods = [:create]
9
+
10
+ attribute :your_consumer_reference, String
11
+ attribute :your_payment_reference, String
12
+ attribute :your_payment_meta_data, Hash
13
+ attribute :judo_id, String
14
+ attribute :amount, Float
15
+ attribute :consumer_token, String
16
+ attribute :card_token, String
17
+ attribute :cv2, String
18
+ attribute :mobile_number, String
19
+ attribute :email_address, String
20
+ attribute :currency, String
21
+ attribute :client_details, Hash
22
+
23
+ validates_presence_of :your_consumer_reference,
24
+ :your_payment_reference,
25
+ :judo_id,
26
+ :amount,
27
+ :consumer_token,
28
+ :card_token
29
+ end
30
+ end
@@ -1,10 +1,10 @@
1
- require_relative '../model'
2
- require_relative 'token_payment'
3
-
4
- module Judopay
5
- # Inherit from TokenPayment - attributes are identical
6
- class TokenPreauth < TokenPayment
7
- @resource_path = 'transactions/preauths'
8
- @valid_api_methods = [:create]
9
- end
10
- end
1
+ require_relative '../model'
2
+ require_relative 'token_payment'
3
+
4
+ module Judopay
5
+ # Inherit from TokenPayment - attributes are identical
6
+ class TokenPreauth < TokenPayment
7
+ @resource_path = 'transactions/preauths'
8
+ @valid_api_methods = [:create]
9
+ end
10
+ end
@@ -1,8 +1,8 @@
1
- require_relative '../model'
2
-
3
- module Judopay
4
- class Transaction < Model
5
- @resource_path = 'transactions'
6
- @valid_api_methods = [:all, :find]
7
- end
8
- end
1
+ require_relative '../model'
2
+
3
+ module Judopay
4
+ class Transaction < Model
5
+ @resource_path = 'transactions'
6
+ @valid_api_methods = [:all, :find]
7
+ end
8
+ end
@@ -1,19 +1,19 @@
1
- require_relative '../model'
2
-
3
- module Judopay
4
- class Void < Model
5
- @resource_path = 'transactions/voids'
6
- @valid_api_methods = [:create, :validate]
7
-
8
- attribute :judo_id, String
9
- attribute :receipt_id, Integer
10
- attribute :amount, Float
11
- attribute :your_payment_reference, String
12
- attribute :your_payment_meta_data, Hash
13
- attribute :currency, String
14
-
15
- validates_presence_of :receipt_id,
16
- :amount,
17
- :judo_id
18
- end
19
- end
1
+ require_relative '../model'
2
+
3
+ module Judopay
4
+ class Void < Model
5
+ @resource_path = 'transactions/voids'
6
+ @valid_api_methods = [:create]
7
+
8
+ attribute :judo_id, String
9
+ attribute :receipt_id, Integer
10
+ attribute :amount, Float
11
+ attribute :your_payment_reference, String
12
+ attribute :your_payment_meta_data, Hash
13
+ attribute :currency, String
14
+
15
+ validates_presence_of :receipt_id,
16
+ :amount,
17
+ :judo_id
18
+ end
19
+ end
@@ -1,28 +1,28 @@
1
- require_relative '../../model'
2
- require_relative 'web_payment_operation'
3
-
4
- module Judopay
5
- module WebPayments
6
- class Payment < Model
7
- @resource_path = 'webpayments/payments'
8
- @valid_api_methods = [:create]
9
-
10
- attribute :judo_id, String
11
- attribute :amount, Float
12
- attribute :partner_service_fee, Float
13
- attribute :your_consumer_reference, String
14
- attribute :your_payment_reference, String
15
- attribute :your_payment_meta_data, Hash
16
- attribute :client_ip_address, String
17
- attribute :client_user_agent, String
18
- attribute :currency, String
19
- attribute :client_details, Hash
20
- attribute :web_payment_operation, Judopay::WebPayments::WebPaymentOperation
21
-
22
- validates_presence_of :judo_id,
23
- :your_consumer_reference,
24
- :your_payment_reference,
25
- :amount
26
- end
27
- end
28
- end
1
+ require_relative '../../model'
2
+ require_relative 'web_payment_operation'
3
+
4
+ module Judopay
5
+ module WebPayments
6
+ class Payment < Model
7
+ @resource_path = 'webpayments/payments'
8
+ @valid_api_methods = [:create]
9
+
10
+ attribute :judo_id, String
11
+ attribute :amount, Float
12
+ attribute :partner_service_fee, Float
13
+ attribute :your_consumer_reference, String
14
+ attribute :your_payment_reference, String
15
+ attribute :your_payment_meta_data, Hash
16
+ attribute :client_ip_address, String
17
+ attribute :client_user_agent, String
18
+ attribute :currency, String
19
+ attribute :client_details, Hash
20
+ attribute :web_payment_operation, Judopay::WebPayments::WebPaymentOperation
21
+
22
+ validates_presence_of :judo_id,
23
+ :your_consumer_reference,
24
+ :your_payment_reference,
25
+ :amount
26
+ end
27
+ end
28
+ end
@@ -1,10 +1,10 @@
1
- require_relative '../../model'
2
-
3
- module Judopay
4
- module WebPayments
5
- class Preauth < Payment
6
- @resource_path = 'webpayments/preauths'
7
- @valid_api_methods = [:create]
8
- end
9
- end
10
- end
1
+ require_relative '../../model'
2
+
3
+ module Judopay
4
+ module WebPayments
5
+ class Preauth < Payment
6
+ @resource_path = 'webpayments/preauths'
7
+ @valid_api_methods = [:create]
8
+ end
9
+ end
10
+ end
@@ -1,19 +1,19 @@
1
- require_relative '../../model'
2
-
3
- module Judopay
4
- module WebPayments
5
- class Transaction < Model
6
- @resource_path = 'webpayments'
7
- @valid_api_methods = [:find]
8
-
9
- # Find a specific web payment given a valid payment reference
10
- #
11
- # @param reference [String] Payment reference
12
- # @return [Judopay::Mash] Mash of the API response
13
- def self.find(reference)
14
- api = Judopay::API.new
15
- api.get(@resource_path + '/' + reference.to_s)
16
- end
17
- end
18
- end
19
- end
1
+ require_relative '../../model'
2
+
3
+ module Judopay
4
+ module WebPayments
5
+ class Transaction < Model
6
+ @resource_path = 'webpayments'
7
+ @valid_api_methods = [:find]
8
+
9
+ # Find a specific web payment given a valid payment reference
10
+ #
11
+ # @param reference [String] Payment reference
12
+ # @return [Judopay::Mash] Mash of the API response
13
+ def self.find(reference)
14
+ api = Judopay::API.new
15
+ api.get(@resource_path + '/' + reference.to_s)
16
+ end
17
+ end
18
+ end
19
+ end