genesis_ruby 0.2.3 → 0.2.5

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 (123) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +78 -0
  3. data/Gemfile.lock +14 -14
  4. data/README.md +78 -0
  5. data/VERSION +1 -1
  6. data/lib/genesis_ruby/api/constants/currencies/iso4217.rb +6 -0
  7. data/lib/genesis_ruby/api/constants/non_financial/kyc/document_types.rb +49 -0
  8. data/lib/genesis_ruby/api/constants/non_financial/kyc/genders.rb +22 -0
  9. data/lib/genesis_ruby/api/constants/transactions/parameters/african_mobile_operators.rb +37 -0
  10. data/lib/genesis_ruby/api/constants/transactions/parameters/customer_identification/customer_identification_owner.rb +24 -0
  11. data/lib/genesis_ruby/api/constants/transactions/parameters/customer_identification/customer_identification_subtype.rb +24 -0
  12. data/lib/genesis_ruby/api/constants/transactions/parameters/customer_identification/customer_identification_type.rb +63 -0
  13. data/lib/genesis_ruby/api/constants/transactions/parameters/digital_asset_types.rb +31 -0
  14. data/lib/genesis_ruby/api/constants/transactions/parameters/non_financial/externally_processed.rb +22 -0
  15. data/lib/genesis_ruby/api/constants/transactions/parameters/non_financial/processing_type.rb +22 -0
  16. data/lib/genesis_ruby/api/constants/transactions/parameters/non_financial/sca_exemptions.rb +25 -0
  17. data/lib/genesis_ruby/api/constants/transactions/parameters/online_banking/iframe_targets.rb +26 -0
  18. data/lib/genesis_ruby/api/constants/transactions/parameters/purpose_of_payment.rb +136 -0
  19. data/lib/genesis_ruby/api/constants/transactions/parameters/source_of_funds.rb +34 -0
  20. data/lib/genesis_ruby/api/mixins/requests/digital_asset_type_attributes.rb +26 -0
  21. data/lib/genesis_ruby/api/mixins/requests/financial/african_mobile_attributes.rb +30 -0
  22. data/lib/genesis_ruby/api/mixins/requests/financial/beneficiary_attributes.rb +38 -0
  23. data/lib/genesis_ruby/api/mixins/requests/financial/cards/tokenization_params_attributes.rb +36 -0
  24. data/lib/genesis_ruby/api/mixins/requests/financial/customer_account_attributes.rb +21 -0
  25. data/lib/genesis_ruby/api/mixins/requests/financial/customer_identification_attributes.rb +82 -0
  26. data/lib/genesis_ruby/api/mixins/requests/financial/gift_cards_attributes.rb +26 -0
  27. data/lib/genesis_ruby/api/mixins/requests/financial/online_banking_payments/payer_attributes.rb +65 -0
  28. data/lib/genesis_ruby/api/mixins/requests/financial/preauthorization_attributes.rb +25 -0
  29. data/lib/genesis_ruby/api/mixins/requests/financial/purpose_of_payment_attributes.rb +29 -0
  30. data/lib/genesis_ruby/api/mixins/requests/financial/source_of_funds_attributes.rb +38 -0
  31. data/lib/genesis_ruby/api/mixins/requests/financial/travel_data/airline_itinerary_attributes.rb +1 -1
  32. data/lib/genesis_ruby/api/mixins/requests/non_financial/fx/id_attributes.rb +28 -0
  33. data/lib/genesis_ruby/api/mixins/requests/non_financial/fx/tier_id_attributes.rb +28 -0
  34. data/lib/genesis_ruby/api/mixins/requests/non_financial/kyc/customer_information_attributes.rb +62 -0
  35. data/lib/genesis_ruby/api/mixins/requests/non_financial/mode_attributes.rb +24 -0
  36. data/lib/genesis_ruby/api/mixins/requests/non_financial/tokenization/card_data_attributes.rb +62 -0
  37. data/lib/genesis_ruby/api/mixins/requests/non_financial/tokenization/token_attributes.rb +23 -0
  38. data/lib/genesis_ruby/api/mixins/requests/non_financial/tokenization/tokenization_attributes.rb +51 -0
  39. data/lib/genesis_ruby/api/request.rb +7 -0
  40. data/lib/genesis_ruby/api/requests/base/consumer.rb +24 -0
  41. data/lib/genesis_ruby/api/requests/base/financial.rb +10 -1
  42. data/lib/genesis_ruby/api/requests/base/financials/credit_card.rb +9 -9
  43. data/lib/genesis_ruby/api/requests/base/financials/south_american_payments.rb +11 -14
  44. data/lib/genesis_ruby/api/requests/base/non_financial/kyc/base.rb +33 -0
  45. data/lib/genesis_ruby/api/requests/base/reference.rb +3 -3
  46. data/lib/genesis_ruby/api/requests/financial/Preauthorizations/incremental_authorize.rb +24 -0
  47. data/lib/genesis_ruby/api/requests/financial/cards/authorize.rb +5 -1
  48. data/lib/genesis_ruby/api/requests/financial/cards/authorize3d.rb +5 -1
  49. data/lib/genesis_ruby/api/requests/financial/cards/bancontact.rb +8 -9
  50. data/lib/genesis_ruby/api/requests/financial/cards/credit.rb +39 -0
  51. data/lib/genesis_ruby/api/requests/financial/cards/payout.rb +72 -0
  52. data/lib/genesis_ruby/api/requests/financial/cards/sale.rb +3 -1
  53. data/lib/genesis_ruby/api/requests/financial/cards/sale3d.rb +3 -1
  54. data/lib/genesis_ruby/api/requests/financial/cash_payments/cash.rb +13 -14
  55. data/lib/genesis_ruby/api/requests/financial/cash_payments/pix.rb +23 -25
  56. data/lib/genesis_ruby/api/requests/financial/crypto/bit_pay/payout.rb +52 -0
  57. data/lib/genesis_ruby/api/requests/financial/crypto/bit_pay/refund.rb +36 -0
  58. data/lib/genesis_ruby/api/requests/financial/crypto/bit_pay/sale.rb +55 -0
  59. data/lib/genesis_ruby/api/requests/financial/gift_cards/fashioncheque.rb +47 -0
  60. data/lib/genesis_ruby/api/requests/financial/gift_cards/intersolve.rb +46 -0
  61. data/lib/genesis_ruby/api/requests/financial/gift_cards/tcs.rb +47 -0
  62. data/lib/genesis_ruby/api/requests/financial/mobile/african_mobile_sale.rb +81 -0
  63. data/lib/genesis_ruby/api/requests/financial/mobile/apple_pay.rb +18 -20
  64. data/lib/genesis_ruby/api/requests/financial/mobile/google_pay.rb +20 -24
  65. data/lib/genesis_ruby/api/requests/financial/mobile/russian_mobile_sale.rb +55 -0
  66. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/banco_do_brasil.rb +11 -14
  67. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/eps.rb +9 -10
  68. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/idebit/pay_in.rb +11 -18
  69. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/insta_debit/pay_in.rb +61 -0
  70. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/insta_debit/pay_out.rb +24 -0
  71. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/multibanco.rb +48 -0
  72. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/my_bank.rb +47 -0
  73. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/online_banking/pay_in.rb +17 -18
  74. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/online_banking/pay_out.rb +33 -38
  75. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/pay_u.rb +61 -0
  76. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/post_finance.rb +53 -0
  77. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/safety_pay.rb +57 -0
  78. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/sofort.rb +63 -0
  79. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/trustly_sale.rb +75 -0
  80. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/upi.rb +54 -0
  81. data/lib/genesis_ruby/api/requests/financial/online_banking_payments/wechat.rb +11 -14
  82. data/lib/genesis_ruby/api/requests/financial/sdd/sale.rb +13 -17
  83. data/lib/genesis_ruby/api/requests/financial/void.rb +12 -5
  84. data/lib/genesis_ruby/api/requests/financial/vouchers/neosurf.rb +61 -0
  85. data/lib/genesis_ruby/api/requests/financial/wallets/alipay.rb +10 -13
  86. data/lib/genesis_ruby/api/requests/financial/wallets/pay_pal.rb +18 -20
  87. data/lib/genesis_ruby/api/requests/non_financial/consumers/create.rb +44 -0
  88. data/lib/genesis_ruby/api/requests/non_financial/consumers/disable.rb +40 -0
  89. data/lib/genesis_ruby/api/requests/non_financial/consumers/enable.rb +40 -0
  90. data/lib/genesis_ruby/api/requests/non_financial/consumers/get_cards.rb +40 -0
  91. data/lib/genesis_ruby/api/requests/non_financial/consumers/retrieve.rb +40 -0
  92. data/lib/genesis_ruby/api/requests/non_financial/consumers/update.rb +45 -0
  93. data/lib/genesis_ruby/api/requests/non_financial/fraud/chargeback/date_range.rb +82 -0
  94. data/lib/genesis_ruby/api/requests/non_financial/fraud/chargeback/transaction.rb +52 -0
  95. data/lib/genesis_ruby/api/requests/non_financial/fraud/reports/date_range.rb +108 -0
  96. data/lib/genesis_ruby/api/requests/non_financial/fraud/reports/transaction.rb +52 -0
  97. data/lib/genesis_ruby/api/requests/non_financial/fraud/retrieval/date_range.rb +81 -0
  98. data/lib/genesis_ruby/api/requests/non_financial/fraud/retrieval/transaction.rb +52 -0
  99. data/lib/genesis_ruby/api/requests/non_financial/fx/get_rate.rb +55 -0
  100. data/lib/genesis_ruby/api/requests/non_financial/fx/get_rates.rb +53 -0
  101. data/lib/genesis_ruby/api/requests/non_financial/fx/get_tier.rb +53 -0
  102. data/lib/genesis_ruby/api/requests/non_financial/fx/get_tiers.rb +35 -0
  103. data/lib/genesis_ruby/api/requests/non_financial/fx/search_rate.rb +61 -0
  104. data/lib/genesis_ruby/api/requests/non_financial/kyc/consumer_registration/create.rb +99 -0
  105. data/lib/genesis_ruby/api/requests/non_financial/processed_transactions/date_range.rb +68 -0
  106. data/lib/genesis_ruby/api/requests/non_financial/processed_transactions/post_date_range.rb +72 -0
  107. data/lib/genesis_ruby/api/requests/non_financial/processed_transactions/transaction.rb +48 -0
  108. data/lib/genesis_ruby/api/requests/non_financial/sca/checker.rb +77 -0
  109. data/lib/genesis_ruby/api/requests/non_financial/tokenization/cryptogram.rb +46 -0
  110. data/lib/genesis_ruby/api/requests/non_financial/tokenization/delete_token.rb +43 -0
  111. data/lib/genesis_ruby/api/requests/non_financial/tokenization/detokenize.rb +43 -0
  112. data/lib/genesis_ruby/api/requests/non_financial/tokenization/get_card.rb +43 -0
  113. data/lib/genesis_ruby/api/requests/non_financial/tokenization/tokenize.rb +45 -0
  114. data/lib/genesis_ruby/api/requests/non_financial/tokenization/update_token.rb +45 -0
  115. data/lib/genesis_ruby/api/requests/non_financial/tokenization/validate_token.rb +43 -0
  116. data/lib/genesis_ruby/api/requests/wpf/create.rb +3 -1
  117. data/lib/genesis_ruby/configuration.rb +4 -0
  118. data/lib/genesis_ruby/dependencies.rb +2 -0
  119. data/lib/genesis_ruby/utils/country.rb +272 -0
  120. data/lib/genesis_ruby/utils/formatters/response/formats/timestamp.rb +1 -1
  121. data/lib/genesis_ruby/utils/money/conversions/amount_to_exponent.rb +1 -4
  122. data/lib/genesis_ruby/version.rb +1 -1
  123. metadata +87 -2
