genesis_ruby 0.2.4 → 0.2.6

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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +46 -0
  3. data/Gemfile.lock +15 -15
  4. data/README.md +41 -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_supported_types.rb +28 -0
  8. data/lib/genesis_ruby/api/constants/non_financial/kyc/document_types.rb +49 -0
  9. data/lib/genesis_ruby/api/constants/non_financial/kyc/genders.rb +22 -0
  10. data/lib/genesis_ruby/api/constants/non_financial/kyc/profile_current_statuses.rb +25 -0
  11. data/lib/genesis_ruby/api/constants/transactions/parameters/african_mobile_operators.rb +37 -0
  12. data/lib/genesis_ruby/api/constants/transactions/parameters/customer_identification/customer_identification_owner.rb +24 -0
  13. data/lib/genesis_ruby/api/constants/transactions/parameters/customer_identification/customer_identification_subtype.rb +24 -0
  14. data/lib/genesis_ruby/api/constants/transactions/parameters/customer_identification/customer_identification_type.rb +63 -0
  15. data/lib/genesis_ruby/api/constants/transactions/parameters/digital_asset_types.rb +31 -0
  16. data/lib/genesis_ruby/api/constants/transactions/parameters/purpose_of_payment.rb +136 -0
  17. data/lib/genesis_ruby/api/constants/transactions/parameters/source_of_funds.rb +34 -0
  18. data/lib/genesis_ruby/api/mixins/requests/digital_asset_type_attributes.rb +26 -0
  19. data/lib/genesis_ruby/api/mixins/requests/financial/african_mobile_attributes.rb +30 -0
  20. data/lib/genesis_ruby/api/mixins/requests/financial/cards/tokenization_params_attributes.rb +36 -0
  21. data/lib/genesis_ruby/api/mixins/requests/financial/customer_identification_attributes.rb +82 -0
  22. data/lib/genesis_ruby/api/mixins/requests/financial/gift_cards_attributes.rb +26 -0
  23. data/lib/genesis_ruby/api/mixins/requests/financial/preauthorization_attributes.rb +25 -0
  24. data/lib/genesis_ruby/api/mixins/requests/financial/purpose_of_payment_attributes.rb +29 -0
  25. data/lib/genesis_ruby/api/mixins/requests/financial/source_of_funds_attributes.rb +38 -0
  26. data/lib/genesis_ruby/api/mixins/requests/financial/travel_data/airline_itinerary_attributes.rb +1 -1
  27. data/lib/genesis_ruby/api/mixins/requests/non_financial/fx/id_attributes.rb +28 -0
  28. data/lib/genesis_ruby/api/mixins/requests/non_financial/fx/tier_id_attributes.rb +28 -0
  29. data/lib/genesis_ruby/api/mixins/requests/non_financial/kyc/customer_information_attributes.rb +62 -0
  30. data/lib/genesis_ruby/api/mixins/requests/non_financial/kyc/document_attributes.rb +60 -0
  31. data/lib/genesis_ruby/api/request.rb +7 -0
  32. data/lib/genesis_ruby/api/requests/base/financials/credit_card.rb +4 -2
  33. data/lib/genesis_ruby/api/requests/base/non_financial/kyc/base.rb +33 -0
  34. data/lib/genesis_ruby/api/requests/base/reference.rb +1 -2
  35. data/lib/genesis_ruby/api/requests/financial/cards/authorize.rb +5 -1
  36. data/lib/genesis_ruby/api/requests/financial/cards/authorize3d.rb +5 -1
  37. data/lib/genesis_ruby/api/requests/financial/cards/credit.rb +39 -0
  38. data/lib/genesis_ruby/api/requests/financial/cards/payout.rb +72 -0
  39. data/lib/genesis_ruby/api/requests/financial/cards/sale.rb +3 -1
  40. data/lib/genesis_ruby/api/requests/financial/cards/sale3d.rb +3 -1
  41. data/lib/genesis_ruby/api/requests/financial/crypto/bit_pay/payout.rb +52 -0
  42. data/lib/genesis_ruby/api/requests/financial/crypto/bit_pay/refund.rb +36 -0
  43. data/lib/genesis_ruby/api/requests/financial/crypto/bit_pay/sale.rb +55 -0
  44. data/lib/genesis_ruby/api/requests/financial/gift_cards/fashioncheque.rb +47 -0
  45. data/lib/genesis_ruby/api/requests/financial/gift_cards/intersolve.rb +46 -0
  46. data/lib/genesis_ruby/api/requests/financial/gift_cards/tcs.rb +47 -0
  47. data/lib/genesis_ruby/api/requests/financial/mobile/african_mobile_sale.rb +81 -0
  48. data/lib/genesis_ruby/api/requests/financial/mobile/russian_mobile_sale.rb +55 -0
  49. data/lib/genesis_ruby/api/requests/financial/preauthorizations/incremental_authorize.rb +24 -0
  50. data/lib/genesis_ruby/api/requests/financial/preauthorizations/partial_reversal.rb +24 -0
  51. data/lib/genesis_ruby/api/requests/financial/vouchers/neosurf.rb +61 -0
  52. data/lib/genesis_ruby/api/requests/non_financial/fraud/chargeback/date_range.rb +82 -0
  53. data/lib/genesis_ruby/api/requests/non_financial/fraud/chargeback/transaction.rb +52 -0
  54. data/lib/genesis_ruby/api/requests/non_financial/fraud/reports/date_range.rb +108 -0
  55. data/lib/genesis_ruby/api/requests/non_financial/fraud/reports/transaction.rb +52 -0
  56. data/lib/genesis_ruby/api/requests/non_financial/fx/get_rate.rb +55 -0
  57. data/lib/genesis_ruby/api/requests/non_financial/fx/get_rates.rb +53 -0
  58. data/lib/genesis_ruby/api/requests/non_financial/fx/get_tier.rb +53 -0
  59. data/lib/genesis_ruby/api/requests/non_financial/fx/get_tiers.rb +35 -0
  60. data/lib/genesis_ruby/api/requests/non_financial/fx/search_rate.rb +61 -0
  61. data/lib/genesis_ruby/api/requests/non_financial/kyc/consumer_registration/create.rb +99 -0
  62. data/lib/genesis_ruby/api/requests/non_financial/kyc/consumer_registration/update.rb +50 -0
  63. data/lib/genesis_ruby/api/requests/non_financial/kyc/verifications/remote_identity.rb +91 -0
  64. data/lib/genesis_ruby/api/requests/non_financial/tokenization/cryptogram.rb +5 -2
  65. data/lib/genesis_ruby/api/requests/wpf/create.rb +3 -1
  66. data/lib/genesis_ruby/configuration.rb +4 -0
  67. data/lib/genesis_ruby/dependencies.rb +1 -0
  68. data/lib/genesis_ruby/utils/country.rb +272 -0
  69. data/lib/genesis_ruby/utils/money/conversions/amount_to_exponent.rb +1 -4
  70. data/lib/genesis_ruby/version.rb +1 -1
  71. metadata +52 -2
