midas_client 0.1.1
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.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +50 -0
- data/Rakefile +10 -0
- data/config/settings.yml +24 -0
- data/config/settings/development.yml +31 -0
- data/config/settings/production.yml +31 -0
- data/config/settings/test.yml +0 -0
- data/lib/midas_client.rb +12 -0
- data/lib/midas_client/endpoints.rb +44 -0
- data/lib/midas_client/queries.rb +55 -0
- data/lib/midas_client/request.rb +60 -0
- data/lib/midas_client/subscription.rb +265 -0
- data/lib/midas_client/transaction.rb +396 -0
- data/lib/midas_client/util.rb +17 -0
- data/lib/midas_client/version.rb +3 -0
- data/midas_client.gemspec +44 -0
- metadata +137 -0
@@ -0,0 +1,265 @@
|
|
1
|
+
module MidasClient
|
2
|
+
|
3
|
+
class Subscription < MidasClient::Request
|
4
|
+
include EndPoints
|
5
|
+
|
6
|
+
# This method creates a subscription.
|
7
|
+
# It is a synchronous operation, using method POST
|
8
|
+
#
|
9
|
+
# Params:
|
10
|
+
# externalId: string (Transaction identification on the client application)
|
11
|
+
# externalDate: [optional] datetime from client application - YYYY-MM-DDThh:mm:SS.sssTDZ - ISO8601
|
12
|
+
# frequencyType string Is the frequency about the charge will run. Possible values: DAY/WEEK/MONTH
|
13
|
+
# frequencyInterval integer The interval that will be used.
|
14
|
+
# startDate datetime for the beginning of subscription - yyyy-MM-dd
|
15
|
+
# invoicesCount integer - number of invoices for the subscription
|
16
|
+
# amount: number (Only integer numbers, with the last two digits representing the cents.
|
17
|
+
# For example: 100 is equivalent to R$ 1,00)
|
18
|
+
# cardToken: string (created by method card_store)
|
19
|
+
# cvv: number (Security Code)
|
20
|
+
# callbackUrl string - URL to receive the result for each invoice charge
|
21
|
+
#
|
22
|
+
# Response:
|
23
|
+
# {
|
24
|
+
# "result": {
|
25
|
+
# "success": "true",
|
26
|
+
# "code": "0",
|
27
|
+
# "message": "Sucesso"
|
28
|
+
# },
|
29
|
+
# "subscriptionToken": "49ac54257eb1f92f"
|
30
|
+
# }
|
31
|
+
#
|
32
|
+
#
|
33
|
+
# Response with first payment
|
34
|
+
# {
|
35
|
+
# "result": {
|
36
|
+
# "success": "true",
|
37
|
+
# "code": "0",
|
38
|
+
# "message": "Sucesso"
|
39
|
+
# },
|
40
|
+
# "subscriptionToken": "49ac54257eb1f92f",
|
41
|
+
# "firstInvoiceResult": {
|
42
|
+
# "success": true,
|
43
|
+
# "code": "000",
|
44
|
+
# "message": "Sucesso"
|
45
|
+
# }
|
46
|
+
# }
|
47
|
+
#
|
48
|
+
#
|
49
|
+
# Error response
|
50
|
+
#{
|
51
|
+
# "result": {
|
52
|
+
# "success": "false",
|
53
|
+
# "code": "114",
|
54
|
+
# "message": "O token do cartao é obrigatório"
|
55
|
+
# }
|
56
|
+
#}
|
57
|
+
#
|
58
|
+
def self.create_subscription(*params)
|
59
|
+
# Parametros são recebidos como um array de hash, pego o 1o item do array
|
60
|
+
params = params.first
|
61
|
+
|
62
|
+
# inicializa as variáveis de retorno
|
63
|
+
result ={}
|
64
|
+
|
65
|
+
first_invoice_result = ""
|
66
|
+
subscription_token = ""
|
67
|
+
|
68
|
+
# define o método de envio da requisição
|
69
|
+
method = :post
|
70
|
+
|
71
|
+
# monta a URL de chamada da requisição
|
72
|
+
endpoint= EndPoints.get_env[:url] + EndPoints.get_env[:context] + EndPoints::Subscriptions[:create]
|
73
|
+
|
74
|
+
|
75
|
+
params[:externalDate] = (params[:externaldate].blank? ? Time.now.iso8601(1) : params[:externaldate])
|
76
|
+
params[:invoicesCount]= (params[:invoicesCount].blank? ? 12 : params[:invoicesCount])
|
77
|
+
|
78
|
+
# faz a chamada a plataforma de pagamento (MIDAS)
|
79
|
+
response = request(method, endpoint, self.login, self.password, params)
|
80
|
+
|
81
|
+
result = response[:result]
|
82
|
+
subscription_token = response[:subscriptionToken] if !response[:subscriptionToken].nil?
|
83
|
+
first_invoice_result = response[:firstInvoiceResult]
|
84
|
+
|
85
|
+
# grava o tempo de execução da operação
|
86
|
+
total_time_execution = Time.now - start_time_execution
|
87
|
+
|
88
|
+
return result, subscription_token, first_invoice_result
|
89
|
+
end
|
90
|
+
|
91
|
+
# This method cancel a subscription.
|
92
|
+
# This is a is synchronous operation.
|
93
|
+
#
|
94
|
+
# Params:
|
95
|
+
# subscriptionToken: string (Subscription unique identification generated by our
|
96
|
+
# gateway and received in the subscription's creation response)
|
97
|
+
#
|
98
|
+
# Response:
|
99
|
+
# result: {
|
100
|
+
# success: true/false
|
101
|
+
# code: "XXX"
|
102
|
+
# message: "Some message to you"
|
103
|
+
# }
|
104
|
+
def self.cancel_subscription(subscription_token)
|
105
|
+
# inicializa as variáveis de retorno
|
106
|
+
result ={}
|
107
|
+
|
108
|
+
# define o método de envio da requisição
|
109
|
+
method = :put
|
110
|
+
|
111
|
+
# monta a URL de chamada da requisição
|
112
|
+
endpoint = EndPoints.get_env[:url] + EndPoints.get_env[:context] + EndPoints::Subscriptions[:cancel].gsub("{subscriptionToken}", subscription_token)
|
113
|
+
|
114
|
+
# faz a chamada a plataforma de pagamento (MIDAS)
|
115
|
+
response = request(method, endpoint, self.login, self.password, {})
|
116
|
+
|
117
|
+
result = response[:result]
|
118
|
+
|
119
|
+
return result
|
120
|
+
end
|
121
|
+
|
122
|
+
# This method performs a query by a specific transaction.
|
123
|
+
# This is a is synchronous operation, using method GET
|
124
|
+
#
|
125
|
+
# Params:
|
126
|
+
# subscription_token: string (Transaction unique identification generated by our
|
127
|
+
# gateway and received in the subscription's create response)#
|
128
|
+
#
|
129
|
+
#
|
130
|
+
# Response:
|
131
|
+
# {
|
132
|
+
# :result=>{
|
133
|
+
# :success=>true,
|
134
|
+
# :code=>"000",
|
135
|
+
# :message=>"Sucesso"
|
136
|
+
# },
|
137
|
+
# :subscription=>{
|
138
|
+
# :externalId=>"10011",
|
139
|
+
# :frequencyType=>"MONTH",
|
140
|
+
# :frequencyInterval=>1,
|
141
|
+
# :startDate=>"2016-07-28T00:00:00.000-04",
|
142
|
+
# :invoicesCount=>12,
|
143
|
+
# :paymentMethod=>"CREDIT_CARD",
|
144
|
+
# :amount=>5000,
|
145
|
+
# :creditCard=>{
|
146
|
+
# :brand=>"VISA",
|
147
|
+
# :panLastDigits=>"1855",
|
148
|
+
# :expirationMonth=>12,
|
149
|
+
# :expirationYear=>2020,
|
150
|
+
# :holderName=>"TESTE CONSOLE",
|
151
|
+
# :customer=>{
|
152
|
+
# :documentType=>"CPF",
|
153
|
+
# :documentNumber=>"41468031520"
|
154
|
+
# }
|
155
|
+
# },
|
156
|
+
# :token=>"a2bebd13f0a43e5a",
|
157
|
+
# :status=>"CANCELLED"
|
158
|
+
# }
|
159
|
+
# }
|
160
|
+
def self.subscription_by_token(subscription_token)
|
161
|
+
# inicializa as variáveis de retorno
|
162
|
+
result ={}
|
163
|
+
|
164
|
+
# define o método de envio da requisição
|
165
|
+
method = :get
|
166
|
+
|
167
|
+
# monta a URL de chamada da requisição
|
168
|
+
endpoint = EndPoints.get_env[:url] + EndPoints.get_env[:context] + EndPoints::Subscriptions[:by_token].gsub("{subscriptionToken}", subscription_token)
|
169
|
+
|
170
|
+
# faz a chamada a plataforma de pagamento (MIDAS)
|
171
|
+
response = request(method, endpoint, self.login, self.password, {})
|
172
|
+
|
173
|
+
result = response[:result]
|
174
|
+
|
175
|
+
return result, response[:subscription]
|
176
|
+
end
|
177
|
+
|
178
|
+
|
179
|
+
# This method performs a query by a specific transaction.
|
180
|
+
# This is a is synchronous operation, using method GET
|
181
|
+
#
|
182
|
+
# Params:
|
183
|
+
# subscription_token: string (Transaction unique identification generated by our
|
184
|
+
# gateway and received in the subscription's create response)#
|
185
|
+
#
|
186
|
+
#
|
187
|
+
# Response:
|
188
|
+
#
|
189
|
+
# {
|
190
|
+
# :result=>{
|
191
|
+
# :success=>true,
|
192
|
+
# :code=>"000",
|
193
|
+
# :message=>"Sucesso"
|
194
|
+
# },
|
195
|
+
# :invoices=>[{
|
196
|
+
# :number=>1,
|
197
|
+
# :amount=>5000,
|
198
|
+
# :expirationDate=>"2016-07-28",
|
199
|
+
# :token=>"8bc3bf2ff9b08566fa8496fdce6c6f99",
|
200
|
+
# :status=>"PAID"
|
201
|
+
# }. {:number=>2,...}, {:number=>3,}]
|
202
|
+
# }
|
203
|
+
def self.subscription_invoices(subscription_token)
|
204
|
+
# inicializa as variáveis de retorno
|
205
|
+
result ={}
|
206
|
+
|
207
|
+
# define o método de envio da requisição
|
208
|
+
method = :get
|
209
|
+
|
210
|
+
# monta a URL de chamada da requisição
|
211
|
+
endpoint = EndPoints.get_env[:url] + EndPoints.get_env[:context] + EndPoints::Subscriptions[:invoices].gsub("{subscriptionToken}", subscription_token)
|
212
|
+
|
213
|
+
# faz a chamada a plataforma de pagamento (MIDAS)
|
214
|
+
response = request(method, endpoint, self.login, self.password, {})
|
215
|
+
|
216
|
+
result = response[:result]
|
217
|
+
|
218
|
+
invoices = response[:invoices]
|
219
|
+
|
220
|
+
return result, invoices
|
221
|
+
end
|
222
|
+
|
223
|
+
|
224
|
+
# This method updates the credit card information associated to the subscription.
|
225
|
+
# This is a is synchronous operation, using method PUT
|
226
|
+
#
|
227
|
+
# Params:
|
228
|
+
# subscription_token: string (Transaction unique identification generated by our
|
229
|
+
# gateway and received in the subscription's create response)#
|
230
|
+
# new_card_token: string that represents the new credit card token (created using card_store) for the subscription
|
231
|
+
#
|
232
|
+
# Response:
|
233
|
+
# {
|
234
|
+
# "result": {
|
235
|
+
# "success": true,
|
236
|
+
# "code": "0",
|
237
|
+
# "message": "Sucesso"
|
238
|
+
# }
|
239
|
+
# }
|
240
|
+
#
|
241
|
+
def self.update_subscription_card(subscription_token, new_card_token)
|
242
|
+
# inicializa as variáveis de retorno
|
243
|
+
result ={}
|
244
|
+
|
245
|
+
# define o método de envio da requisição
|
246
|
+
method = :put
|
247
|
+
|
248
|
+
# monta a URL de chamada da requisição
|
249
|
+
endpoint = EndPoints.get_env[:url] + EndPoints.get_env[:context] + EndPoints::Subscriptions[:update_card].gsub("{subscriptionToken}", subscription_token)
|
250
|
+
|
251
|
+
params = {
|
252
|
+
cardToken: new_card_token
|
253
|
+
}
|
254
|
+
|
255
|
+
# faz a chamada a plataforma de pagamento (MIDAS)
|
256
|
+
response = request(method, endpoint, self.login, self.password, params)
|
257
|
+
|
258
|
+
result = response[:result]
|
259
|
+
|
260
|
+
return result
|
261
|
+
end
|
262
|
+
|
263
|
+
end
|
264
|
+
|
265
|
+
end
|
@@ -0,0 +1,396 @@
|
|
1
|
+
module MidasClient
|
2
|
+
class Transaction < MidasClient::Request
|
3
|
+
|
4
|
+
include MidasClient::EndPoints
|
5
|
+
|
6
|
+
# This method securely stores credit card's data (pan, expiration...)
|
7
|
+
# and returns a token to be used to perform payment transactions.
|
8
|
+
#
|
9
|
+
# Params:
|
10
|
+
# externalId: number (Transaction identification on the client application)
|
11
|
+
# pan: number
|
12
|
+
# expirationMonth: number (format: MM)
|
13
|
+
# expirationYear: number (format: YYYY)
|
14
|
+
# holderName: string
|
15
|
+
# customer/documentType: string (values: {'CPF', 'CNPJ'})
|
16
|
+
# customer/documentNumber: string
|
17
|
+
#
|
18
|
+
# Response success:
|
19
|
+
# {
|
20
|
+
# "result": {
|
21
|
+
# "success":"true",
|
22
|
+
# "code":"000",
|
23
|
+
# "message":"Success"
|
24
|
+
# },
|
25
|
+
# "brand":"VISA",
|
26
|
+
# "cardToken":"2b5141a2209384e4266c8f7cbaf67a2d"
|
27
|
+
# }
|
28
|
+
#
|
29
|
+
# Response Failure
|
30
|
+
# {
|
31
|
+
# :result=>{
|
32
|
+
# :success=>false,
|
33
|
+
# :code=>"120",
|
34
|
+
# :message=>"O numero do documento eh obrigatorio"
|
35
|
+
# }
|
36
|
+
# }
|
37
|
+
#
|
38
|
+
def card_store(*params)
|
39
|
+
# Parametros são recebidos como um array de hash, pego o 1o item do array
|
40
|
+
params = params.first
|
41
|
+
|
42
|
+
# inicializa as variáveis de retorno
|
43
|
+
result ={}
|
44
|
+
card_token = nil
|
45
|
+
|
46
|
+
# define o método de envio da requisição
|
47
|
+
method = :post
|
48
|
+
|
49
|
+
# monta a URL de chamada da requisição
|
50
|
+
endpoint= EndPoints.get_env[:url] + EndPoints.get_env[:context] + EndPoints::Operations[:store]
|
51
|
+
|
52
|
+
# faz a chamada a plataforma de pagamento (MIDAS)
|
53
|
+
response = request(method, endpoint, login, password, params)
|
54
|
+
|
55
|
+
result = response[:result]
|
56
|
+
card_token = response[:cardToken] if !response[:cardToken].nil?
|
57
|
+
|
58
|
+
return result, card_token
|
59
|
+
end
|
60
|
+
|
61
|
+
# This method creates a payment transaction, already performing
|
62
|
+
# the authorization and capture in only one step.
|
63
|
+
#
|
64
|
+
# Params:
|
65
|
+
# externalId: string (Transaction identification on the client application)
|
66
|
+
# externalDate: Date and time form client application - YYYY-MM-DDThh:mm:SS.sssTDZ - ISO8601
|
67
|
+
# cardToken: string (created by method card_store)
|
68
|
+
# cvv: number (Security Code)
|
69
|
+
# amount: number (Only integer numbers, with the last two digits representing the cents.
|
70
|
+
# For example: 100 is equivalent to R$ 1,00)
|
71
|
+
# instalments: number (1 to 12)
|
72
|
+
#
|
73
|
+
# Response:
|
74
|
+
# result: {
|
75
|
+
# success: true/false
|
76
|
+
# code: "XXX"
|
77
|
+
# message: "Some message to you"
|
78
|
+
# },
|
79
|
+
# transactionToken: "65ffe2897b832cb89cb2063b74fbb143",
|
80
|
+
# nsu: "99999"
|
81
|
+
#
|
82
|
+
def synchronous_transaction(*params)
|
83
|
+
# Parametros são recebidos como um array de hash, pego o 1o item do array
|
84
|
+
params = params.first
|
85
|
+
|
86
|
+
# inicializa as variáveis de retorno
|
87
|
+
result ={}
|
88
|
+
nsu = ""
|
89
|
+
transaction_token = ""
|
90
|
+
|
91
|
+
# define o método de envio da requisição
|
92
|
+
method = :post
|
93
|
+
|
94
|
+
# monta a URL de chamada da requisição
|
95
|
+
endpoint= EndPoints.get_env[:url] + EndPoints.get_env[:context] + EndPoints::Operations[:synchronous_transaction]
|
96
|
+
|
97
|
+
# regulariza o formato da data
|
98
|
+
params[:externaldate] = params[:externaldate].blank? ? Time.now.iso8601(1) : params[:externaldate]
|
99
|
+
|
100
|
+
# faz a chamada a plataforma de pagamento (MIDAS)
|
101
|
+
response = request(method, endpoint, self.login, self.password, params)
|
102
|
+
|
103
|
+
result = response[:result]
|
104
|
+
nsu = response[:nsu] if !response[:nsu].nil?
|
105
|
+
transaction_token = response[:transactionToken] if !response[:transactionToken].nil?
|
106
|
+
|
107
|
+
return result, transaction_token, nsu
|
108
|
+
end
|
109
|
+
|
110
|
+
# This method dispatches a payment transaction creation request, already performing
|
111
|
+
# the authorization and capture in only one step, but sending the response using the
|
112
|
+
# informed callback URL, in an asynchronous away.
|
113
|
+
#
|
114
|
+
# Params:
|
115
|
+
# externalId: string (Transaction identification on the client application)
|
116
|
+
# externalDate: Date and time form client application - YYYY-MM-DDThh:mm:SS.sssTDZ - ISO8601
|
117
|
+
# cardToken: string (created by method card_store)
|
118
|
+
# cvv: number (Security Code)
|
119
|
+
# softDescriptor: string (Text to be shown on the credit card invoice entry)
|
120
|
+
# amount: number (Only integer numbers, with the last two digits representing the cents.
|
121
|
+
# For example: 100 is equivalent to R$ 1,00)
|
122
|
+
# instalments: number (1 to 12)
|
123
|
+
# callbackUrl: string (URL used to notify the client application about the transaction creation result. )
|
124
|
+
#
|
125
|
+
# # Response:
|
126
|
+
# result: {
|
127
|
+
# success: true/false
|
128
|
+
# code: "XXX"
|
129
|
+
# message: "Some message to you"
|
130
|
+
# },
|
131
|
+
# transactionToken: "65ffe2897b832cb89cb2063b74fbb143",
|
132
|
+
#
|
133
|
+
def self.asynchronous_transaction(*params)
|
134
|
+
# Parametros são recebidos como um array de hash, pego o 1o item do array
|
135
|
+
params = params.first
|
136
|
+
|
137
|
+
# inicializa as variáveis de retorno
|
138
|
+
result ={}
|
139
|
+
transaction_token = ""
|
140
|
+
|
141
|
+
# define o método de envio da requisição
|
142
|
+
method = :post
|
143
|
+
|
144
|
+
# monta a URL de chamada da requisição
|
145
|
+
endpoint= EndPoints.get_env[:url] + EndPoints.get_env[:context] + EndPoints::Operations[:asynchronous_transaction]
|
146
|
+
|
147
|
+
# regulariza o formato da data
|
148
|
+
params[:externalDate] = (params[:externaldate].blank? ? Time.now.iso8601(1) : params[:externaldate])
|
149
|
+
|
150
|
+
# faz a chamada a plataforma de pagamento (MIDAS)
|
151
|
+
response = request(method, endpoint, self.login, self.password, params)
|
152
|
+
|
153
|
+
result = response[:result]
|
154
|
+
transaction_token = response[:transactionToken] if !response[:transactionToken].nil?
|
155
|
+
|
156
|
+
return result, transaction_token
|
157
|
+
end
|
158
|
+
|
159
|
+
# This method dispatches a debit payment transaction request, that's receive an authorization URL,
|
160
|
+
# where the payer must authorize the transaction.
|
161
|
+
#
|
162
|
+
# Params:
|
163
|
+
# externalId: string (Transaction identification on the client application)
|
164
|
+
# externalDate: Date and time form client application - YYYY-MM-DDThh:mm:SS.sssTDZ - ISO8601
|
165
|
+
# pan: DebitCard Number
|
166
|
+
# expirationMonth:
|
167
|
+
# expirationYear:
|
168
|
+
# holderName:
|
169
|
+
# customer/documentType: CPF/CNPJ
|
170
|
+
# customer/documentNumber: if CPF 11 digits else CNPJ 13 digits
|
171
|
+
# cvv: number (Security Code)
|
172
|
+
# amount: number (Only integer numbers, with the last two digits representing the cents.
|
173
|
+
# For example: 100 is equivalent to R$ 1,00)
|
174
|
+
# callbackUrl: string (URL used to notify the client application about the transaction authorization result. async notification )
|
175
|
+
# redirectUrl: string (URL used to notify the client application that the transaction authorization result successful. )
|
176
|
+
# errorUrl: string (URL used to notify the client application that the transaction authorization result failed)
|
177
|
+
#
|
178
|
+
# # Response:
|
179
|
+
# result: {
|
180
|
+
# success: true/false
|
181
|
+
# code: "XXX"
|
182
|
+
# message: "Some message to you"
|
183
|
+
# },
|
184
|
+
# "authenticationUrl": "https://qasecommerce.cielo.com.br/web/index.cbmp?id=ac470d041f660e21d253a5741e59c5b4",
|
185
|
+
# "transactionToken":"6accbedb2da4f7bfbca5b5fed3669be6",
|
186
|
+
#
|
187
|
+
def self.asynchronous_debit_transaction(*params)
|
188
|
+
# Parametros são recebidos como um array de hash, pego o 1o item do array
|
189
|
+
params = params.first
|
190
|
+
|
191
|
+
# inicializa as variáveis de retorno
|
192
|
+
result ={}
|
193
|
+
transaction_token = ""
|
194
|
+
|
195
|
+
# define o método de envio da requisição
|
196
|
+
method = :post
|
197
|
+
|
198
|
+
# monta a URL de chamada da requisição
|
199
|
+
endpoint= EndPoints.get_env[:url] + EndPoints.get_env[:context] + EndPoints::Operations[:asynchronous_debit_transaction]
|
200
|
+
|
201
|
+
# regulariza formato da data
|
202
|
+
params[:externalDate] = (params[:externaldate].blank? ? Time.now.iso8601(1) : params[:externaldate])
|
203
|
+
|
204
|
+
# faz a chamada a plataforma de pagamento (MIDAS)
|
205
|
+
response = request(method, endpoint, self.login, self.password, params)
|
206
|
+
|
207
|
+
result = response[:result]
|
208
|
+
authentication_url = response[:authenticationUrl] unless response[:authenticationUrl].nil?
|
209
|
+
transaction_token = response[:transactionToken] unless response[:transactionToken].nil?
|
210
|
+
|
211
|
+
return result, authentication_url, transaction_token
|
212
|
+
end
|
213
|
+
|
214
|
+
# This method performs a payment authorization. This is a is synchronous operation.
|
215
|
+
# To confirm the payment and finish the transaction you must send a capture request
|
216
|
+
#
|
217
|
+
# Params:
|
218
|
+
# externalId: string (Transaction identification on the client application)
|
219
|
+
# externalDate: Date and time form client application - YYYY-MM-DDThh:mm:SS.sssTDZ - ISO8601
|
220
|
+
# cardToken: string (created by method card_store)
|
221
|
+
# cvv: number (Security Code)
|
222
|
+
# amount: number (Only integer numbers, with the last two digits representing the cents.
|
223
|
+
# For example: 100 is equivalent to R$ 1,00)
|
224
|
+
# instalments: number (1 to 12)
|
225
|
+
#
|
226
|
+
# Response:
|
227
|
+
# {
|
228
|
+
# result: {
|
229
|
+
# success: true/false
|
230
|
+
# code: "XXX"
|
231
|
+
# message: "Some message to you"
|
232
|
+
# }
|
233
|
+
# }
|
234
|
+
#
|
235
|
+
# Response Failure
|
236
|
+
# {
|
237
|
+
# :result=>{
|
238
|
+
# :success=>false,
|
239
|
+
# :code=>"150",
|
240
|
+
# :message=>"A data externa é obrigatória"
|
241
|
+
# }
|
242
|
+
# }
|
243
|
+
#
|
244
|
+
def self.authorize(*params)
|
245
|
+
# Parametros são recebidos como um array de hash, pego o 1o item do array
|
246
|
+
params = params.first
|
247
|
+
|
248
|
+
# inicializa as variáveis de retorno
|
249
|
+
result ={}
|
250
|
+
transaction_token = ""
|
251
|
+
|
252
|
+
# define o método de envio da requisição
|
253
|
+
method = :post
|
254
|
+
|
255
|
+
# monta a URL de chamada da requisição
|
256
|
+
endpoint= EndPoints.get_env[:url] + EndPoints.get_env[:context] + EndPoints::Operations[:authorize]
|
257
|
+
|
258
|
+
# regulariza o formato da data
|
259
|
+
params[:externalDate] = (params[:externaldate].blank? ? Time.now.iso8601(1) : params[:externaldate])
|
260
|
+
|
261
|
+
# faz a chamada a plataforma de pagamento (MIDAS)
|
262
|
+
response = request(method, endpoint, self.login, self.password, params)
|
263
|
+
|
264
|
+
result = response[:result]
|
265
|
+
nsu = response[:nsu] if !response[:nsu].nil?
|
266
|
+
transaction_token = response[:transactionToken] if !response[:transactionToken].nil?
|
267
|
+
|
268
|
+
return result, transaction_token
|
269
|
+
end
|
270
|
+
|
271
|
+
# This method performs a capture (confirmation) in a already authorized transaction.
|
272
|
+
# This is a is synchronous operation.
|
273
|
+
#
|
274
|
+
# Params:
|
275
|
+
# transactionToken: string (Transaction unique identification generated by our
|
276
|
+
# gateway and received in the transaction authorization response)
|
277
|
+
#
|
278
|
+
# Response:
|
279
|
+
# result: {
|
280
|
+
# success: true/false
|
281
|
+
# code: "XXX"
|
282
|
+
# message: "Some message to you"
|
283
|
+
# }
|
284
|
+
def self.capture(transaction_token)
|
285
|
+
# inicializa as variáveis de retorno
|
286
|
+
result ={}
|
287
|
+
|
288
|
+
# define o método de envio da requisição
|
289
|
+
method = :put
|
290
|
+
|
291
|
+
# monta a URL de chamada da requisição
|
292
|
+
endpoint = EndPoints.get_env[:url] + EndPoints.get_env[:context] + EndPoints::Operations[:confirm].gsub("{transactionToken}", transaction_token)
|
293
|
+
|
294
|
+
# faz a chamada a plataforma de pagamento (MIDAS)
|
295
|
+
response = self.request(method, endpoint, self.login, self.password, {})
|
296
|
+
|
297
|
+
result = response[:result]
|
298
|
+
|
299
|
+
return result
|
300
|
+
end
|
301
|
+
|
302
|
+
# This method performs a cancellation in a already authorized transaction.
|
303
|
+
# This is a is synchronous operation.
|
304
|
+
#
|
305
|
+
# Params:
|
306
|
+
# transactionToken: string (Transaction unique identification generated by our
|
307
|
+
# gateway and received in the transaction authorization response)
|
308
|
+
#
|
309
|
+
# Response:
|
310
|
+
# result: {
|
311
|
+
# success: true/false
|
312
|
+
# code: "XXX"
|
313
|
+
# message: "Some message to you"
|
314
|
+
# }
|
315
|
+
def self.cancellation(transaction_token)
|
316
|
+
# inicializa as variáveis de retorno
|
317
|
+
result ={}
|
318
|
+
|
319
|
+
# define o método de envio da requisição
|
320
|
+
method = :put
|
321
|
+
|
322
|
+
# monta a URL de chamada da requisição
|
323
|
+
endpoint = EndPoints.get_env[:url] + EndPoints.get_env[:context] + EndPoints::Operations[:cancel].gsub("{transactionToken}", transaction_token)
|
324
|
+
|
325
|
+
# faz a chamada a plataforma de pagamento (MIDAS)
|
326
|
+
response = self.request(method, endpoint, self.login, self.password, {})
|
327
|
+
result = response[:result]
|
328
|
+
|
329
|
+
return result
|
330
|
+
end
|
331
|
+
|
332
|
+
# This method performs a refund in a captured authorized transaction.
|
333
|
+
# This is a is synchronous operation.
|
334
|
+
#
|
335
|
+
# Params:
|
336
|
+
# transactionToken: string (Transaction unique identification generated by our
|
337
|
+
# gateway and received in the transaction authorization response)#
|
338
|
+
#
|
339
|
+
#
|
340
|
+
# Response:
|
341
|
+
# result: {
|
342
|
+
# success: true/false
|
343
|
+
# code: "XXX"
|
344
|
+
# message: "Some message to you"
|
345
|
+
# }
|
346
|
+
def self.refund(transaction_token)
|
347
|
+
# inicializa as variáveis de retorno
|
348
|
+
result ={}
|
349
|
+
|
350
|
+
# define o método de envio da requisição
|
351
|
+
method = :put
|
352
|
+
|
353
|
+
# monta a URL de chamada da requisição
|
354
|
+
endpoint = EndPoints.get_env[:url] + EndPoints.get_env[:context] + EndPoints::Operations[:refund].gsub("{transactionToken}", transaction_token)
|
355
|
+
|
356
|
+
# faz a chamada a plataforma de pagamento (MIDAS)
|
357
|
+
response = request(method, endpoint, self.login, self.password, {})
|
358
|
+
|
359
|
+
result = response[:result]
|
360
|
+
|
361
|
+
return result
|
362
|
+
end
|
363
|
+
|
364
|
+
# This method performs a query by a specific transaction.
|
365
|
+
# This is a is synchronous operation, using method GET
|
366
|
+
#
|
367
|
+
# Params:
|
368
|
+
# transactionToken: string (Transaction unique identification generated by our
|
369
|
+
# gateway and received in the transaction authorization response)#
|
370
|
+
#
|
371
|
+
#
|
372
|
+
# Response:
|
373
|
+
# result: {
|
374
|
+
# success: true/false
|
375
|
+
# code: "XXX"
|
376
|
+
# message: "Some message to you"
|
377
|
+
# }
|
378
|
+
def self.query_transaction(transaction_token)
|
379
|
+
# inicializa as variáveis de retorno
|
380
|
+
result ={}
|
381
|
+
|
382
|
+
# define o método de envio da requisição
|
383
|
+
method = :get
|
384
|
+
|
385
|
+
# monta a URL de chamada da requisição
|
386
|
+
endpoint = EndPoints.get_env[:url] + EndPoints.get_env[:context] + EndPoints::Operations[:query_by_transaction].gsub("{transactionToken}", transaction_token)
|
387
|
+
|
388
|
+
response = request(method, endpoint, login, password, params)
|
389
|
+
|
390
|
+
result = response[:result]
|
391
|
+
|
392
|
+
return result
|
393
|
+
end
|
394
|
+
|
395
|
+
end
|
396
|
+
end
|