@@ -0,0 +1,53 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Financial
5
+ module OnlineBankingPayments
6
+ # PostFinance is an online banking provider in Switzerland
7
+ class PostFinance < Base::Financial
8
+
9
+ include Api::Mixins::Requests::AddressInfoAttributes
10
+ include Api::Mixins::Requests::Financial::AsyncAttributes
11
+ include Api::Mixins::Requests::Financial::PendingPaymentAttributes
12
+
13
+ protected
14
+
15
+ # PostFinance transaction type
16
+ def transaction_type
17
+ Api::Constants::Transactions::POST_FINANCE
18
+ end
19
+
20
+ # PostFinance field validations
21
+ def init_field_validations # rubocop:disable Metrics/MethodLength
22
+ super
23
+
24
+ required_fields.push *%i[
25
+ transaction_id
26
+ return_success_url
27
+ return_failure_url
28
+ amount
29
+ currency
30
+ billing_country
31
+ ]
32
+
33
+ field_values.merge! currency: %w(EUR CHF),
34
+ billing_country: 'CH'
35
+ end
36
+
37
+ # PostFinance request structure
38
+ def payment_transaction_structure
39
+ {
40
+ return_success_url: return_success_url,
41
+ return_failure_url: return_failure_url,
42
+ return_pending_url: return_pending_url,
43
+ billing_address: billing_address_parameters_structure,
44
+ shipping_address: shipping_address_parameters_structure
45
+ }
46
+ end
47
+
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,57 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Financial
5
+ module OnlineBankingPayments
6
+ # SafetyPay, bank transfer payment method, popular in Germany
7
+ class SafetyPay < Requests::Base::Financial
8
+
9
+ include Api::Mixins::Requests::CustomerAddress::BillingInfoAttributes
10
+ include Api::Mixins::Requests::CustomerAddress::ShippingInfoAttributes
11
+ include Api::Mixins::Requests::CustomerAddress::CustomerInfoAttributes
12
+ include Api::Mixins::Requests::Financial::AsyncAttributes
13
+ include Api::Mixins::Requests::Financial::PendingPaymentAttributes
14
+
15
+ protected
16
+
17
+ # SafetyPay transaction type
18
+ def transaction_type
19
+ Api::Constants::Transactions::SAFETYPAY
20
+ end
21
+
22
+ # SafetyPay field validation
23
+ def init_field_validations # rubocop:disable Metrics/MethodLength
24
+ super
25
+
26
+ required_fields.push *%i[
27
+ transaction_id
28
+ return_success_url
29
+ return_failure_url
30
+ amount
31
+ currency
32
+ customer_email
33
+ billing_country
34
+ ]
35
+
36
+ field_values.merge! currency: %w(EUR USD),
37
+ billing_country: %w(AT BE BR CL CO DE EC ES MX NL PE PR)
38
+ end
39
+
40
+ # SafetyPay request structure
41
+ def payment_transaction_structure
42
+ {
43
+ return_success_url: return_success_url,
44
+ return_failure_url: return_failure_url,
45
+ return_pending_url: return_pending_url,
46
+ customer_email: customer_email,
47
+ billing_address: billing_address_parameters_structure,
48
+ shipping_address: shipping_address_parameters_structure
49
+ }
50
+ end
51
+
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,63 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Financial
5
+ module OnlineBankingPayments
6
+ # Sofort, bank transfer payment method, popular in Germany
7
+ class Sofort < Requests::Base::Financial
8
+
9
+ include Api::Mixins::Requests::CustomerAddress::BillingInfoAttributes
10
+ include Api::Mixins::Requests::CustomerAddress::ShippingInfoAttributes
11
+ include Api::Mixins::Requests::CustomerAddress::CustomerInfoAttributes
12
+ include Api::Mixins::Requests::Financial::AsyncAttributes
13
+ include Api::Mixins::Requests::Financial::BankAttributes
14
+ include Api::Mixins::Requests::Financial::PendingPaymentAttributes
15
+ include Api::Mixins::Requests::Financial::NotificationAttributes
16
+
17
+ protected
18
+
19
+ # Sofort transaction type
20
+ def transaction_type
21
+ Api::Constants::Transactions::SOFORT
22
+ end
23
+
24
+ # Sofort field validation
25
+ def init_field_validations # rubocop:disable Metrics/MethodLength
26
+ super
27
+
28
+ required_fields.push *%i[
29
+ transaction_id
30
+ remote_ip
31
+ return_success_url
32
+ return_failure_url
33
+ amount
34
+ currency
35
+ customer_email
36
+ billing_country
37
+ ]
38
+
39
+ field_values.merge! billing_country: %w(AT BE DE IT NL PL ES CH)
40
+ end
41
+
42
+ # Sofort request structure
43
+ def payment_transaction_structure # rubocop:disable Metrics/MethodLength
44
+ {
45
+ notification_url: notification_url,
46
+ return_success_url: return_success_url,
47
+ return_failure_url: return_failure_url,
48
+ return_pending_url: return_pending_url,
49
+ customer_email: customer_email,
50
+ customer_phone: customer_phone,
51
+ iban: iban,
52
+ bic: bic,
53
+ billing_address: billing_address_parameters_structure,
54
+ shipping_address: shipping_address_parameters_structure
55
+ }
56
+ end
57
+
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,75 @@
1
+ require 'genesis_ruby/api/constants/transactions/parameters/online_banking/iframe_targets'
2
+
3
+ module GenesisRuby
4
+ module Api
5
+ module Requests
6
+ module Financial
7
+ module OnlineBankingPayments
8
+ # Online Banking TrustlySale transaction class
9
+ class TrustlySale < Base::Financial
10
+
11
+ include Api::Mixins::Requests::AddressInfoAttributes
12
+ include Api::Mixins::Requests::BirthDateAttributes
13
+ include Api::Mixins::Requests::Financial::AsyncAttributes
14
+ include Api::Mixins::Requests::Financial::Business::BusinessAttributes
15
+
16
+ attr_accessor :account_id, :user_id
17
+ attr_reader :return_success_url_target
18
+
19
+ # Allowed values for return_success_url_target
20
+ def return_success_url_target=(value)
21
+ allowed_options attribute: __method__,
22
+ allowed: Constants::Transactions::Parameters::OnlineBanking::IframeTargets.all,
23
+ value: value,
24
+ allow_empty: true
25
+ end
26
+
27
+ protected
28
+
29
+ # TrustlySale transaction type
30
+ def transaction_type
31
+ Api::Constants::Transactions::TRUSTLY_SALE
32
+ end
33
+
34
+ # TrustlySale field validations
35
+ def init_field_validations # rubocop:disable Metrics/MethodLength
36
+ super
37
+
38
+ required_fields.push *%i[
39
+ transaction_id
40
+ remote_ip
41
+ return_success_url
42
+ return_failure_url
43
+ amount
44
+ currency
45
+ customer_email
46
+ billing_country
47
+ account_id
48
+ ]
49
+
50
+ field_values.merge! billing_country: %w(AT BE CZ DK EE FI DE LV LT NL NO PL SK ES SE GB)
51
+ end
52
+
53
+ # TrustlySale parameters structure
54
+ def payment_transaction_structure # rubocop:disable Metrics/MethodLength
55
+ {
56
+ return_success_url: return_success_url,
57
+ return_failure_url: return_failure_url,
58
+ return_success_url_target: return_success_url_target,
59
+ customer_email: customer_email,
60
+ customer_phone: customer_phone,
61
+ user_id: user_id,
62
+ birth_date: birth_date,
63
+ billing_address: billing_address_parameters_structure,
64
+ shipping_address: shipping_address_parameters_structure,
65
+ business_attributes: business_attributes_structure,
66
+ account_id: account_id
67
+ }
68
+ end
69
+
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,54 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Financial
5
+ module OnlineBankingPayments
6
+ # Online Banking UPI transaction class
7
+ class Upi < Base::Financial
8
+
9
+ include Api::Mixins::Requests::AddressInfoAttributes
10
+ include Api::Mixins::Requests::DocumentAttributes
11
+ include Api::Mixins::Requests::Financial::AsyncAttributes
12
+ include Api::Mixins::Requests::Financial::OnlineBankingPayments::VirtualPaymentAddressAttributes
13
+
14
+ attr_accessor :user_category
15
+
16
+ protected
17
+
18
+ # Upi transaction type
19
+ def transaction_type
20
+ Api::Constants::Transactions::UPI
21
+ end
22
+
23
+ # Upi field validations
24
+ def init_field_validations
25
+ super
26
+
27
+ required_fields.push *%i[
28
+ transaction_id return_success_url return_failure_url amount currency billing_country
29
+ ]
30
+
31
+ field_values.merge! currency: 'INR'
32
+ end
33
+
34
+ # Upi parameters structure
35
+ def payment_transaction_structure # rubocop:disable Metrics/MethodLength
36
+ {
37
+ return_success_url: return_success_url,
38
+ return_failure_url: return_failure_url,
39
+ customer_email: customer_email,
40
+ customer_phone: customer_phone,
41
+ document_id: document_id,
42
+ virtual_payment_address: virtual_payment_address,
43
+ user_category: user_category,
44
+ billing_address: billing_address_parameters_structure,
45
+ shipping_address: shipping_address_parameters_structure
46
+ }
47
+ end
48
+
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -8,7 +8,6 @@ module GenesisRuby
8
8
  class Wechat < Base::Financial