@@ -10,6 +10,7 @@ module GenesisRuby
10
10
  class Authorize3d < Requests::Base::Financials::CreditCard
11
11
 
12
12
  include Mixins::Requests::AddressInfoAttributes
13
+ include Mixins::Requests::DigitalAssetTypeAttributes
13
14
  include Mixins::Requests::DocumentAttributes
14
15
  include Mixins::Requests::Financial::AsyncAttributes
15
16
  include Mixins::Requests::Financial::Business::BusinessAttributes
@@ -25,6 +26,7 @@ module GenesisRuby
25
26
  include Mixins::Requests::Financial::GamingAttributes
26
27
  include Mixins::Requests::Financial::MotoAttributes
27
28
  include Mixins::Requests::Financial::NotificationAttributes
29
+ include Mixins::Requests::Financial::PreauthorizationAttributes
28
30
  include Mixins::Requests::Financial::RiskAttributes
29
31
  include Mixins::Requests::Financial::ScaAttributes
30
32
  include Mixins::Requests::Financial::Threeds::Version2::CommonAttributes
@@ -67,6 +69,7 @@ module GenesisRuby
67
69
  return_failure_url: return_failure_url,
68
70
  gaming: gaming,
69
71
  moto: moto,
72
+ preauthorization: preauthorization,
70
73
  crypto: crypto,
