transbank-sdk 1.5.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -0
  3. data/README.md +0 -2
  4. data/lib/transbank/sdk/common/api_constants.rb +23 -0
  5. data/lib/transbank/sdk/common/base_transaction.rb +18 -0
  6. data/lib/transbank/sdk/common/integration_api_keys.rb +9 -0
  7. data/lib/transbank/sdk/common/integration_commerce_codes.rb +68 -0
  8. data/lib/transbank/sdk/common/validation.rb +19 -0
  9. data/lib/transbank/sdk/patpass/patpass_by_webpay/transaction.rb +33 -85
  10. data/lib/transbank/sdk/patpass/patpass_comercio/inscription.rb +48 -71
  11. data/lib/transbank/sdk/shared/request_service.rb +93 -0
  12. data/lib/transbank/sdk/shared/transbank_error.rb +5 -0
  13. data/lib/transbank/sdk/version.rb +1 -1
  14. data/lib/transbank/sdk/webpay/oneclick/mall_inscription.rb +52 -0
  15. data/lib/transbank/sdk/webpay/oneclick/mall_transaction.rb +66 -0
  16. data/lib/transbank/sdk/webpay/transaccion_completa/mall_transaction.rb +67 -0
  17. data/lib/transbank/sdk/webpay/transaccion_completa/transaction.rb +70 -0
  18. data/lib/transbank/sdk/webpay/webpay_plus/mall_transaction.rb +79 -0
  19. data/lib/transbank/sdk/webpay/webpay_plus/transaction.rb +59 -73
  20. data/lib/transbank/sdk/webpay/webpay_plus_modal/transaction.rb +62 -0
  21. data/lib/transbank/sdk.rb +16 -16
  22. metadata +15 -135
  23. data/lib/transbank/sdk/oneclick/base.rb +0 -64
  24. data/lib/transbank/sdk/oneclick/errors/oneclick_error.rb +0 -16
  25. data/lib/transbank/sdk/oneclick/inscription/errors/mall_inscription_delete_error.rb +0 -16
  26. data/lib/transbank/sdk/oneclick/inscription/errors/mall_inscription_finish_error.rb +0 -16
  27. data/lib/transbank/sdk/oneclick/inscription/errors/mall_inscription_start_error.rb +0 -16
  28. data/lib/transbank/sdk/oneclick/inscription/errors/oneclick_mall_inscription_errors.rb +0 -3
  29. data/lib/transbank/sdk/oneclick/inscription/inscription.rb +0 -3
  30. data/lib/transbank/sdk/oneclick/inscription/responses/mall_inscription_delete_response.rb +0 -18
  31. data/lib/transbank/sdk/oneclick/inscription/responses/mall_inscription_finish_response.rb +0 -15
  32. data/lib/transbank/sdk/oneclick/inscription/responses/mall_inscription_start_response.rb +0 -14
  33. data/lib/transbank/sdk/oneclick/inscription/responses/oneclick_mall_inscription_responses.rb +0 -3
  34. data/lib/transbank/sdk/oneclick/mall/errors/mall_transaction_authorize_error.rb +0 -16
  35. data/lib/transbank/sdk/oneclick/mall/errors/mall_transaction_refund_error.rb +0 -16
  36. data/lib/transbank/sdk/oneclick/mall/errors/mall_transaction_status_error.rb +0 -16
  37. data/lib/transbank/sdk/oneclick/mall/errors/oneclick_mall_errors.rb +0 -4
  38. data/lib/transbank/sdk/oneclick/mall/mall_inscription.rb +0 -73
  39. data/lib/transbank/sdk/oneclick/mall/mall_transaction.rb +0 -97
  40. data/lib/transbank/sdk/oneclick/mall/oneclick_mall.rb +0 -4
  41. data/lib/transbank/sdk/oneclick/mall/responses/mall_transaction_authorize_response.rb +0 -16
  42. data/lib/transbank/sdk/oneclick/mall/responses/mall_transaction_refund_response.rb +0 -16
  43. data/lib/transbank/sdk/oneclick/mall/responses/mall_transaction_status_response.rb +0 -15
  44. data/lib/transbank/sdk/oneclick/mall/responses/oneclick_mall_responses.rb +0 -4
  45. data/lib/transbank/sdk/oneclick/mall_deferred/errors/mall_deferred_transaction_capture_error.rb +0 -16
  46. data/lib/transbank/sdk/oneclick/mall_deferred/mall_deferred_inscription.rb +0 -20
  47. data/lib/transbank/sdk/oneclick/mall_deferred/mall_deferred_transaction.rb +0 -42
  48. data/lib/transbank/sdk/oneclick/mall_deferred/responses/mall_deferred_transaction_capture_response.rb +0 -16
  49. data/lib/transbank/sdk/oneclick/oneclick.rb +0 -12
  50. data/lib/transbank/sdk/onepay/base.rb +0 -125
  51. data/lib/transbank/sdk/onepay/errors/errors.rb +0 -17
  52. data/lib/transbank/sdk/onepay/errors/integration_type_error.rb +0 -8
  53. data/lib/transbank/sdk/onepay/errors/invalid_options_error.rb +0 -8
  54. data/lib/transbank/sdk/onepay/errors/item_error.rb +0 -8
  55. data/lib/transbank/sdk/onepay/errors/refund_create_error.rb +0 -8
  56. data/lib/transbank/sdk/onepay/errors/response_error.rb +0 -8
  57. data/lib/transbank/sdk/onepay/errors/shopping_cart_error.rb +0 -8
  58. data/lib/transbank/sdk/onepay/errors/signature_error.rb +0 -8
  59. data/lib/transbank/sdk/onepay/errors/transaction_commit_error.rb +0 -8
  60. data/lib/transbank/sdk/onepay/errors/transaction_create_error.rb +0 -8
  61. data/lib/transbank/sdk/onepay/errors/transbank_error.rb +0 -9
  62. data/lib/transbank/sdk/onepay/models/channels.rb +0 -15
  63. data/lib/transbank/sdk/onepay/models/item.rb +0 -103
  64. data/lib/transbank/sdk/onepay/models/models.rb +0 -10
  65. data/lib/transbank/sdk/onepay/models/refund.rb +0 -50
  66. data/lib/transbank/sdk/onepay/models/shopping_cart.rb +0 -65
  67. data/lib/transbank/sdk/onepay/models/transaction.rb +0 -143
  68. data/lib/transbank/sdk/onepay/requests/refund_create_request.rb +0 -45
  69. data/lib/transbank/sdk/onepay/requests/request.rb +0 -18
  70. data/lib/transbank/sdk/onepay/requests/requests.rb +0 -9
  71. data/lib/transbank/sdk/onepay/requests/transaction_commit_request.rb +0 -48
  72. data/lib/transbank/sdk/onepay/requests/transaction_create_request.rb +0 -85
  73. data/lib/transbank/sdk/onepay/responses/refund_create_response.rb +0 -24
  74. data/lib/transbank/sdk/onepay/responses/response.rb +0 -18
  75. data/lib/transbank/sdk/onepay/responses/responses.rb +0 -9
  76. data/lib/transbank/sdk/onepay/responses/transaction_commit_response.rb +0 -39
  77. data/lib/transbank/sdk/onepay/responses/transaction_create_response.rb +0 -32
  78. data/lib/transbank/sdk/patpass/errors/integration_type_error.rb +0 -8
  79. data/lib/transbank/sdk/patpass/errors/patpass_error.rb +0 -15
  80. data/lib/transbank/sdk/patpass/patpass_by_webpay/base.rb +0 -47
  81. data/lib/transbank/sdk/patpass/patpass_by_webpay/errors/patpass_by_webpay_errors.rb +0 -12
  82. data/lib/transbank/sdk/patpass/patpass_by_webpay/errors/transaction_commit_error.rb +0 -15
  83. data/lib/transbank/sdk/patpass/patpass_by_webpay/errors/transaction_create_error.rb +0 -15
  84. data/lib/transbank/sdk/patpass/patpass_by_webpay/errors/transaction_status_error.rb +0 -15
  85. data/lib/transbank/sdk/patpass/patpass_by_webpay/options.rb +0 -9
  86. data/lib/transbank/sdk/patpass/patpass_by_webpay/patpass_by_webpay.rb +0 -16
  87. data/lib/transbank/sdk/patpass/patpass_by_webpay/responses/patpass_by_webpay_responses.rb +0 -3
  88. data/lib/transbank/sdk/patpass/patpass_by_webpay/responses/transaction_commit_response.rb +0 -20
  89. data/lib/transbank/sdk/patpass/patpass_by_webpay/responses/transaction_create_response.rb +0 -15
  90. data/lib/transbank/sdk/patpass/patpass_by_webpay/responses/transaction_status_response.rb +0 -21
  91. data/lib/transbank/sdk/patpass/patpass_comercio/base.rb +0 -47
  92. data/lib/transbank/sdk/patpass/patpass_comercio/errors/inscription_start_error.rb +0 -15
  93. data/lib/transbank/sdk/patpass/patpass_comercio/errors/inscription_status_error.rb +0 -15
  94. data/lib/transbank/sdk/patpass/patpass_comercio/errors/patpass_comercio_errors.rb +0 -2
  95. data/lib/transbank/sdk/patpass/patpass_comercio/options.rb +0 -9
  96. data/lib/transbank/sdk/patpass/patpass_comercio/patpass_comercio.rb +0 -5
  97. data/lib/transbank/sdk/patpass/patpass_comercio/responses/inscription_start_response.rb +0 -13
  98. data/lib/transbank/sdk/patpass/patpass_comercio/responses/inscription_status_response.rb +0 -13
  99. data/lib/transbank/sdk/patpass/patpass_comercio/responses/patpass_comercio_responses.rb +0 -2
  100. data/lib/transbank/sdk/transaccion_completa/base.rb +0 -51
  101. data/lib/transbank/sdk/transaccion_completa/errors/transaccion_completa_error.rb +0 -16
  102. data/lib/transbank/sdk/transaccion_completa/errors/transaccion_completa_errors.rb +0 -7
  103. data/lib/transbank/sdk/transaccion_completa/errors/transaction_capture_error.rb +0 -14
  104. data/lib/transbank/sdk/transaccion_completa/errors/transaction_commit_error.rb +0 -14
  105. data/lib/transbank/sdk/transaccion_completa/errors/transaction_create_error.rb +0 -14
  106. data/lib/transbank/sdk/transaccion_completa/errors/transaction_installments_error.rb +0 -14
  107. data/lib/transbank/sdk/transaccion_completa/errors/transaction_refund_error.rb +0 -14
  108. data/lib/transbank/sdk/transaccion_completa/errors/transaction_status_error.rb +0 -14
  109. data/lib/transbank/sdk/transaccion_completa/mall/mall_transaction.rb +0 -197
  110. data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_capture_response.rb +0 -12
  111. data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_commit_response.rb +0 -15
  112. data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_installments_response.rb +0 -11
  113. data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_responses.rb +0 -4
  114. data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_status_response.rb +0 -14
  115. data/lib/transbank/sdk/transaccion_completa/options.rb +0 -7
  116. data/lib/transbank/sdk/transaccion_completa/responses/transaccion_completa_responses.rb +0 -6
  117. data/lib/transbank/sdk/transaccion_completa/responses/transaction_capture_response.rb +0 -12
  118. data/lib/transbank/sdk/transaccion_completa/responses/transaction_commit_response.rb +0 -16
  119. data/lib/transbank/sdk/transaccion_completa/responses/transaction_create_response.rb +0 -10
  120. data/lib/transbank/sdk/transaccion_completa/responses/transaction_installments_response.rb +0 -13
  121. data/lib/transbank/sdk/transaccion_completa/responses/transaction_refund_response.rb +0 -14
  122. data/lib/transbank/sdk/transaccion_completa/responses/transaction_status_response.rb +0 -16
  123. data/lib/transbank/sdk/transaccion_completa/transaccion_completa.rb +0 -7
  124. data/lib/transbank/sdk/transaccion_completa/transaction.rb +0 -144
  125. data/lib/transbank/sdk/transbank_error.rb +0 -6
  126. data/lib/transbank/sdk/utils/json_utils.rb +0 -75
  127. data/lib/transbank/sdk/utils/net_helper.rb +0 -82
  128. data/lib/transbank/sdk/utils/request_builder.rb +0 -96
  129. data/lib/transbank/sdk/utils/signature_utils.rb +0 -49
  130. data/lib/transbank/sdk/utils/utils.rb +0 -9
  131. data/lib/transbank/sdk/webpay/errors/integration_type_error.rb +0 -8
  132. data/lib/transbank/sdk/webpay/errors/webpay_error.rb +0 -14
  133. data/lib/transbank/sdk/webpay/webpay_plus/base.rb +0 -74
  134. data/lib/transbank/sdk/webpay/webpay_plus/deferred/deferred_transaction.rb +0 -108
  135. data/lib/transbank/sdk/webpay/webpay_plus/deferred/errors/transaction_capture_error.rb +0 -16
  136. data/lib/transbank/sdk/webpay/webpay_plus/deferred/errors/webpay_plus_deferred_errors.rb +0 -1
  137. data/lib/transbank/sdk/webpay/webpay_plus/deferred/responses/transaction_capture_response.rb +0 -22
  138. data/lib/transbank/sdk/webpay/webpay_plus/deferred/responses/webpay_plus_deferred_responses.rb +0 -1
  139. data/lib/transbank/sdk/webpay/webpay_plus/errors/transaction_commit_error.rb +0 -17
  140. data/lib/transbank/sdk/webpay/webpay_plus/errors/transaction_create_error.rb +0 -16
  141. data/lib/transbank/sdk/webpay/webpay_plus/errors/transaction_refund_error.rb +0 -16
  142. data/lib/transbank/sdk/webpay/webpay_plus/errors/transaction_status_error.rb +0 -16
  143. data/lib/transbank/sdk/webpay/webpay_plus/errors/webpay_plus_errors.rb +0 -13
  144. data/lib/transbank/sdk/webpay/webpay_plus/mall/mall_transaction.rb +0 -88
  145. data/lib/transbank/sdk/webpay/webpay_plus/mall/responses/mall_transaction_commit_response.rb +0 -23
  146. data/lib/transbank/sdk/webpay/webpay_plus/mall/responses/mall_transaction_status_response.rb +0 -21
  147. data/lib/transbank/sdk/webpay/webpay_plus/mall/responses/webpay_plus_mall_responses.rb +0 -2
  148. data/lib/transbank/sdk/webpay/webpay_plus/mall_deferred/mall_deferred_transaction.rb +0 -109
  149. data/lib/transbank/sdk/webpay/webpay_plus/options.rb +0 -9
  150. data/lib/transbank/sdk/webpay/webpay_plus/responses/transaction_commit_response.rb +0 -20
  151. data/lib/transbank/sdk/webpay/webpay_plus/responses/transaction_create_response.rb +0 -15
  152. data/lib/transbank/sdk/webpay/webpay_plus/responses/transaction_refund_response.rb +0 -19
  153. data/lib/transbank/sdk/webpay/webpay_plus/responses/transaction_status_response.rb +0 -21
  154. data/lib/transbank/sdk/webpay/webpay_plus/responses/webpay_plus_responses.rb +0 -4
  155. data/lib/transbank/sdk/webpay/webpay_plus/webpay_plus.rb +0 -24