9
9
 
10
10
  include Api::Mixins::Requests::AddressInfoAttributes
11
- include Api::Mixins::Requests::Financial::PaymentAttributes
12
11
  include Api::Mixins::Requests::Financial::AsyncAttributes
13
12
 
14
13
  attr_accessor :product_code, :product_num, :product_desc
@@ -30,19 +29,17 @@ module GenesisRuby
30
29
 
31
30
  # WeChat transaction request structure
32
31
  def payment_transaction_structure # rubocop:disable Metrics/MethodLength
33
- payment_attributes_structure.merge(
34
- {
35
- return_success_url: return_success_url,
36
- return_failure_url: return_failure_url,
37
- product_code: product_code,
38
- product_num: product_num,
39
- product_desc: product_desc,
40
- customer_email: customer_email,
41
- customer_phone: customer_phone,
42
- billing_address: billing_address_parameters_structure,
43
- shipping_address: shipping_address_parameters_structure
44
- }
45
- )
32
+ {
33
+ return_success_url: return_success_url,
34
+ return_failure_url: return_failure_url,
35
+ product_code: product_code,
36
+ product_num: product_num,
37
+ product_desc: product_desc,
38
+ customer_email: customer_email,
39
+ customer_phone: customer_phone,
40
+ billing_address: billing_address_parameters_structure,
41
+ shipping_address: shipping_address_parameters_structure
42
+ }
46
43
  end