71
74
  customer_email: customer_email,
72
75
  customer_phone: customer_phone,
@@ -86,7 +89,8 @@ module GenesisRuby
86
89
  travel: travel_data_attributes_structure,
87
90
  funding: funding_attributes_structure,
88
91
  installment_plan_id: installment_plan_id,
89
- installment_plan_reference: installment_plan_reference
92
+ installment_plan_reference: installment_plan_reference,
93
+ digital_asset_type: digital_asset_type
90
94
  )
91
95
  end
92
96
 
@@ -0,0 +1,39 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Financial
5
+ module Cards
6
+ # Credits (also known as Credit Fund Transfer a.k.a. CFT) can be done with an initial reference transaction.
7
+ class Credit < Requests::Base::Reference
8
+
9
+ include Mixins::Requests::Financial::Cards::AccountOwnerAttributes
10
+ include Mixins::Requests::Financial::CustomerIdentificationAttributes
11
+ include Mixins::Requests::Financial::PurposeOfPaymentAttributes
12
+ include Mixins::Requests::Financial::SourceOfFundsAttributes
13
+ include Mixins::Requests::Financial::CryptoAttributes
14
+ include Mixins::Requests::DigitalAssetTypeAttributes
15
+
16
+ protected
17
+
18
+ # Credit transaction type
19
+ def transaction_type
20
+ Api::Constants::Transactions::CREDIT
21
+ end
22
+
23
+ # Reference transaction structure
24
+ def reference_transaction_structure
25
+ {
26
+ 'crypto' => crypto,
27
+ 'digital_asset_type' => digital_asset_type,
28
+ 'customer_identification' => customer_identification_attributes_structure,
29
+ 'account_owner' => account_owner_attributes_structure,
30
+ 'purpose_of_payment' => purpose_of_payment
31
+ }.merge source_of_funds_attributes_structure
32
+ end
33
+
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,72 @@
1
+ require 'genesis_ruby/api/requests/base/financials/credit_card'
2
+
3
+ module GenesisRuby
4
+ module Api
5
+ module Requests
6
+ module Financial
7
+ module Cards
8
+ # Payouts are credits without a reference transaction and as such are highly regulated
9
+ # and need specific gateway terminal configuration
10
+ class Payout < Requests::Base::Financials::CreditCard
11
+
12
+ include Mixins::Requests::AddressInfoAttributes
13
+ include Mixins::Requests::BirthDateAttributes
14
+ include Mixins::Requests::DigitalAssetTypeAttributes
15
+ include Mixins::Requests::DocumentAttributes
16
+ include Mixins::Requests::Financial::Cards::FxRateAttributes
17
+ include Mixins::Requests::Financial::CryptoAttributes
18
+ include Mixins::Requests::Financial::CustomerIdentificationAttributes
19
+ include Mixins::Requests::Financial::DynamicDescriptorAttributes
20
+ include Mixins::Requests::Financial::GamingAttributes
21
+ include Mixins::Requests::Financial::MotoAttributes
22
+ include Mixins::Requests::Financial::PurposeOfPaymentAttributes
23
+ include Mixins::Requests::Financial::SourceOfFundsAttributes
24
+
25
+ protected
26
+
27
+ # Payout Transaction Type
28
+ def transaction_type
29
+ GenesisRuby::Api::Constants::Transactions::PAYOUT
30
+ end
31
+
32
+ # Payout Field validations
33
+ def init_field_validations
34
+ super
35
+
36
+ required_fields.push *%i[card_holder card_number expiration_month expiration_year]
37
+
38
+ field_value_dependencies.merge! required_tokenization_fields_conditional
39
+ end
40
+
41
+ # Payout request structure
42
+ def payment_transaction_structure # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
43
+ super.delete(:credential_on_file_settlement_date)
44
+ super.delete(:scheme_tokenized)
45
+
46
+ super.merge(
47
+ source_of_funds_attributes_structure,
48
+ {
49
+ gaming: gaming,
50
+ moto: moto,
51
+ crypto: crypto,
52
+ digital_asset_type: digital_asset_type,
53
+ purpose_of_payment: purpose_of_payment,
54
+ customer_email: customer_email,
55
+ customer_phone: customer_phone,
56
+ birth_date: birth_date,
57
+ document_id: document_id,
58
+ fx_rate_id: fx_rate_id,
59
+ billing_address: billing_address_parameters_structure,
60
+ shipping_address: shipping_address_parameters_structure,
61
+ customer_identification: customer_identification_attributes_structure,
62
+ dynamic_descriptor_params: dynamic_descriptor_structure
63
+ }
64
+ )
65
+ end
66
+
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -9,6 +9,7 @@ module GenesisRuby
9
9
  class Sale < Requests::Base::Financials::CreditCard