@@ -1,143 +0,0 @@
1
- module Transbank
2
- module Onepay
3
- ## Class Transaction
4
- # This class creates or commits a Transaction (that is, a purchase)
5
- class Transaction
6
- extend Transbank::Utils::NetHelper, Utils::RequestBuilder
7
-
8
- SEND_TRANSACTION = 'sendtransaction'.freeze
9
- COMMIT_TRANSACTION = 'gettransactionnumber'.freeze
10
- TRANSACTION_BASE_PATH = '/ewallet-plugin-api-services/services/transactionservice/'.freeze
11
-
12
- class << self
13
- # Create a [Transaction], initiating the purchase process.
14
- # @param shopping_cart [ShoppingCart] contains the [Item]s to be purchased
15
- # @param channel [String] The channel that the transaction is going to be done through. Valid values are contained on the [Transbank::Onepay::Channel] class
16
- # @param external_unique_number [String] a unique value (per Merchant, not global) that is used to identify a Transaction
17
- # @param options[Hash, nil] an optional Hash with configuration overrides
18
- # @return [TransactionCreateResponse] the response to your request.
19
- # Includes data that you will need to #commit your [Transaction]
20
- # @raise [ShoppingCartError] if shopping cart is nil or empty
21
- # @raise [TransactionCreateError] if channel is not valid
22
- # @raise [TransactionCreateError] if no response is gotten, or responseCode of the response is not 'OK'
23
- def create(shopping_cart:, channel: nil, external_unique_number: nil,
24
- options: nil)
25
- if is_options_hash?(channel)
26
- options = channel
27
- channel = nil
28
- end
29
-
30
- if is_options_hash?(external_unique_number)
31
- options = external_unique_number
32
- external_unique_number = nil
33
- end
34
-
35
- validate_channel!(channel)
36
- validate_shopping_cart!(shopping_cart)
37
-
38
- options = complete_options(options)
39
- create_request = create_transaction(shopping_cart: shopping_cart,
40
- channel: channel,
41
- external_unique_number: external_unique_number,
42
- options: options)
43
- response = http_post(uri_string: transaction_create_path, body: create_request.to_h)
44
- validate_create_response!(response)
45
- transaction_create_response = TransactionCreateResponse.new JSON.parse(response.body)
46
- signature_is_valid = transaction_create_response.valid_signature?(options.fetch(:shared_secret))
47
- unless signature_is_valid
48
- raise Errors::SignatureError, "The response's signature is not valid."
49
- end
50
- transaction_create_response
51
- end
52
-
53
- # Commit a [Transaction]. It is MANDATORY for this to be done, and you have
54
- # 30 seconds to do so, otherwise the [Transaction] is automatically REVERSED
55
- # @param occ [String] Merchant purchase order
56
- # @param external_unique_number [String] a unique value (per Merchant, not global) that is used to identify a Transaction
57
- # @param options[Hash, nil] an optional Hash with configuration overrides
58
- # @return [TransactionCommitResponse] The response to your commit request.
59
- # @raise [TransactionCommitError] if response is nil or responseCode of the response is not 'OK'
60
- def commit(occ:, external_unique_number:, options: nil)
61
- options = complete_options(options)
62
- commit_request = commit_transaction(occ: occ,
63
- external_unique_number: external_unique_number,
64
- options: options)
65
- response = http_post(uri_string: transaction_commit_path, body: commit_request.to_h)
66
- validate_commit_response!(response)
67
- transaction_commit_response = TransactionCommitResponse.new(JSON.parse(response.body))
68
- signature_is_valid = transaction_commit_response.valid_signature?(options.fetch(:shared_secret))
69
- unless signature_is_valid
70
- raise Errors::SignatureError, "The response's signature is not valid."
71
- end
72
- transaction_commit_response
73
- end
74
-
75
- private
76
-
77
- def is_options_hash?(hash)
78
- return false unless hash.respond_to? :keys
79
- # Intersection of the two arrays
80
- ([:api_key, :shared_secret] & hash.keys).any?
81
- end
82
-
83
- def validate_channel!(channel)
84
- if channel_is_app?(channel) && Base::app_scheme.nil?
85
- raise Errors::TransactionCreateError, 'You need to set an app_scheme if you want to use the APP channel'
86
- end
87
-
88
- if channel_is_mobile?(channel) && Base::callback_url.nil?
89
- raise Errors::TransactionCreateError, 'You need to set a valid callback if you want to use the MOBILE channel'
90
- end
91
- end
92
-
93
- def validate_shopping_cart!(shopping_cart)
94
- if shopping_cart.items.nil? || shopping_cart.items.empty?
95
- raise Errors::ShoppingCartError, 'Shopping cart is null or empty.'
96
- end
97
- end
98
-
99
- def validate_commit_response!(response)
100
- unless response
101
- raise Errors::TransactionCommitError, 'Could not obtain a response from the service.'
102
- end
103
-
104
- unless JSON.parse(response.body).fetch('responseCode') == 'OK'
105
- body = JSON.parse(response.body)
106
- msg = "#{body.fetch('responseCode')} : #{body.fetch('description')}"
107
- raise Errors::TransactionCommitError, msg
108
- end
109
- response
110
- end
111
-
112
- def validate_create_response!(response)
113
- unless response
114
- raise Errors::TransactionCreateError, 'Could not obtain a response from the service.'
115
- end
116
-
117
- unless JSON.parse(response.body).fetch('responseCode') == 'OK'
118
- body = JSON.parse(response.body)
119
- msg = "#{body.fetch('responseCode')} : #{body['description']}"
120
- raise Errors::TransactionCreateError, msg
121
- end
122
- response
123
- end
124
-
125
- def channel_is_app?(channel)
126
- channel && channel == Transbank::Onepay::Channel::APP
127
- end
128
-
129
- def channel_is_mobile?(channel)
130
- channel && channel == Transbank::Onepay::Channel::MOBILE
131
- end
132
-
133
- def transaction_create_path
134
- Base.current_integration_type_url + TRANSACTION_BASE_PATH + SEND_TRANSACTION
135
- end
136
-
137
- def transaction_commit_path
138
- Base.current_integration_type_url + TRANSACTION_BASE_PATH + COMMIT_TRANSACTION
139
- end
140
- end
141
- end
142
- end
143
- end
@@ -1,45 +0,0 @@
1
- module Transbank
2
- module Onepay
3
- # Creates a Refund request
4
- class RefundCreateRequest
5
- include Request
6
- attr_accessor :nullify_amount, :occ, :external_unique_number,
7
- :authorization_code, :issued_at, :signature
8
-
9
- # These are the params used to build this class's @signature
10
- SIGNATURE_PARAMS = [:occ,
11
- :external_unique_number,
12
- :authorization_code,
13
- :issued_at,
14
- :nullify_amount].freeze
15
-
16
- # @param nullify_amount [Integer, nil] The total amount of the [Transaction] to Refund.
17
- # No partial refunds are possible
18
- # @param external_unique_number [String] a unique value (per Merchant, not global) that is used to identify a Transaction
19
- # @param occ [String] Merchant purchase order
20
- # @param authorization_code [String] a string returned when [Transaction]#commit completes correctly
21
- # @param issued_at [Integer, nil] a timestamp
22
- # @param signature [String, nil] a hashed string to verify the data
23
- def initialize(nullify_amount: nil,
24
- occ: nil,
25
- external_unique_number: nil,
26
- authorization_code: nil,
27
- issued_at: nil,
28
- signature: nil)
29
- @nullify_amount = nullify_amount
30
- @occ = occ
31
- @external_unique_number = external_unique_number
32
- @authorization_code = authorization_code
33
- @issued_at = issued_at
34
- @signature = signature
35
- end
36
-
37
- # Create and set the signature for this instance of RefundCreateRequest
38
- # @return [RefundCreateRequest] returns self
39
- def sign(secret)
40
- @signature = signature_for(to_data, secret)
41
- self
42
- end
43
- end
44
- end
45
- end
@@ -1,18 +0,0 @@
1
- module Transbank
2
- module Onepay
3
- # Base module with methods & attributes common to Requests
4
- module Request
5
- include Transbank::Utils::JSONUtils, Utils::SignatureUtils
6
- attr_accessor :api_key
7
- attr_accessor :app_key
8
-
9
- # Set the request's @api_key overriding the one in
10
- # the [Base] class
11
- def set_keys_from_options(options)
12
- transform_hash_keys(options)
13
- new_api_key = options.fetch(:api_key, nil)
14
- self.api_key = new_api_key unless new_api_key.nil?
15
- end
16
- end
17
- end
18
- end
@@ -1,9 +0,0 @@
1
- require 'transbank/sdk/onepay/requests/request'
2
- require 'transbank/sdk/onepay/requests/transaction_create_request'
3
- require 'transbank/sdk/onepay/requests/transaction_commit_request'
4
- require 'transbank/sdk/onepay/requests/refund_create_request'
5
-
6
- module Transbank
7
- module Onepay
8
- end
9
- end
@@ -1,48 +0,0 @@
1
- module Transbank
2
- module Onepay
3
- # Creates a request to Transbank attempting to commit a [Transaction]
4
- class TransactionCommitRequest
5
- include Request
6
- attr_reader :occ, :external_unique_number, :issued_at, :signature
7
-
8
- SIGNATURE_PARAMS = [:occ,
9
- :external_unique_number,
10
- :issued_at].freeze
11
- # @param occ [String] Merchant purchase order
12
- # @param external_unique_number [String] a unique value (per Merchant, not global) that is used to identify a Transaction
13
- # @param issued_at [Integer] timestamp for when the transaction commit request was created
14
- def initialize(occ, external_unique_number, issued_at)
15
- self.occ = occ
16
- self.external_unique_number = external_unique_number
17
- self.issued_at = issued_at
18
- @signature = nil
19
- end
20
-
21
- # @param occ [String] Merchant purchase order
22
- def occ=(occ)
23
- raise Errors::TransactionCommitError, 'occ cannot be null.' if occ.nil?
24
- @occ = occ
25
- end
26
-
27
- # @param external_unique_number [String] a unique value (per Merchant, not global) that is used to identify a Transaction
28
- def external_unique_number=(external_unique_number)
29
- raise Errors::TransactionCommitError, 'external_unique_number cannot be null.' if external_unique_number.nil?
30
- @external_unique_number = external_unique_number
31
- end
32
-
33
- # @param issued_at [Integer] timestamp for when the transaction commit request was created
34
- def issued_at=(issued_at)
35
- raise Errors::TransactionCommitError, 'issued_at cannot be null.' if issued_at.nil?
36
- @issued_at = issued_at
37
- end
38
-
39
- # Create a signature string and assign it to @signature
40
- # @return [TransactionCommitRequest] self
41
- def sign(secret)
42
- @signature = signature_for(to_data, secret)
43
- self
44
- end
45
-
46
- end
47
- end
48
- end
@@ -1,85 +0,0 @@
1
- module Transbank
2
- module Onepay
3
- # Create a payload to create [Transaction] on Transbank
4
- class TransactionCreateRequest
5
- include Request
6
-
7
- attr_accessor :external_unique_number, :total, :items_quantity, :issued_at,
8
- :items, :callback_url, :channel, :app_scheme, :signature,
9
- :commerce_logo_url, :width_height
10
- attr_reader :generate_ott_qr_code
11
-
12
- SIGNATURE_PARAMS = [:external_unique_number,
13
- :total,
14
- :items_quantity,
15
- :issued_at,
16
- :callback_url].freeze
17
- # @param opts [Hash] options hash with params needed to initialize this
18
- # @param external_unique_number [String] Unique identifier (per Merchant) of the [Transaction] that
19
- # @param total [Numeric] the total amount to pay for the items
20
- # @param items_quantity [Numeric] the quantity of items on the shopping cart
21
- # @param items [Array<Item] the items on the shopping cart
22
- # @param issued_at [Numeric] timestamp at the moment the transaction is created
23
- # @param callback_url [String] used when the channel is mobile, to be able to finish the [Transaction]
24
- # @param channel [String] The channel the operation is made on. Valid values
25
- # are on the [Channel] class
26
- # @param app_scheme [String] identificator for the Merchant's app
27
- # @param signature [String, nil] a hashstring created for verification purposes
28
- # @param commerce_logo_url [String] The URL pointing to the Merchant's logo
29
- # @param width_height [Numeric] qr width and height used by the frontend JS SDK.
30
- def initialize(opts = {})
31
- self.external_unique_number = opts.fetch(:external_unique_number)
32
- self.total = opts.fetch(:total)
33
- self.items_quantity = opts.fetch(:items_quantity)
34
- self.items = opts.fetch(:items)
35
- self.issued_at = opts.fetch(:issued_at)
36
- self.callback_url = opts.fetch(:callback_url)
37
- channel = opts.fetch(:channel, Channel::WEB)
38
- self.channel = channel
39
- self.app_scheme = opts.fetch(:app_scheme, '')
40
- self.signature = nil
41
- self.commerce_logo_url = opts.fetch(:commerce_logo_url)
42
- self.width_height = opts.fetch(:width_height)
43
- # This is never anything but true, but it is required by the server
44
- @generate_ott_qr_code = true
45
- end
46
-
47
- def external_unique_number=(external_unique_number)
48
- raise Errors::TransactionCreateError, 'External Unique Number cannot be null.' if external_unique_number.nil?
49
- @external_unique_number = external_unique_number
50
- end
51
-
52
- def total=(total)
53
- raise Errors::TransactionCreateError, 'Total cannot be null.' if total.nil?
54
- raise Errors::TransactionCreateError, 'Total cannot be less than zero.' if total < 0
55
- @total = total
56
- end
57
-
58
- def items_quantity=(items_quantity)
59
- raise Errors::TransactionCreateError, 'Items quantity cannot be null.' if items_quantity.nil?
60
- raise Errors::TransactionCreateError, 'Items quantity cannot be less than zero.' if items_quantity < 0
61
- @items_quantity = items_quantity
62
- end
63
-
64
- def items=(items)
65
- raise Errors::TransactionCreateError, 'Items must not be empty.' if items.empty?
66
- @items = items
67
- end
68
-
69
- def callback_url=(callback_url)
70
- raise Errors::TransactionCreateError, 'Callback url cannot be null.' if callback_url.nil?
71
- @callback_url = callback_url
72
- end
73
-
74
- def channel=(channel)
75
- raise Errors::TransactionCreateError, 'Channel cannot be null.' if channel.nil?
76
- @channel = channel
77
- end
78
-
79
- def sign(secret)
80
- @signature = signature_for(to_data, secret)
81
- self
82
- end
83
- end
84
- end
85
- end
@@ -1,24 +0,0 @@
1
- module Transbank
2
- module Onepay
3
- # Serializes the response to a RefundCreateRequest
4
- class RefundCreateResponse
5
- include Response
6
- attr_accessor :occ, :external_unique_number, :reverse_code, :issued_at,
7
- :signature
8
- # @raise []RefundCreateError] if the responseCode from the service is not 'OK'
9
- def initialize(json)
10
- unless json.fetch('responseCode').downcase == 'ok'
11
- raise Errors::RefundCreateError, "#{json.fetch('responseCode')} : #{json.fetch('description')}"
12
- end
13
- result = json.fetch('result')
14
- @response_code = json.fetch('responseCode')
15
- @description = json.fetch('description')
16
- @occ = result.fetch('occ')
17
- @external_unique_number = result.fetch('externalUniqueNumber')
18
- @reverse_code = result.fetch('reverseCode')
19
- @issued_at = result.fetch('issuedAt')
20
- @signature = result.fetch('signature')
21
- end
22
- end
23
- end
24
- end
@@ -1,18 +0,0 @@
1
- module Transbank
2
- module Onepay
3
- # Shared methods and attributes between all types of Responses
4
- module Response
5
- include Utils::SignatureUtils, Transbank::Utils::JSONUtils
6
- attr_accessor :response_code
7
- attr_accessor :description
8
-
9
- def response_ok?
10
- response_code.downcase == 'ok'
11
- end
12
-
13
- def full_description
14
- "#{ response_code } : #{ description }"
15
- end
16
- end
17
- end
18
- end
@@ -1,9 +0,0 @@
1
- require 'transbank/sdk/onepay/responses/response'
2
- require 'transbank/sdk/onepay/responses/refund_create_response'
3
- require 'transbank/sdk/onepay/responses/transaction_commit_response'
4
- require 'transbank/sdk/onepay/responses/transaction_create_response'
5
-
6
- module Transbank
7
- module Onepay
8
- end
9
- end
@@ -1,39 +0,0 @@
1
- module Transbank
2
- module Onepay
3
- # Serializes the response to a TransactionCommitRequest
4
- class TransactionCommitResponse
5
- include Response
6
-
7
- attr_accessor :occ, :authorization_code, :signature, :transaction_desc,
8
- :buy_order, :issued_at, :amount, :installments_amount,
9
- :installments_number
10
-
11
- SIGNATURE_PARAMS = [:occ,
12
- :authorization_code,
13
- :issued_at,
14
- :amount,
15
- :installments_amount,
16
- :installments_number,
17
- :buy_order].freeze
18
- # @raise [KeyError] upon missing a response parameter
19
- def initialize(json)
20
- result = json.fetch('result')
21
- @response_code = json.fetch('responseCode')
22
- @description = json.fetch('description')
23
- @occ = result.fetch('occ')
24
- @authorization_code = result.fetch('authorizationCode')
25
- @signature = result.fetch('signature')
26
- @transaction_desc = result.fetch('transactionDesc')
27
- @buy_order = result.fetch('buyOrder')
28
- @issued_at = result.fetch('issuedAt')
29
- @amount = result.fetch('amount')
30
- @installments_amount = result.fetch('installmentsAmount')
31
- @installments_number = result.fetch('installmentsNumber')
32
- end
33
-
34
- def sign(secret)
35
- @signature = signature_for(to_data, secret)
36
- end
37
- end
38
- end
39
- end
@@ -1,32 +0,0 @@
1
- module Transbank
2
- module Onepay
3
- # Serializes the response to a TransactionCreateRequest
4
- class TransactionCreateResponse
5
- include Response
6
-
7
- attr_accessor :occ, :ott, :external_unique_number, :qr_code_as_base64,
8
- :issued_at, :signature
9
-
10
- SIGNATURE_PARAMS = [:occ,
11
- :external_unique_number,
12
- :issued_at].freeze
13
- # @raise [KeyError] upon trying to fetch a missing key from the response
14
- def initialize(json)
15
- result = json.fetch('result')
16
- @response_code = json.fetch('responseCode')
17
- @description = json.fetch('description')
18
- @occ = result.fetch('occ')
19
- @ott = result.fetch('ott')
20
- @external_unique_number = result.fetch('externalUniqueNumber')
21
- @qr_code_as_base64 = result.fetch('qrCodeAsBase64')
22
- @issued_at = result.fetch('issuedAt')
23
- @signature = result.fetch('signature')
24
- end
25
-
26
- def sign(secret)
27
- @signature = signature_for(to_data, secret)
28
- self
29
- end
30
- end
31
- end
32
- end
@@ -1,8 +0,0 @@
1
- module Transbank
2
- module Patpass
3
- module Errors
4
- class IntegrationTypeError < ::Transbank::Errors::TransbankError
5
- end
6
- end
7
- end
8
- end
@@ -1,15 +0,0 @@
1
- module Transbank
2
- module Patpass
3
- module Errors
4
- class PatpassError < ::Transbank::Errors::TransbankError
5
- attr_accessor :message, :code
6
- def initialize(message, code)
7
- self.message = message
8
- self.code = code
9
- super(message)
10
- end
11
- end
12
- end
13
- end
14
- end
15
-
@@ -1,47 +0,0 @@
1
- module Transbank
2
- module Patpass
3
- module PatpassByWebpay
4
- class Base
5
-
6
- DEFAULT_API_KEY = '579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C'.freeze
7
- DEFAULT_COMMERCE_CODE = '597055555550'.freeze
8
-
9
- @api_key = DEFAULT_API_KEY
10
- @commerce_code = DEFAULT_COMMERCE_CODE
11
- @integration_type = :TEST
12
- @integration_types = {
13
- LIVE: "https://webpay3g.transbank.cl/",
14
- TEST: "https://webpay3gint.transbank.cl/"
15
- }
16
- class << self
17
- attr_reader :integration_types
18
- attr_accessor :api_key, :integration_type, :commerce_code
19
-
20
- def integration_type_url(integration_type)
21
- type = integration_type.upcase.to_sym
22
- return @integration_types[type] unless @integration_types[type].nil?
23
- valid_values = @integration_types.keys.join(', ')
24
- raise Transbank::Patpass::Errors::IntegrationTypeError, "Invalid integration type, valid values are #{valid_values}"
25
- end
26
-
27
- def current_integration_type_url
28
- @integration_types[@integration_type]
29
- end
30
-
31
- def integration_type=(integration_type)
32
- type = integration_type.upcase.to_sym
33
- return @integration_type = type unless @integration_types[type].nil?
34
- valid_values = @integration_types.keys.join(', ')
35
- raise Transbank::Patpass::Errors::IntegrationTypeError, "Invalid integration type, valid values are #{valid_values}"
36
- end
37
-
38
- def configure_for_testing
39
- @api_key = DEFAULT_API_KEY
40
- @commerce_code = DEFAULT_COMMERCE_CODE
41
- self.integration_type = :TEST
42
- end
43
- end
44
- end
45
- end
46
- end
47
- end
@@ -1,12 +0,0 @@
1
- require 'transbank/sdk/patpass/patpass_by_webpay/errors/transaction_create_error'
2
- require 'transbank/sdk/patpass/patpass_by_webpay/errors/transaction_commit_error'
3
- require 'transbank/sdk/patpass/patpass_by_webpay/errors/transaction_status_error'
4
-
5
- module Transbank
6
- module Patpass
7
- module PatpassByWebpay
8
- module Errors
9
- end
10
- end
11
- end
12
- end
@@ -1,15 +0,0 @@
1
- module Transbank
2
- module Patpass
3
- module PatpassByWebpay
4
- module Errors
5
- class TransactionCommitError < ::Transbank::Patpass::Errors::PatpassError
6
- attr_reader :code
7
- def initialize(message, code)
8
- @code = code
9
- super(message, code)
10
- end
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,15 +0,0 @@
1
- module Transbank
2
- module Patpass
3
- module PatpassByWebpay
4
- module Errors
5
- class TransactionCreateError < ::Transbank::Patpass::Errors::PatpassError
6
- attr_reader :code
7
- def initialize(message, code)
8
- @code = code
9
- super(message, code)
10
- end
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,15 +0,0 @@
1
- module Transbank
2
- module Patpass
3
- module PatpassByWebpay
4
- module Errors
5
- class TransactionStatusError < ::Transbank::Patpass::Errors::PatpassError
6
- attr_reader :code
7
- def initialize(message, code)
8
- @code = code
9
- super(message, code)
10
- end
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,9 +0,0 @@
1
- module Transbank
2
- module Patpass
3
- module PatpassByWebpay
4
- class Options
5
- attr_accessor :api_key, :commerce_code, :integration_type
6
- end
7
- end
8
- end
9
- end
@@ -1,16 +0,0 @@
1
- require 'transbank/sdk/patpass/errors/patpass_error'
2
- require 'transbank/sdk/patpass/errors/integration_type_error'
3
- require 'transbank/sdk/patpass/patpass_by_webpay/errors/patpass_by_webpay_errors'
4
- require 'transbank/sdk/patpass/patpass_by_webpay/responses/patpass_by_webpay_responses'
5
-
6
- require 'transbank/sdk/patpass/patpass_by_webpay/base'
7
- require 'transbank/sdk/patpass/patpass_by_webpay/options'
8
- require 'transbank/sdk/patpass/patpass_by_webpay/transaction'
9
-
10
-
11
- module Transbank
12
- module Patpass
13
- module PatpassByWebpay
14
- end
15
- end
16
- end
@@ -1,3 +0,0 @@
1
- require 'transbank/sdk/patpass/patpass_by_webpay/responses/transaction_create_response'
2
- require 'transbank/sdk/patpass/patpass_by_webpay/responses/transaction_commit_response'
3
- require 'transbank/sdk/patpass/patpass_by_webpay/responses/transaction_status_response'