47
44
 
48
45
  end
@@ -10,7 +10,6 @@ module GenesisRuby
10
10
  include Api::Mixins::Requests::CustomerAddress::ShippingInfoAttributes
11
11
  include Api::Mixins::Requests::Financial::AsyncAttributes
12
12
  include Api::Mixins::Requests::Financial::BankAttributes
13
- include Api::Mixins::Requests::Financial::PaymentAttributes
14
13
  include Api::Mixins::Requests::Financial::PendingPaymentAttributes
15
14
  include Api::Mixins::Requests::Financial::DynamicDescriptorAttributes
16
15
 
@@ -31,26 +30,23 @@ module GenesisRuby
31
30
  transaction_id usage amount currency iban billing_first_name billing_last_name billing_country
32
31
  ]
33
32
 
34
- field_values.merge! currency: Api::Constants::Currencies::Iso4217.all.map(&:upcase),
35
- billing_country: %w(AT BE CY EE FI FR DE GR IE IT LV LT LU MT MC NL PT SK SM SI ES)
33
+ field_values.merge! billing_country: %w(AT BE CY EE FI FR DE GR IE IT LV LT LU MT MC NL PT SK SM SI ES)
36
34
  end
37
35
 
38
36
  # SDD Sale request structure
39
37
  def payment_transaction_structure # rubocop:disable Metrics/MethodLength