10
10
 
11
11
  include Mixins::Requests::AddressInfoAttributes
12
+ include Mixins::Requests::DigitalAssetTypeAttributes
12
13
  include Mixins::Requests::DocumentAttributes
13
14
  include Mixins::Requests::Financial::Business::BusinessAttributes
14
15
  include Mixins::Requests::Financial::Cards::FxRateAttributes
@@ -70,7 +71,8 @@ module GenesisRuby
70
71
  travel: travel_data_attributes_structure,
71
72
  funding: funding_attributes_structure,
72
73
  installment_plan_id: installment_plan_id,
73
- installment_plan_reference: installment_plan_reference
74
+ installment_plan_reference: installment_plan_reference,
75
+ digital_asset_type: digital_asset_type
74
76
  )
75
77
  end
76
78
 
@@ -9,6 +9,7 @@ module GenesisRuby
9
9
  class Sale3d < Requests::Base::Financials::CreditCard
10
10
 
11
11
  include Mixins::Requests::AddressInfoAttributes
12
+ include Mixins::Requests::DigitalAssetTypeAttributes
12
13
  include Mixins::Requests::DocumentAttributes
13
14
  include Mixins::Requests::Financial::AsyncAttributes
14
15
  include Mixins::Requests::Financial::Business::BusinessAttributes
@@ -85,7 +86,8 @@ module GenesisRuby
85
86
  travel: travel_data_attributes_structure,
86
87
  funding: funding_attributes_structure,
87
88
  installment_plan_id: installment_plan_id,
88
- installment_plan_reference: installment_plan_reference
89
+ installment_plan_reference: installment_plan_reference,
90
+ digital_asset_type: digital_asset_type
89
91
  )
90
92
  end
91
93
 