40
- payment_attributes_structure.merge(
41
- {
42
- iban: iban,
43
- bic: bic,
44
- company_name: company_name,
45
- mandate_reference: mandate_reference,
46
- return_success_url: return_success_url,
47
- return_failure_url: return_failure_url,
48
- return_pending_url: return_pending_url,
49
- billing_address: billing_address_parameters_structure,
50
- shipping_address: shipping_address_parameters_structure,
51
- dynamic_descriptor_params: dynamic_descriptor_structure
52
- }
53
- )
38
+ {
39
+ iban: iban,
40
+ bic: bic,
41
+ company_name: company_name,
42
+ mandate_reference: mandate_reference,
43
+ return_success_url: return_success_url,
44
+ return_failure_url: return_failure_url,
45
+ return_pending_url: return_pending_url,
46
+ billing_address: billing_address_parameters_structure,
47
+ shipping_address: shipping_address_parameters_structure,
48
+ dynamic_descriptor_params: dynamic_descriptor_structure
49
+ }
54
50
  end
55
51
 
56
52
  end
@@ -3,8 +3,9 @@ module GenesisRuby
3
3
  module Requests
4
4
  module Financial
5
5
  # Void or undo payment transaction request
6
- class Void < Base::Financial
6
+ class Void < Request
7
7
 