@@ -0,0 +1,52 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Financial
5
+ module Crypto
6
+ module BitPay
7
+ # BitPay Payout is a crypto currency payout method where merchants are requesting payouts
8
+ # in FIAT currency and the funds are transferred in Bitcoin equivalent to a crypto wallet address
9
+ class Payout < Requests::Base::Financial
10
+
11
+ include Api::Mixins::Requests::AddressInfoAttributes
12
+ include Api::Mixins::Requests::Financial::AsyncAttributes
13
+ include Api::Mixins::Requests::Financial::NotificationAttributes
14
+
15
+ attr_accessor :crypto_address, :crypto_wallet_provider
16
+
17
+ protected
18
+
19
+ # BitPay Payout transaction type
20
+ def transaction_type
21
+ Api::Constants::Transactions::BITPAY_PAYOUT
22
+ end
23
+
24
+ # BitPay Payout field validations
25
+ def init_field_validations
26
+ super
27
+
28
+ required_fields.push *%i[transaction_id notification_url return_success_url
29
+ return_failure_url amount currency crypto_address crypto_wallet_provider]
30
+ end
31
+
32
+ # BitPay Payout parameters structure
33
+ def payment_transaction_structure
34
+ {
35
+ notification_url: notification_url,
36
+ return_success_url: return_success_url,
37
+ return_failure_url: return_failure_url,
38
+ customer_email: customer_email,
39
+ crypto_address: crypto_address,
40
+ crypto_wallet_provider: crypto_wallet_provider,
41
+ billing_address: billing_address_parameters_structure,
42
+ shipping_address: shipping_address_parameters_structure
43
+ }
44
+ end
45
+
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,36 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Financial
5
+ module Crypto
6
+ module BitPay
7
+ # BitPay Refund is a custom refund method which will handle the asynchronous
8
+ # BitPay refund workflow
9
+ class Refund < Requests::Base::Reference
10
+
11
+ protected
12
+
13
+ # BitPay Refund transaction type
14
+ def transaction_type
15
+ Api::Constants::Transactions::BITPAY_REFUND
16
+ end
17
+
18
+ # BitPay Refund field validations
19
+ def init_field_validations
20
+ super
21
+
22
+ required_fields.push *%i[transaction_id amount currency reference_id]
23
+ end
24
+
25
+ # BitPay Refund parameters structure
26
+ def reference_transaction_structure
27
+ {}
28
+ end
29
+
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,55 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Financial
5
+ module Crypto
6
+ module BitPay
7
+ # BitPay is a cryptocurrency payments provider supporting blockchain payments
8
+ # with Bitcoin (BTC) and BitcoinCash (BCH)
9
+ # BitPay Sale is an asynchronous transaction type
10
+ class Sale < Requests::Base::Financial
11
+
12
+ include Api::Mixins::Requests::AddressInfoAttributes
13
+
14
+ attr_reader :return_url
15
+
16
+ # Return URL setter
17
+ def return_url=(value)
18
+ unless GenesisRuby::Utils::Common.valid_url?(value)
19
+ raise ParameterError, "Invalid URL given for #{__method__}"
20
+ end
21
+
22
+ @return_url = value
23
+ end
24
+
25
+ protected
26
+
27
+ # BitPay Sale transaction type
28
+ def transaction_type
29
+ Api::Constants::Transactions::BITPAY_SALE
30
+ end
31
+
32
+ # BitPay Sale field validations
33
+ def init_field_validations
34
+ super
35
+
36
+ required_fields.push *%i[transaction_id return_url amount currency customer_email]
37
+ end
38
+
39
+ # BitPay Sale parameters structure
40
+ def payment_transaction_structure
41
+ {
42
+ return_url: return_url,
43
+ customer_email: customer_email,
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
55
+ end
@@ -0,0 +1,47 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Financial
5
+ module GiftCards
6
+ # Fashioncheque transactions are made using gift cards provided by Fashioncheque
7
+ class Fashioncheque < Requests::Base::Financial
8
+
9
+ include Api::Mixins::Requests::AddressInfoAttributes
10
+ include Api::Mixins::Requests::Financial::DynamicDescriptorAttributes
11
+ include Api::Mixins::Requests::Financial::GiftCardsAttributes
12
+ include Api::Mixins::Requests::Financial::ReferenceAttributes
13
+ include Api::Mixins::Requests::NonFinancial::Tokenization::TokenAttributes
14
+
15
+ protected
16
+
17
+ # Fashioncheque transaction type
18
+ def transaction_type
19
+ Api::Constants::Transactions::FASHIONCHEQUE
20
+ end
21
+
22
+ # Fashioncheque field validations
23
+ def init_field_validations
24
+ super
25
+
26
+ required_fields.push *%i[transaction_id amount currency card_number]
27
+ end
28
+
29
+ # Fashioncheque parameters structure
30
+ def payment_transaction_structure
31
+ {
32
+ card_number: card_number,
33
+ cvv: cvv,
34
+ token: token,
35
+ reference_id: reference_id,
36
+ billing_address: billing_address_parameters_structure,
37
+ shipping_address: shipping_address_parameters_structure,
38
+ dynamic_descriptor_params: dynamic_descriptor_structure
39
+ }
40
+ end
41
+
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,46 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Financial
5
+ module GiftCards
6
+ # Intersolve transactions are made using gift card provided by Intersolve
7
+ class Intersolve < Requests::Base::Financial
8
+
9
+ include Api::Mixins::Requests::AddressInfoAttributes
10
+ include Api::Mixins::Requests::Financial::DynamicDescriptorAttributes
11
+ include Api::Mixins::Requests::Financial::GiftCardsAttributes
12
+ include Api::Mixins::Requests::Financial::ReferenceAttributes
13
+ include Api::Mixins::Requests::Financial::Cards::TokenizationAttributes
14
+
15
+ protected
16
+
17
+ # Intersolve transaction type
18
+ def transaction_type
19
+ Api::Constants::Transactions::INTERSOLVE
20
+ end
21
+
22
+ # Intersolve field validations
23
+ def init_field_validations
24
+ super
25
+
26
+ required_fields.push *%i[transaction_id amount currency card_number]
27
+ end
28
+
29
+ # Intersolve parameters structure
30
+ def payment_transaction_structure
31
+ {
32
+ card_number: card_number,
33
+ cvv: cvv,
34
+ reference_id: reference_id,
35
+ billing_address: billing_address_parameters_structure,
36
+ shipping_address: shipping_address_parameters_structure,
37
+ dynamic_descriptor_params: dynamic_descriptor_structure
38
+ }.merge(tokenization_attributes_structure)
39
+ end
40
+
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,47 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Financial
5
+ module GiftCards
6
+ # The container store transactions are made using gift cards provided by TCS
7
+ class Tcs < Requests::Base::Financial
8
+
9
+ include Api::Mixins::Requests::AddressInfoAttributes
10
+ include Api::Mixins::Requests::Financial::DynamicDescriptorAttributes
11
+ include Api::Mixins::Requests::Financial::GiftCardsAttributes
12
+ include Api::Mixins::Requests::Financial::ReferenceAttributes
13
+ include Api::Mixins::Requests::NonFinancial::Tokenization::TokenAttributes
14
+
15
+ protected
16
+
17
+ # TCS transaction type
18
+ def transaction_type
19
+ Api::Constants::Transactions::TCS
20
+ end
21
+
22
+ # TCS field validations
23
+ def init_field_validations
24
+ super
25
+
26
+ required_fields.push *%i[transaction_id amount currency card_number]
27
+ end
28
+
29
+ # TCS parameters structure
30
+ def payment_transaction_structure
31
+ {
32
+ card_number: card_number,
33
+ cvv: cvv,
34
+ token: token,
35
+ reference_id: reference_id,
36
+ billing_address: billing_address_parameters_structure,
37
+ shipping_address: shipping_address_parameters_structure,
38
+ dynamic_descriptor_params: dynamic_descriptor_structure
39
+ }
40
+ end
41
+
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,81 @@
1
+ require 'genesis_ruby/api/constants/transactions/parameters/african_mobile_operators'
2
+
3
+ module GenesisRuby
4
+ module Api
5
+ module Requests
6
+ module Financial
7
+ module Mobile
8
+ # African Mobile Sale, otherwise known as Charge, is an APM used to process
9
+ # Mobile network operator payments
10
+ class AfricanMobileSale < Requests::Base::Financial
11
+
12
+ include Mixins::Requests::AddressInfoAttributes
13
+ include Mixins::Requests::Financial::AfricanMobileAttributes
14
+ include Mixins::Requests::Financial::AsyncAttributes
15
+
16
+ protected
17
+
18
+ # African Mobile Sale transaction type
19
+ def transaction_type
20
+ Api::Constants::Transactions::AFRICAN_MOBILE_SALE
21
+ end
22
+
23
+ # African Mobile Sale field validations
24
+ def init_field_validations # rubocop:disable Metrics/MethodLength
25
+ super
26
+
27
+ required_fields.push *%i[transaction_id return_success_url return_failure_url
28
+ amount currency operator target customer_phone billing_country]
29
+
30
+ field_values.merge! billing_country: %w(GH KE UG),
31
+ currency: %w(GHS KES UGX),
32
+ operator:
33
+ Api::Constants::Transactions::Parameters::AfricanMobileOperators.sale
34
+
35
+ field_value_dependencies.merge!(
36
+ {
37
+ currency: {
38
+ GHS: {
39
+ billing_country: %w(GH),
40
+ operator: [
41
+ Api::Constants::Transactions::Parameters::AfricanMobileOperators::VODACOM
42
+ ]
43
+ },
44
+ KES: {
45
+ billing_country: %w(KE),
46
+ operator: [
47
+ Api::Constants::Transactions::Parameters::AfricanMobileOperators::SAFARICOM
48
+ ]
49
+ },
50
+ UGX: {
51
+ billing_country: %w(UG),
52
+ operator: [
53
+ Api::Constants::Transactions::Parameters::AfricanMobileOperators::AIRTEL,
54
+ Api::Constants::Transactions::Parameters::AfricanMobileOperators::MTN
55
+ ]
56
+ }
57
+ }
58
+ }
59
+ )
60
+ end
61
+
62
+ # African Mobile Sale request structure
63
+ def payment_transaction_structure
64
+ {
65
+ return_success_url: return_success_url,
66
+ return_failure_url: return_failure_url,
67
+ operator: operator,
68
+ target: target,
69
+ customer_email: customer_email,
70
+ customer_phone: customer_phone,
71
+ billing_address: billing_address_parameters_structure,
72
+ shipping_address: shipping_address_parameters_structure
73
+ }
74
+ end
75
+
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,55 @@
1
+ require 'genesis_ruby/api/constants/transactions/parameters/mobile/apple_pay/payment_subtypes'
2
+
3
+ module GenesisRuby
4
+ module Api
5
+ module Requests
6
+ module Financial
7
+ module Mobile
8
+ # Russian Mobile Sale, otherwise known as Charge, is an APM used
9
+ # to process Mobile network operator payments
10
+ class RussianMobileSale < Requests::Base::Financial
11
+
12
+ include Mixins::Requests::AddressInfoAttributes
13
+ include Mixins::Requests::Financial::AsyncAttributes
14
+
15
+ attr_accessor :target, :operator
16
+
17
+ protected
18
+
19
+ # Russian Mobile Sale transaction type
20
+ def transaction_type
21
+ Api::Constants::Transactions::RUSSIAN_MOBILE_SALE
22
+ end
23
+
24
+ # Russian Mobile Sale field validations
25
+ def init_field_validations
26
+ super
27
+
28
+ required_fields.push *%i[transaction_id usage return_success_url return_failure_url
29
+ amount currency operator target customer_phone billing_country]
30
+
31
+ field_values.merge! billing_country: %w(RU),
32
+ currency: %w(RUB),
33
+ operator: %w(mtc megafon tele2 beeline)
34
+ end
35
+
36
+ # Russian Mobile Sale request structure
37
+ def payment_transaction_structure
38
+ {
39
+ return_success_url: return_success_url,
40
+ return_failure_url: return_failure_url,
41
+ operator: operator,
42
+ target: target,
43
+ customer_email: customer_email,
44
+ customer_phone: customer_phone,
45
+ billing_address: billing_address_parameters_structure,
46
+ shipping_address: shipping_address_parameters_structure
47
+ }
48
+ end
49
+
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,24 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Financial
5
+ module Preauthorizations
6
+ # Incremental Authorize transaction type
7
+ class IncrementalAuthorize < Base::Reference
8
+
9
+ # Incremental Authorize transaction type
10
+ def transaction_type
11
+ Constants::Transactions::INCREMENTAL_AUTHORIZE
12
+ end
13
+
14
+ # Returns the transaction structure
15
+ def reference_transaction_structure
16
+ {}
17
+ end
18
+
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ module GenesisRuby
2
+ module Api
3
+ module Requests
4
+ module Financial
5
+ module Preauthorizations
6
+ # Partial Reversal transaction type
7
+ class PartialReversal < Base::Reference
8
+
9
+ # Partial Reversal transaction type
10
+ def transaction_type
11
+ Constants::Transactions::PARTIAL_REVERSAL
12
+ end
13
+
14
+ # Returns the transaction structure
15
+ def reference_transaction_structure
16
+ {}
17
+ end
18
+
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end