8
+ include Mixins::Requests::Financial::BaseAttributes
8
9
  include Mixins::Requests::Financial::ReferenceAttributes
9
10
 
10
11
  protected
@@ -18,10 +19,16 @@ module GenesisRuby
18
19
  required_fields.push *%i[transaction_id reference_id]
19
20
  end
20
21
 
21
- # Void transaction request structure
22
- def payment_transaction_structure
23
- {
24
- reference_id: reference_id
22
+ # Returns the Request transaction structure
23
+ def populate_structure
24
+ @tree_structure = {
25
+ payment_transaction: {
26
+ transaction_type: transaction_type,
27
+ transaction_id: transaction_id,
28
+ usage: usage,
29
+ reference_id: reference_id,
30
+ remote_ip: remote_ip
31
+ }
25
32
  }
26
33
  end
27
34
 
@@ -0,0 +1,61 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Financial
5
+ module Vouchers
6
+ # Neosurf is a prepaid card (voucher) that is used for online shopping
7
+ class Neosurf < Base::Financial
8
+
9
+ include Api::Mixins::Requests::AddressInfoAttributes
10
+ include Api::Mixins::Requests::Financial::AsyncAttributes
11
+
12
+ attr_reader :voucher_number
13
+
14
+ # Voucher number. Alphanumeric maximum 10 characters
15
+ def voucher_number=(value)
16
+ limited_string attribute: __method__,
17
+ value: value.to_s.empty? ? nil : value.to_s,
18
+ min: 1,
19
+ max: 10
20
+ end
21
+
22
+ protected
23
+
24
+ # Neosurf transaction type
25
+ def transaction_type
26
+ Api::Constants::Transactions::NEOSURF
27
+ end
28
+
29
+ # Neosurf Field Validations
30
+ def init_field_validations
31
+ super
32
+
33
+ required_fields.push *%i[transaction_id amount currency billing_country]
34
+ field_values.merge! currency: %w( AUD BGN BRL CAD CHF CNY CZK DKK EUR GBP HKD HUF IDR
35
+ ILS INR JPY KRW MXN MYR NOK NZD PHP PLN RON RUB SEK
36
+ SGD THB TRY USD XOF ZAR ),
37
+ billing_country: %w( AT DZ AU BI BF BJ BE CV CY CA CF TD CO CG CM CD DK GQ
38
+ FR GM DE GA GN GH GW HK IE IT CI KE LU MW MZ MA MR ML
39
+ NE NG NL NZ NO PL PT RW RU RO SE ES SL SN ST CH RS TR
40
+ TG TN GB TZ UG ZW ZM )
41
+ end
42
+
43
+ # Neosurf request structure
44
+ def payment_transaction_structure
45
+ {
46
+ voucher_number: voucher_number,
47
+ customer_email: customer_email,
48
+ customer_phone: customer_phone,
49
+ return_success_url: return_success_url,
50
+ return_failure_url: return_failure_url,
51
+ billing_address: billing_address_parameters_structure,
52
+ shipping_address: shipping_address_parameters_structure
53
+ }
54
+ end
55
+
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -9,7 +9,6 @@ module GenesisRuby
9
9
  include Api::Mixins::Requests::AddressInfoAttributes
10
10
  include Api::Mixins::Requests::BirthDateAttributes
11
11
  include Api::Mixins::Requests::Financial::AsyncAttributes
12
- include Api::Mixins::Requests::Financial::PaymentAttributes
13
12
 
14
13
  protected
15
14
 
@@ -27,18 +26,16 @@ module GenesisRuby
27
26
  end
28
27
 
29
28
  # Alipay request structure
30
- def payment_transaction_structure # rubocop:disable Metrics/MethodLength
31
- payment_attributes_structure.merge(
32
- {
33
- return_success_url: return_success_url,
34
- return_failure_url: return_failure_url,
35
- customer_email: customer_email,
36
- customer_phone: customer_phone,
37
- birth_date: birth_date,
38
- billing_address: billing_address_parameters_structure,
39
- shipping_address: shipping_address_parameters_structure
40
- }
41
- )
29
+ def payment_transaction_structure
30
+ {
31
+ return_success_url: return_success_url,
32
+ return_failure_url: return_failure_url,
33
+ customer_email: customer_email,
34
+ customer_phone: customer_phone,
35
+ birth_date: birth_date,
36
+ billing_address: billing_address_parameters_structure,
37
+ shipping_address: shipping_address_parameters_structure
38
+ }
42
39
  end
43
40
 
44
41
  end
@@ -14,7 +14,6 @@ module GenesisRuby
14
14
  include Api::Mixins::Requests::Financial::Business::BusinessAttributes
15
15
  include Api::Mixins::Requests::DocumentAttributes
16
16
  include Api::Mixins::Requests::Financial::NotificationAttributes
17
- include Api::Mixins::Requests::Financial::PaymentAttributes
18
17
  include Api::Mixins::Requests::Financial::NotificationAttributes
19
18
  include Api::Mixins::Requests::Financial::PendingPaymentAttributes
20
19
 
@@ -24,12 +23,13 @@ module GenesisRuby
24
23
 
25
24
  # Initialize PayPal request field validations
26
25
  def init_field_validations
26
+ super
27
+
27
28
  required_fields
28
29
  .push *%i[transaction_id payment_type amount currency return_success_url return_failure_url]
29
30
 
30
- field_values.merge! currency: Api::Constants::Currencies::Iso4217.all.map(&:upcase),
31
- payment_type: Api::Constants::Transactions::Parameters::Wallets::PayPal::
32
- PaymentTypes.all
31
+ field_values.merge! payment_type:
32
+ Api::Constants::Transactions::Parameters::Wallets::PayPal::PaymentTypes.all
33
33
  end
34
34
 
35
35
  # PayPal transaction type
@@ -39,22 +39,20 @@ module GenesisRuby
39
39
 
40
40
  # PayPal request attributes structure
41
41
  def payment_transaction_structure # rubocop:disable Metrics/MethodLength
42
- payment_attributes_structure.merge(
43
- {
44
- notification_url: notification_url,
45
- return_success_url: return_success_url,
46
- return_failure_url: return_failure_url,
47
- return_pending_url: return_pending_url,
48
- customer_email: customer_email,
49
- customer_phone: customer_phone,
50
- payment_type: payment_type,
51
- birth_date: birth_date,
52
- document_id: document_id,
53
- billing_address: billing_address_parameters_structure,
54
- shipping_address: shipping_address_parameters_structure,
55
- business_attributes: business_attributes_structure
56
- }
57
- )
42
+ {
43
+ notification_url: notification_url,
44
+ return_success_url: return_success_url,
45
+ return_failure_url: return_failure_url,
46
+ return_pending_url: return_pending_url,
47
+ customer_email: customer_email,
48
+ customer_phone: customer_phone,
49
+ payment_type: payment_type,
50
+ birth_date: birth_date,
51
+ document_id: document_id,
52
+ billing_address: billing_address_parameters_structure,
53
+ shipping_address: shipping_address_parameters_structure,
54
+ business_attributes: business_attributes_structure
55
+ }
58
56
  end
59
57
 
60
58
  end
@@ -0,0 +1,44 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module NonFinancial
5
+ module Consumers
6
+ # Creates a consumer based on email address
7
+ class Create < Base::Consumer
8
+
9
+ include Api::Mixins::Requests::CustomerAddress::BillingInfoAttributes
10
+ include Api::Mixins::Requests::CustomerAddress::ShippingInfoAttributes
11
+
12
+ attr_accessor :email
13
+
14
+ # Create Consumer constructor
15
+ def initialize(configuration, _builder_interface = nil)
16
+ super configuration
17
+
18
+ self.request_path = 'create_consumer'
19
+ end
20
+
21
+ protected
22
+
23
+ # Create Consumer field validations
24
+ def init_field_validations
25
+ super
26
+
27
+ required_fields.push *%i[email]
28
+ end
29
+
30
+ # Create Consumer request structure
31
+ def request_structure
32
+ {
33
+ email: email,
34
+ billing_address: billing_address_parameters_structure,
35
+ shipping_address: shipping_address_parameters_structure
36
+ }
37
+ end
38
+
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,40 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module NonFinancial
5
+ module Consumers
6
+ # Disable consumer from usage until further action.
7
+ class Disable < Base::Consumer
8
+
9
+ attr_accessor :email, :consumer_id
10
+
11
+ # Disable Consumer constructor
12
+ def initialize(configuration, _builder_interface = nil)
13
+ super configuration
14
+
15
+ self.request_path = 'disable_consumer'
16
+ end
17
+
18
+ protected
19
+
20
+ # Disable consumer field validations
21
+ def init_field_validations
22
+ super
23
+
24
+ required_fields.push *%i[email consumer_id]
25
+ end
26
+
27
+ # Disable Consumer request structure
28
+ def request_structure
29
+ {
30
+ email: email,
31
+ consumer_id: consumer_id
32
+ }
33
+ end
34
+
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end