stone_ecommerce 1.2.3 → 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +202 -202
  3. data/README.md +58 -58
  4. data/lib/gateway/Address/billing_address.rb +33 -33
  5. data/lib/gateway/Address/buyer_address.rb +38 -38
  6. data/lib/gateway/Address/delivery_address.rb +34 -34
  7. data/lib/gateway/BoletoTransaction/boleto_transaction.rb +40 -40
  8. data/lib/gateway/BoletoTransaction/boleto_transaction_options.rb +16 -16
  9. data/lib/gateway/BoletoTransaction/boleto_transaction_report_file.rb +22 -22
  10. data/lib/gateway/CreditCardTransaction/credit_card.rb +30 -30
  11. data/lib/gateway/CreditCardTransaction/credit_card_transaction.rb +33 -33
  12. data/lib/gateway/CreditCardTransaction/credit_card_transaction_options.rb +28 -28
  13. data/lib/gateway/CreditCardTransaction/credit_card_transaction_report_file.rb +31 -31
  14. data/lib/gateway/CreditCardTransaction/manage_credit_card_transaction.rb +14 -14
  15. data/lib/gateway/CreditCardTransaction/retry_sale_credit_card_transaction.rb +14 -14
  16. data/lib/gateway/Gateway.rb +621 -621
  17. data/lib/gateway/InstantBuyData/create_instant_buy_data_request.rb +30 -30
  18. data/lib/gateway/InstantBuyData/update_instant_buy_data_request.rb +10 -10
  19. data/lib/gateway/Merchant/merchant.rb +12 -12
  20. data/lib/gateway/OnlineDebit/online_debit_transaction_report_file.rb +21 -21
  21. data/lib/gateway/Order/order.rb +13 -13
  22. data/lib/gateway/Order/order_transaction_report_file.rb +8 -8
  23. data/lib/gateway/Parsers/boleto_transaction_parser.rb +33 -33
  24. data/lib/gateway/Parsers/credit_card_transaction_parser.rb +42 -42
  25. data/lib/gateway/Parsers/header_parser.rb +16 -16
  26. data/lib/gateway/Parsers/online_debit_transaction_parser.rb +32 -32
  27. data/lib/gateway/Parsers/trailer_parser.rb +16 -16
  28. data/lib/gateway/Person/buyer.rb +32 -32
  29. data/lib/gateway/Person/create_buyer_request.rb +22 -22
  30. data/lib/gateway/Person/person.rb +48 -48
  31. data/lib/gateway/Recurrency/recurrency.rb +24 -24
  32. data/lib/gateway/Sale/create_sale_request.rb +37 -37
  33. data/lib/gateway/Sale/manage_sale_request.rb +18 -18
  34. data/lib/gateway/Sale/query_sale_request.rb +37 -37
  35. data/lib/gateway/Sale/request_data.rb +21 -21
  36. data/lib/gateway/Sale/retry_sale_options.rb +15 -15
  37. data/lib/gateway/Sale/retry_sale_request.rb +23 -23
  38. data/lib/gateway/Sale/sale_data.rb +30 -30
  39. data/lib/gateway/Sale/sale_order_data.rb +18 -18
  40. data/lib/gateway/SalesOption.rb +18 -18
  41. data/lib/gateway/ShoppingCart/shopping_cart.rb +27 -27
  42. data/lib/gateway/ShoppingCart/shopping_cart_item.rb +24 -24
  43. data/lib/gateway/Trailer.rb +8 -8
  44. data/lib/gateway/header.rb +7 -7
  45. data/lib/gateway/post_notification.rb +31 -31
  46. data/lib/gateway/transaction_report_file.rb +47 -47
  47. data/lib/stone_ecommerce.rb +61 -62
  48. data/spec/integration/gateway_spec.rb +1024 -1024
  49. data/spec/integration/test_helper.rb +68 -68
  50. data/stone_ecommerce.gemspec +20 -19
  51. metadata +27 -24
@@ -1,621 +1,621 @@
1
- require_relative '../../lib/stone_ecommerce'
2
- module Gateway
3
-
4
- class Gateway
5
- extend Gem::Deprecate
6
-
7
- attr_reader :serviceEnvironment
8
-
9
- attr_reader :merchantKey
10
-
11
- def initialize(environment=:sandbox, merchantKey)
12
- @serviceEnvironment = environment
13
- @merchantKey = merchantKey
14
- @@SERVICE_HEADERS = {:MerchantKey => "#{@merchantKey}", :Accept => 'application/json', :"Content-Type" => 'application/json'}
15
- end
16
-
17
- # URL de producao
18
- @@SERVICE_URL_PRODUCTION = 'https://transaction.stone.com.br'
19
-
20
- # URL de homologacao
21
- @@SERVICE_URL_STAGING = ''
22
-
23
- # URL de sandbox
24
- @@SERVICE_URL_SANDBOX = 'https://transaction.stone.com.br'
25
-
26
- # URL do postnotification de producao
27
- @@SERVICE_URL_NOTIFICATION_PRODUCTION = ''
28
-
29
- # URL do postnotification de sandbox
30
- @@SERVICE_URL_NOTIFICATION_SANDBOX = ''
31
-
32
- # permite que o integrador adicione uma busca por transacoes utilizando alguns criterios
33
- def Query(querySaleRequestEnum, key)
34
- # try, tenta fazer o request
35
- begin
36
- # se for homologacao faz a chamada por aqui
37
- if @serviceEnvironment == :staging
38
- getRequest(@@SERVICE_URL_STAGING + '/Sale/Query/' + querySaleRequestEnum + '=' + key)
39
-
40
- # se for producao, faz a chamada por aqui
41
- elsif @serviceEnvironment == :production
42
- getRequest(@@SERVICE_URL_PRODUCTION + '/Sale/Query/' + querySaleRequestEnum + '=' + key)
43
-
44
- # se for sandbox
45
- elsif @serviceEnvironment == :sandbox
46
- getRequest(@@SERVICE_URL_SANDBOX + '/Sale/Query/' + querySaleRequestEnum + '=' + key)
47
- end
48
-
49
- # se der algum erro, trata aqui
50
- rescue Exception => e
51
- return e.message
52
- end
53
- end
54
-
55
- # criar uma transacao na plataforma One utilizando um ou mais meios de pagamento
56
- def CreateSale(createSaleRequest)
57
-
58
- saleHash = createSaleRequest.to_json
59
-
60
- saleHash['BoletoTransactionCollection'] = []
61
-
62
- saleHash['CreditCardTransactionCollection'] = []
63
-
64
- saleHash['ShoppingCartCollection'] = []
65
-
66
- begin
67
- # transforma a colecao de boleto em json
68
- if createSaleRequest.BoletoTransactionCollection.any? == false || createSaleRequest.BoletoTransactionCollection.nil?
69
- saleHash['BoletoTransactionCollection'] = nil
70
-
71
- else
72
- createSaleRequest.BoletoTransactionCollection.each_with_index do |boleto, index|
73
- b = boleto.to_json
74
- saleHash['BoletoTransactionCollection'] << b
75
-
76
- if boleto.Options.to_json.any?
77
- boleto_options = boleto.Options.to_json
78
- saleHash['BoletoTransactionCollection'][index]['Options'] = boleto_options
79
- else
80
- saleHash['BoletoTransactionCollection'][index]['Options'] = nil
81
- end
82
-
83
- if boleto.BillingAddress.to_json.any?
84
- boleto_billing_address = boleto.BillingAddress.to_json
85
- saleHash['BoletoTransactionCollection'][index]['BillingAddress'] = boleto_billing_address
86
- else
87
- saleHash['BoletoTransactionCollection'][index]['BillingAddress'] = nil
88
- end
89
- end
90
- end
91
-
92
- # transforma a colecao de cartao de credito em json
93
- if createSaleRequest.CreditCardTransactionCollection.any? == false || createSaleRequest.CreditCardTransactionCollection.nil?
94
- saleHash['CreditCardTransactionCollection'] = nil
95
- else
96
- createSaleRequest.CreditCardTransactionCollection.each_with_index do |creditCard, index|
97
- c = creditCard.to_json
98
- saleHash['CreditCardTransactionCollection'] << c
99
-
100
- if creditCard.Options.to_json.any?
101
- credit_card_options = creditCard.Options.to_json
102
- saleHash['CreditCardTransactionCollection'][index]['Options'] = credit_card_options
103
- else
104
- saleHash['CreditCardTransactionCollection'][index]['Options'] = nil
105
- end
106
-
107
- if creditCard.Recurrency.to_json.any?
108
- credit_card_recurrency = creditCard.Recurrency.to_json
109
- saleHash['CreditCardTransactionCollection'][index]['Recurrency'] = credit_card_recurrency
110
- else
111
- saleHash['CreditCardTransactionCollection'][index]['Recurrency'] = nil
112
- end
113
-
114
- if creditCard.CreditCard.to_json.any?
115
- credit_card_item = creditCard.CreditCard.to_json
116
- saleHash['CreditCardTransactionCollection'][index]['CreditCard'] = credit_card_item
117
-
118
- if creditCard.CreditCard.BillingAddress.to_json.any?
119
- credit_card_billing_address = creditCard.CreditCard.BillingAddress.to_json
120
- saleHash['CreditCardTransactionCollection'][index]['CreditCard']['BillingAddress'] = credit_card_billing_address
121
- else
122
- saleHash['CreditCardTransactionCollection'][index]['CreditCard']['BillingAddress'] = nil
123
- end
124
-
125
- else
126
- saleHash['CreditCardTransactionCollection'][index]['CreditCard'] = nil
127
- end
128
- end
129
- end
130
-
131
- # transforma a colecao de shoppingcart em json
132
- if createSaleRequest.ShoppingCartCollection.any? == false || createSaleRequest.ShoppingCartCollection.nil?
133
- saleHash['ShoppingCartCollection'] = nil
134
- else
135
- createSaleRequest.ShoppingCartCollection.each_with_index do |shoppingCart, index|
136
- s = shoppingCart.to_json
137
- saleHash['ShoppingCartCollection'] << s
138
-
139
- if shoppingCart.DeliveryAddress.to_json.any?
140
- delivery_address = shoppingCart.DeliveryAddress.to_json
141
- saleHash['ShoppingCartCollection'][index]['DeliveryAddress'] = delivery_address
142
- else
143
- saleHash['ShoppingCartCollection'][index]['DeliveryAddress'] = nil
144
- end
145
-
146
- if shoppingCart.ShoppingCartItemCollection.any?
147
- shoppingCart.ShoppingCartItemCollection.each_with_index do |cartItem, cartIndex|
148
- item = cartItem.to_json
149
- saleHash['ShoppingCartCollection'][index]['ShoppingCartItemCollection'][cartIndex] = item
150
- end
151
- else
152
- saleHash['ShoppingCartCollection'][index]['ShoppingCartItemCollection'] = nil
153
- end
154
- end
155
- end
156
-
157
- # transforma objeto options em json
158
- if createSaleRequest.Options.to_json.any?
159
- o = createSaleRequest.Options.to_json
160
- saleHash['Options'] = o
161
- else
162
- saleHash['Options'] = nil
163
- end
164
-
165
- # transforma objeto order em json
166
- if createSaleRequest.Order.to_json.any?
167
- order = createSaleRequest.Order.to_json
168
- saleHash['Order'] = order
169
- else
170
- saleHash['Order'] = nil
171
- end
172
-
173
- # transforma objeto merchant em json
174
- if createSaleRequest.Merchant.to_json.any?
175
- merchant = createSaleRequest.Merchant.to_json
176
- saleHash['Merchant'] = merchant
177
- else
178
- saleHash['Merchant'] = nil
179
- end
180
-
181
- # transforma objeto request data em json
182
- if createSaleRequest.RequestData.to_json.any?
183
- request_data = createSaleRequest.RequestData.to_json
184
- saleHash['RequestData'] = request_data
185
- else
186
- saleHash['RequestData'] = nil
187
- end
188
-
189
- # transforma o objeto Buyer em json
190
- if createSaleRequest.Buyer.AddressCollection.any?
191
- b = createSaleRequest.Buyer.to_json
192
- saleHash['Buyer'] = b
193
-
194
- saleHash['Buyer']['AddressCollection'] = []
195
- createSaleRequest.Buyer.AddressCollection.each do |address|
196
- a = address.to_json
197
- saleHash['Buyer']['AddressCollection'] << a
198
- end
199
- else
200
- buyer_hash = createSaleRequest.Buyer.to_json
201
- buyer_hash.delete('AddressCollection')
202
- if buyer_hash.blank? == false
203
- b = createSaleRequest.Buyer.to_json
204
- saleHash['Buyer'] = b
205
- saleHash['Buyer']['AddressCollection'] = nil
206
- else
207
- saleHash['Buyer'] = nil
208
- end
209
- end
210
-
211
- rescue Exception => e
212
- return e.message
213
- end
214
-
215
- if @serviceEnvironment == :staging
216
- url = @@SERVICE_URL_STAGING + '/Sale/'
217
- elsif @serviceEnvironment == :production
218
- url = @@SERVICE_URL_PRODUCTION + '/Sale/'
219
- elsif @serviceEnvironment == :sandbox
220
- url = @@SERVICE_URL_SANDBOX + '/Sale/'
221
- end
222
- postRequest(saleHash.to_json, url)
223
- end
224
-
225
- # permite forcar a retentativa manualmente de uma transacao (podendo ser tambem uma recorrencia) nao autorizada
226
- def Retry(retrySaleRequest)
227
- saleHash = retrySaleRequest.to_json
228
- saleHash['RetrySaleCreditCardTransactionCollection'] = []
229
-
230
- begin
231
- if retrySaleRequest.RetrySaleCreditCardTransactionCollection != nil
232
- retrySaleRequest.RetrySaleCreditCardTransactionCollection.each do |retrySale|
233
- r = retrySale.to_json
234
- saleHash['RetrySaleCreditCardTransactionCollection'] << r
235
- end
236
- end
237
- if retrySaleRequest.Options.to_json.any?
238
- retry_options = retrySaleRequest.Options.to_json
239
- saleHash['Options'] = retry_options
240
- else
241
- saleHash['Options'] = nil
242
- end
243
- rescue Exception => e
244
- return e.message
245
- end
246
- if @serviceEnvironment == :staging
247
- url = @@SERVICE_URL_STAGING + '/Sale/Retry'
248
- elsif @serviceEnvironment == :production
249
- url = @@SERVICE_URL_PRODUCTION + '/Sale/Retry'
250
- elsif @serviceEnvironment == :sandbox
251
- url = @@SERVICE_URL_SANDBOX + '/Sale/Retry'
252
- end
253
- postRequest(saleHash.to_json, url)
254
- end
255
-
256
- # eh uma forma de desfazer uma transação com cartao de credito mesmo a transacao sendo capturada
257
- def Cancel(cancelSaleRequest)
258
- saleHash = cancelSaleRequest.to_json
259
- saleHash['CreditCardTransactionCollection'] = []
260
-
261
- begin
262
- if cancelSaleRequest.CreditCardTransactionCollection != nil
263
- cancelSaleRequest.CreditCardTransactionCollection.each do |creditCard|
264
- c = creditCard.to_json
265
- saleHash['CreditCardTransactionCollection'] << c
266
- end
267
- end
268
- rescue Exception => e
269
- return e.message
270
- end
271
- if @serviceEnvironment == :staging
272
- url = @@SERVICE_URL_STAGING + '/Sale/Cancel'
273
- elsif @serviceEnvironment == :production
274
- url = @@SERVICE_URL_PRODUCTION + '/Sale/Cancel'
275
- elsif @serviceEnvironment == :sandbox
276
- url = @@SERVICE_URL_SANDBOX + '/Sale/Cancel'
277
- end
278
- postRequest(saleHash.to_json, url)
279
- end
280
-
281
- # confirmacao de uma transacao de cartao de credito que ja fora autorizada
282
- def Capture(captureRequest)
283
- saleHash = captureRequest.to_json
284
- saleHash['CreditCardTransactionCollection'] = []
285
-
286
- begin
287
- if captureRequest.CreditCardTransactionCollection != nil
288
- captureRequest.CreditCardTransactionCollection.each do |creditCard|
289
- c = creditCard.to_json
290
- saleHash['CreditCardTransactionCollection'] << c
291
- end
292
- end
293
- rescue Exception => e
294
- return e.message
295
- end
296
- if @serviceEnvironment == :staging
297
- url = @@SERVICE_URL_STAGING + '/Sale/Capture'
298
- elsif @serviceEnvironment == :production
299
- url = @@SERVICE_URL_PRODUCTION + '/Sale/Capture'
300
- elsif @serviceEnvironment == :sandbox
301
- url = @@SERVICE_URL_SANDBOX + '/Sale/Capture'
302
- end
303
- postRequest(saleHash.to_json, url)
304
- end
305
-
306
- # faz um parse do xml de post notificaton
307
- def ParseXmlToNotification(xml)
308
- begin
309
- response = PostNotification.ParseNotification(xml)
310
- rescue Exception => err
311
- return err.message
312
- end
313
-
314
- return response
315
- end
316
-
317
- # faz uma requisicao e retorna uma string com o transaction report file
318
- def TransactionReportFile(date)
319
- begin
320
- if @serviceEnvironment == :staging
321
- url = @@SERVICE_URL_NOTIFICATION_PRODUCTION + date.strftime("%Y%m%d")
322
- elsif @serviceEnvironment == :production
323
- url = @@SERVICE_URL_NOTIFICATION_PRODUCTION + date.strftime("%Y%m%d")
324
- elsif @serviceEnvironment == :sandbox
325
- url = @@SERVICE_URL_NOTIFICATION_SANDBOX + date.strftime("%Y%m%d")
326
- end
327
-
328
- response = getReportFile(url)
329
-
330
- rescue RestClient::ExceptionWithResponse => err
331
- return err.response
332
- end
333
- return response
334
- end
335
-
336
- # faz o download do transaction report file e salva no computador em .txt
337
- def TransactionReportFileDownloader(date, file_name, path)
338
- begin
339
- path = path + file_name + '.txt'
340
-
341
- response = TransactionReportFile(date)
342
-
343
- File.write(path, response)
344
- rescue RestClient::ExceptionWithResponse => err
345
- return err.response
346
- end
347
- end
348
-
349
- # faz o parse da string recebida do transaction report file e retorna um hash
350
- def TransactionReportFileParser(file_to_parse)
351
- transaction_report_file = TransactionReportFile.new
352
- begin
353
- response = transaction_report_file.TransactionReportFileParser(file_to_parse)
354
- rescue Exception => err
355
- return err
356
- end
357
- return response
358
- end
359
-
360
- # DEPRECATED
361
- def InstantBuyKey(instant_buy_key)
362
- GetCreditCard(instant_buy_key)
363
- end
364
- deprecate :InstantBuyKey, :GetCreditCard, 2016, 04
365
-
366
- # DEPRECATED
367
- def BuyerKey(buyer_key)
368
- GetCreditCardWithBuyerKey(buyer_key)
369
- end
370
- deprecate :BuyerKey, :GetCreditCardWithBuyerKey, 2016, 04
371
-
372
- # faz um get credit card com buyer key
373
- def GetCreditCardWithBuyerKey(buyer_key)
374
- # try, tenta fazer o request
375
- begin
376
-
377
- # se for homologacao faz a chamada por aqui
378
- if @serviceEnvironment == :staging
379
- response = getRequest(@@SERVICE_URL_STAGING + '/CreditCard/BuyerKey=' + buyer_key)
380
-
381
- # se for producao, faz a chamada por aqui
382
- elsif @serviceEnvironment == :production
383
- response = getRequest(@@SERVICE_URL_PRODUCTION + '/CreditCard/BuyerKey=' + buyer_key)
384
-
385
- # se for sandbox, faz a chamada por aqui
386
- elsif @serviceEnvironment == :sandbox
387
- response = getRequest(@@SERVICE_URL_SANDBOX + '/CreditCard/BuyerKey=' + buyer_key)
388
- end
389
-
390
- # se der algum erro, trata aqui
391
- rescue Exception => e
392
- return e.message
393
- end
394
-
395
- # se nao houver erros, retorna o objeto
396
- response
397
- end
398
-
399
- # Faz um get no cartão de crédito
400
- def GetCreditCard(instant_buy_key)
401
- # try, tenta fazer o request
402
- begin
403
- # se for homologacao faz a chamada por aqui
404
- if @serviceEnvironment == :staging
405
- getRequest(@@SERVICE_URL_STAGING + '/CreditCard/' + instant_buy_key)
406
-
407
- # se for producao, faz a chamada por aqui
408
- elsif @serviceEnvironment == :production
409
- getRequest(@@SERVICE_URL_PRODUCTION + '/CreditCard/' + instant_buy_key)
410
-
411
- # se for sandbox
412
- elsif @serviceEnvironment == :sandbox
413
- getRequest(@@SERVICE_URL_SANDBOX + '/CreditCard/' + instant_buy_key)
414
- end
415
-
416
- # se der algum erro, trata aqui
417
- rescue Exception => e
418
- return e.message
419
- end
420
- end
421
-
422
- # Cria um cartão de crédito
423
- def CreateCreditCard(create_instant_buy_data)
424
- sale_hash = create_instant_buy_data.to_json
425
- begin
426
- if create_instant_buy_data.BillingAddress.to_json.any?
427
- sale_hash['BillingAddress'] = create_instant_buy_data.BillingAddress.to_json
428
- else
429
- sale_hash['BillingAddress'] = nil
430
- end
431
-
432
- # se for homologacao faz a chamada por aqui
433
- if @serviceEnvironment == :staging
434
- url = @@SERVICE_URL_STAGING + '/CreditCard/'
435
-
436
- # se for producao, faz a chamada por aqui
437
- elsif @serviceEnvironment == :production
438
- url = @@SERVICE_URL_PRODUCTION + '/CreditCard/'
439
-
440
- # se for sandbox, faz a chamada por aqui
441
- elsif @serviceEnvironment == :sandbox
442
- url = @@SERVICE_URL_SANDBOX + '/CreditCard/'
443
- end
444
-
445
- response = postRequest(sale_hash.to_json, url)
446
-
447
- # se der algum erro, trata aqui
448
- rescue Exception => e
449
- return e.message
450
- end
451
- # se nao houver erros, retorna o objeto
452
- response
453
- end
454
-
455
- # Atualiza o cartão de crédito
456
- def UpdateCreditCard(instant_buy_key, update_instant_buy_data_request)
457
- begin
458
- sale_hash = update_instant_buy_data_request.to_json
459
-
460
- # se for homologacao faz a chamada por aqui
461
- if @serviceEnvironment == :staging
462
- url = @@SERVICE_URL_STAGING + '/CreditCard/' + instant_buy_key
463
-
464
- # se for producao, faz a chamada por aqui
465
- elsif @serviceEnvironment == :production
466
- url = @@SERVICE_URL_PRODUCTION + '/CreditCard/' + instant_buy_key
467
-
468
- # se for sandbox, faz a chamada por aqui
469
- elsif @serviceEnvironment == :sandbox
470
- url = @@SERVICE_URL_SANDBOX + '/CreditCard/' + instant_buy_key
471
- end
472
-
473
- response = patchRequest(sale_hash.to_json, url)
474
- # se der algum erro, trata aqui
475
- rescue Exception => e
476
- return e.message
477
- end
478
- # se nao houver erros, retorna o objeto
479
- response
480
- end
481
-
482
- # Deleta um cartão de crédito
483
- def DeleteCreditCard(instant_buy_key)
484
- # try, tenta fazer o request
485
- begin
486
- # se for homologacao faz a chamada por aqui
487
- if @serviceEnvironment == :staging
488
- deleteRequest(@@SERVICE_URL_STAGING + '/CreditCard/' + instant_buy_key)
489
-
490
- # se for producao, faz a chamada por aqui
491
- elsif @serviceEnvironment == :production
492
- deleteRequest(@@SERVICE_URL_PRODUCTION + '/CreditCard/' + instant_buy_key)
493
-
494
- # se for sandbox
495
- elsif @serviceEnvironment == :sandbox
496
- deleteRequest(@@SERVICE_URL_SANDBOX + '/CreditCard/' + instant_buy_key)
497
- end
498
-
499
- # se der algum erro, trata aqui
500
- rescue Exception => e
501
- return e.message
502
- end
503
- end
504
-
505
- # Busca um buyer
506
- def GetBuyer(buyer_key)
507
- # try, tenta fazer o request
508
- begin
509
-
510
- # se for homologacao faz a chamada por aqui
511
- if @serviceEnvironment == :staging
512
- response = getRequest(@@SERVICE_URL_STAGING + '/Buyer/' + buyer_key)
513
-
514
- # se for producao, faz a chamada por aqui
515
- elsif @serviceEnvironment == :production
516
- response = getRequest(@@SERVICE_URL_PRODUCTION + '/Buyer/' + buyer_key)
517
-
518
- # se for sandbox, faz a chamada por aqui
519
- elsif @serviceEnvironment == :sandbox
520
- response = getRequest(@@SERVICE_URL_SANDBOX + '/Buyer/' + buyer_key)
521
- end
522
-
523
- # se der algum erro, trata aqui
524
- rescue Exception => e
525
- return e.message
526
- end
527
-
528
- # se nao houver erros, retorna o objeto
529
- response
530
- end
531
-
532
- # Cria um buyer
533
- def CreateBuyer(buyer_request)
534
- sale_hash = buyer_request.to_json
535
- sale_hash['AddressCollection'] = []
536
- begin
537
- if buyer_request.AddressCollection.any? == false || buyer_request.AddressCollection.nil?
538
- sale_hash['AddressCollection'] = nil
539
- else
540
- buyer_request.AddressCollection.each do |address|
541
- a = address.to_json
542
- sale_hash['AddressCollection'] << a
543
- end
544
- end
545
-
546
- # se for homologacao faz a chamada por aqui
547
- if @serviceEnvironment == :staging
548
- url = @@SERVICE_URL_STAGING + '/Buyer/'
549
-
550
- # se for producao, faz a chamada por aqui
551
- elsif @serviceEnvironment == :production
552
- url = @@SERVICE_URL_PRODUCTION + '/Buyer/'
553
-
554
- # se for sandbox, faz a chamada por aqui
555
- elsif @serviceEnvironment == :sandbox
556
- url = @@SERVICE_URL_SANDBOX + '/Buyer/'
557
- end
558
-
559
- response = postRequest(sale_hash.to_json, url)
560
- rescue Exception => e
561
- return e.message
562
- end
563
- response
564
- end
565
-
566
- # funcao de post generica
567
- def postRequest(payload, url)
568
- response = nil
569
- begin
570
- response = RestClient.post(url, payload, headers=@@SERVICE_HEADERS)
571
- rescue RestClient::ExceptionWithResponse => err
572
- return err.response
573
- end
574
- json_response = JSON.load response
575
- json_response
576
- end
577
-
578
- # funcao patch generica
579
- def patchRequest(payload, url)
580
- begin
581
- response = RestClient.patch(url, payload, headers=@@SERVICE_HEADERS)
582
- rescue RestClient::ExceptionWithResponse => err
583
- return err.response
584
- end
585
- json_response = JSON.load response
586
- json_response
587
- end
588
-
589
- # funcao de delete generica
590
- def deleteRequest(url)
591
- begin
592
- response = RestClient.delete(url, headers=@@SERVICE_HEADERS)
593
- rescue RestClient::ExceptionWithResponse => err
594
- return err.response
595
- end
596
- json_response = JSON.load response
597
- json_response
598
- end
599
-
600
- # funcao get generica
601
- def getRequest(url)
602
- response = nil
603
- begin
604
- response = RestClient.get(url, headers=@@SERVICE_HEADERS)
605
- rescue RestClient::ExceptionWithResponse => err
606
- return err.response
607
- end
608
- json_response = JSON.load response
609
- json_response
610
- end
611
-
612
- def getReportFile(url)
613
- begin
614
- response = RestClient.get(url, headers={:MerchantKey => "#{@merchantKey}"})
615
- rescue RestClient::ExceptionWithResponse => err
616
- return err.response
617
- end
618
- return response
619
- end
620
- end
621
- end
1
+ require_relative '../../lib/stone_ecommerce'
2
+ module Gateway
3
+
4
+ class Gateway
5
+ extend Gem::Deprecate
6
+
7
+ attr_reader :serviceEnvironment
8
+
9
+ attr_reader :merchantKey
10
+
11
+ def initialize(environment=:sandbox, merchantKey)
12
+ @serviceEnvironment = environment
13
+ @merchantKey = merchantKey
14
+ @@SERVICE_HEADERS = {:MerchantKey => "#{@merchantKey}", :Accept => 'application/json', :"Content-Type" => 'application/json'}
15
+ end
16
+
17
+ # URL de producao
18
+ @@SERVICE_URL_PRODUCTION = 'https://transaction.stone.com.br'
19
+
20
+ # URL de homologacao
21
+ @@SERVICE_URL_STAGING = ''
22
+
23
+ # URL de sandbox
24
+ @@SERVICE_URL_SANDBOX = 'https://transaction.stone.com.br'
25
+
26
+ # URL do postnotification de producao
27
+ @@SERVICE_URL_NOTIFICATION_PRODUCTION = ''
28
+
29
+ # URL do postnotification de sandbox
30
+ @@SERVICE_URL_NOTIFICATION_SANDBOX = ''
31
+
32
+ # permite que o integrador adicione uma busca por transacoes utilizando alguns criterios
33
+ def Query(querySaleRequestEnum, key)
34
+ # try, tenta fazer o request
35
+ begin
36
+ # se for homologacao faz a chamada por aqui
37
+ if @serviceEnvironment == :staging
38
+ getRequest(@@SERVICE_URL_STAGING + '/Sale/Query/' + querySaleRequestEnum + '=' + key)
39
+
40
+ # se for producao, faz a chamada por aqui
41
+ elsif @serviceEnvironment == :production
42
+ getRequest(@@SERVICE_URL_PRODUCTION + '/Sale/Query/' + querySaleRequestEnum + '=' + key)
43
+
44
+ # se for sandbox
45
+ elsif @serviceEnvironment == :sandbox
46
+ getRequest(@@SERVICE_URL_SANDBOX + '/Sale/Query/' + querySaleRequestEnum + '=' + key)
47
+ end
48
+
49
+ # se der algum erro, trata aqui
50
+ rescue Exception => e
51
+ return e.message
52
+ end
53
+ end
54
+
55
+ # criar uma transacao na plataforma One utilizando um ou mais meios de pagamento
56
+ def CreateSale(createSaleRequest)
57
+
58
+ saleHash = createSaleRequest.to_json
59
+
60
+ saleHash['BoletoTransactionCollection'] = []
61
+
62
+ saleHash['CreditCardTransactionCollection'] = []
63
+
64
+ saleHash['ShoppingCartCollection'] = []
65
+
66
+ begin
67
+ # transforma a colecao de boleto em json
68
+ if createSaleRequest.BoletoTransactionCollection.any? == false || createSaleRequest.BoletoTransactionCollection.nil?
69
+ saleHash['BoletoTransactionCollection'] = nil
70
+
71
+ else
72
+ createSaleRequest.BoletoTransactionCollection.each_with_index do |boleto, index|
73
+ b = boleto.to_json
74
+ saleHash['BoletoTransactionCollection'] << b
75
+
76
+ if boleto.Options.to_json.any?
77
+ boleto_options = boleto.Options.to_json
78
+ saleHash['BoletoTransactionCollection'][index]['Options'] = boleto_options
79
+ else
80
+ saleHash['BoletoTransactionCollection'][index]['Options'] = nil
81
+ end
82
+
83
+ if boleto.BillingAddress.to_json.any?
84
+ boleto_billing_address = boleto.BillingAddress.to_json
85
+ saleHash['BoletoTransactionCollection'][index]['BillingAddress'] = boleto_billing_address
86
+ else
87
+ saleHash['BoletoTransactionCollection'][index]['BillingAddress'] = nil
88
+ end
89
+ end
90
+ end
91
+
92
+ # transforma a colecao de cartao de credito em json
93
+ if createSaleRequest.CreditCardTransactionCollection.any? == false || createSaleRequest.CreditCardTransactionCollection.nil?
94
+ saleHash['CreditCardTransactionCollection'] = nil
95
+ else
96
+ createSaleRequest.CreditCardTransactionCollection.each_with_index do |creditCard, index|
97
+ c = creditCard.to_json
98
+ saleHash['CreditCardTransactionCollection'] << c
99
+
100
+ if creditCard.Options.to_json.any?
101
+ credit_card_options = creditCard.Options.to_json
102
+ saleHash['CreditCardTransactionCollection'][index]['Options'] = credit_card_options
103
+ else
104
+ saleHash['CreditCardTransactionCollection'][index]['Options'] = nil
105
+ end
106
+
107
+ if creditCard.Recurrency.to_json.any?
108
+ credit_card_recurrency = creditCard.Recurrency.to_json
109
+ saleHash['CreditCardTransactionCollection'][index]['Recurrency'] = credit_card_recurrency
110
+ else
111
+ saleHash['CreditCardTransactionCollection'][index]['Recurrency'] = nil
112
+ end
113
+
114
+ if creditCard.CreditCard.to_json.any?
115
+ credit_card_item = creditCard.CreditCard.to_json
116
+ saleHash['CreditCardTransactionCollection'][index]['CreditCard'] = credit_card_item
117
+
118
+ if creditCard.CreditCard.BillingAddress.to_json.any?
119
+ credit_card_billing_address = creditCard.CreditCard.BillingAddress.to_json
120
+ saleHash['CreditCardTransactionCollection'][index]['CreditCard']['BillingAddress'] = credit_card_billing_address
121
+ else
122
+ saleHash['CreditCardTransactionCollection'][index]['CreditCard']['BillingAddress'] = nil
123
+ end
124
+
125
+ else
126
+ saleHash['CreditCardTransactionCollection'][index]['CreditCard'] = nil
127
+ end
128
+ end
129
+ end
130
+
131
+ # transforma a colecao de shoppingcart em json
132
+ if createSaleRequest.ShoppingCartCollection.any? == false || createSaleRequest.ShoppingCartCollection.nil?
133
+ saleHash['ShoppingCartCollection'] = nil
134
+ else
135
+ createSaleRequest.ShoppingCartCollection.each_with_index do |shoppingCart, index|
136
+ s = shoppingCart.to_json
137
+ saleHash['ShoppingCartCollection'] << s
138
+
139
+ if shoppingCart.DeliveryAddress.to_json.any?
140
+ delivery_address = shoppingCart.DeliveryAddress.to_json
141
+ saleHash['ShoppingCartCollection'][index]['DeliveryAddress'] = delivery_address
142
+ else
143
+ saleHash['ShoppingCartCollection'][index]['DeliveryAddress'] = nil
144
+ end
145
+
146
+ if shoppingCart.ShoppingCartItemCollection.any?
147
+ shoppingCart.ShoppingCartItemCollection.each_with_index do |cartItem, cartIndex|
148
+ item = cartItem.to_json
149
+ saleHash['ShoppingCartCollection'][index]['ShoppingCartItemCollection'][cartIndex] = item
150
+ end
151
+ else
152
+ saleHash['ShoppingCartCollection'][index]['ShoppingCartItemCollection'] = nil
153
+ end
154
+ end
155
+ end
156
+
157
+ # transforma objeto options em json
158
+ if createSaleRequest.Options.to_json.any?
159
+ o = createSaleRequest.Options.to_json
160
+ saleHash['Options'] = o
161
+ else
162
+ saleHash['Options'] = nil
163
+ end
164
+
165
+ # transforma objeto order em json
166
+ if createSaleRequest.Order.to_json.any?
167
+ order = createSaleRequest.Order.to_json
168
+ saleHash['Order'] = order
169
+ else
170
+ saleHash['Order'] = nil
171
+ end
172
+
173
+ # transforma objeto merchant em json
174
+ if createSaleRequest.Merchant.to_json.any?
175
+ merchant = createSaleRequest.Merchant.to_json
176
+ saleHash['Merchant'] = merchant
177
+ else
178
+ saleHash['Merchant'] = nil
179
+ end
180
+
181
+ # transforma objeto request data em json
182
+ if createSaleRequest.RequestData.to_json.any?
183
+ request_data = createSaleRequest.RequestData.to_json
184
+ saleHash['RequestData'] = request_data
185
+ else
186
+ saleHash['RequestData'] = nil
187
+ end
188
+
189
+ # transforma o objeto Buyer em json
190
+ if createSaleRequest.Buyer.AddressCollection.any?
191
+ b = createSaleRequest.Buyer.to_json
192
+ saleHash['Buyer'] = b
193
+
194
+ saleHash['Buyer']['AddressCollection'] = []
195
+ createSaleRequest.Buyer.AddressCollection.each do |address|
196
+ a = address.to_json
197
+ saleHash['Buyer']['AddressCollection'] << a
198
+ end
199
+ else
200
+ buyer_hash = createSaleRequest.Buyer.to_json
201
+ buyer_hash.delete('AddressCollection')
202
+ if buyer_hash.blank? == false
203
+ b = createSaleRequest.Buyer.to_json
204
+ saleHash['Buyer'] = b
205
+ saleHash['Buyer']['AddressCollection'] = nil
206
+ else
207
+ saleHash['Buyer'] = nil
208
+ end
209
+ end
210
+
211
+ rescue Exception => e
212
+ return e.message
213
+ end
214
+
215
+ if @serviceEnvironment == :staging
216
+ url = @@SERVICE_URL_STAGING + '/Sale/'
217
+ elsif @serviceEnvironment == :production
218
+ url = @@SERVICE_URL_PRODUCTION + '/Sale/'
219
+ elsif @serviceEnvironment == :sandbox
220
+ url = @@SERVICE_URL_SANDBOX + '/Sale/'
221
+ end
222
+ postRequest(saleHash.to_json, url)
223
+ end
224
+
225
+ # permite forcar a retentativa manualmente de uma transacao (podendo ser tambem uma recorrencia) nao autorizada
226
+ def Retry(retrySaleRequest)
227
+ saleHash = retrySaleRequest.to_json
228
+ saleHash['RetrySaleCreditCardTransactionCollection'] = []
229
+
230
+ begin
231
+ if retrySaleRequest.RetrySaleCreditCardTransactionCollection != nil
232
+ retrySaleRequest.RetrySaleCreditCardTransactionCollection.each do |retrySale|
233
+ r = retrySale.to_json
234
+ saleHash['RetrySaleCreditCardTransactionCollection'] << r
235
+ end
236
+ end
237
+ if retrySaleRequest.Options.to_json.any?
238
+ retry_options = retrySaleRequest.Options.to_json
239
+ saleHash['Options'] = retry_options
240
+ else
241
+ saleHash['Options'] = nil
242
+ end
243
+ rescue Exception => e
244
+ return e.message
245
+ end
246
+ if @serviceEnvironment == :staging
247
+ url = @@SERVICE_URL_STAGING + '/Sale/Retry'
248
+ elsif @serviceEnvironment == :production
249
+ url = @@SERVICE_URL_PRODUCTION + '/Sale/Retry'
250
+ elsif @serviceEnvironment == :sandbox
251
+ url = @@SERVICE_URL_SANDBOX + '/Sale/Retry'
252
+ end
253
+ postRequest(saleHash.to_json, url)
254
+ end
255
+
256
+ # eh uma forma de desfazer uma transação com cartao de credito mesmo a transacao sendo capturada
257
+ def Cancel(cancelSaleRequest)
258
+ saleHash = cancelSaleRequest.to_json
259
+ saleHash['CreditCardTransactionCollection'] = []
260
+
261
+ begin
262
+ if cancelSaleRequest.CreditCardTransactionCollection != nil
263
+ cancelSaleRequest.CreditCardTransactionCollection.each do |creditCard|
264
+ c = creditCard.to_json
265
+ saleHash['CreditCardTransactionCollection'] << c
266
+ end
267
+ end
268
+ rescue Exception => e
269
+ return e.message
270
+ end
271
+ if @serviceEnvironment == :staging
272
+ url = @@SERVICE_URL_STAGING + '/Sale/Cancel'
273
+ elsif @serviceEnvironment == :production
274
+ url = @@SERVICE_URL_PRODUCTION + '/Sale/Cancel'
275
+ elsif @serviceEnvironment == :sandbox
276
+ url = @@SERVICE_URL_SANDBOX + '/Sale/Cancel'
277
+ end
278
+ postRequest(saleHash.to_json, url)
279
+ end
280
+
281
+ # confirmacao de uma transacao de cartao de credito que ja fora autorizada
282
+ def Capture(captureRequest)
283
+ saleHash = captureRequest.to_json
284
+ saleHash['CreditCardTransactionCollection'] = []
285
+
286
+ begin
287
+ if captureRequest.CreditCardTransactionCollection != nil
288
+ captureRequest.CreditCardTransactionCollection.each do |creditCard|
289
+ c = creditCard.to_json
290
+ saleHash['CreditCardTransactionCollection'] << c
291
+ end
292
+ end
293
+ rescue Exception => e
294
+ return e.message
295
+ end
296
+ if @serviceEnvironment == :staging
297
+ url = @@SERVICE_URL_STAGING + '/Sale/Capture'
298
+ elsif @serviceEnvironment == :production
299
+ url = @@SERVICE_URL_PRODUCTION + '/Sale/Capture'
300
+ elsif @serviceEnvironment == :sandbox
301
+ url = @@SERVICE_URL_SANDBOX + '/Sale/Capture'
302
+ end
303
+ postRequest(saleHash.to_json, url)
304
+ end
305
+
306
+ # faz um parse do xml de post notificaton
307
+ def ParseXmlToNotification(xml)
308
+ begin
309
+ response = PostNotification.ParseNotification(xml)
310
+ rescue Exception => err
311
+ return err.message
312
+ end
313
+
314
+ return response
315
+ end
316
+
317
+ # faz uma requisicao e retorna uma string com o transaction report file
318
+ def TransactionReportFile(date)
319
+ begin
320
+ if @serviceEnvironment == :staging
321
+ url = @@SERVICE_URL_NOTIFICATION_PRODUCTION + date.strftime("%Y%m%d")
322
+ elsif @serviceEnvironment == :production
323
+ url = @@SERVICE_URL_NOTIFICATION_PRODUCTION + date.strftime("%Y%m%d")
324
+ elsif @serviceEnvironment == :sandbox
325
+ url = @@SERVICE_URL_NOTIFICATION_SANDBOX + date.strftime("%Y%m%d")
326
+ end
327
+
328
+ response = getReportFile(url)
329
+
330
+ rescue RestClient::ExceptionWithResponse => err
331
+ return err.response
332
+ end
333
+ return response
334
+ end
335
+
336
+ # faz o download do transaction report file e salva no computador em .txt
337
+ def TransactionReportFileDownloader(date, file_name, path)
338
+ begin
339
+ path = path + file_name + '.txt'
340
+
341
+ response = TransactionReportFile(date)
342
+
343
+ File.write(path, response)
344
+ rescue RestClient::ExceptionWithResponse => err
345
+ return err.response
346
+ end
347
+ end
348
+
349
+ # faz o parse da string recebida do transaction report file e retorna um hash
350
+ def TransactionReportFileParser(file_to_parse)
351
+ transaction_report_file = TransactionReportFile.new
352
+ begin
353
+ response = transaction_report_file.TransactionReportFileParser(file_to_parse)
354
+ rescue Exception => err
355
+ return err
356
+ end
357
+ return response
358
+ end
359
+
360
+ # DEPRECATED
361
+ def InstantBuyKey(instant_buy_key)
362
+ GetCreditCard(instant_buy_key)
363
+ end
364
+ deprecate :InstantBuyKey, :GetCreditCard, 2016, 04
365
+
366
+ # DEPRECATED
367
+ def BuyerKey(buyer_key)
368
+ GetCreditCardWithBuyerKey(buyer_key)
369
+ end
370
+ deprecate :BuyerKey, :GetCreditCardWithBuyerKey, 2016, 04
371
+
372
+ # faz um get credit card com buyer key
373
+ def GetCreditCardWithBuyerKey(buyer_key)
374
+ # try, tenta fazer o request
375
+ begin
376
+
377
+ # se for homologacao faz a chamada por aqui
378
+ if @serviceEnvironment == :staging
379
+ response = getRequest(@@SERVICE_URL_STAGING + '/CreditCard/BuyerKey=' + buyer_key)
380
+
381
+ # se for producao, faz a chamada por aqui
382
+ elsif @serviceEnvironment == :production
383
+ response = getRequest(@@SERVICE_URL_PRODUCTION + '/CreditCard/BuyerKey=' + buyer_key)
384
+
385
+ # se for sandbox, faz a chamada por aqui
386
+ elsif @serviceEnvironment == :sandbox
387
+ response = getRequest(@@SERVICE_URL_SANDBOX + '/CreditCard/BuyerKey=' + buyer_key)
388
+ end
389
+
390
+ # se der algum erro, trata aqui
391
+ rescue Exception => e
392
+ return e.message
393
+ end
394
+
395
+ # se nao houver erros, retorna o objeto
396
+ response
397
+ end
398
+
399
+ # Faz um get no cartão de crédito
400
+ def GetCreditCard(instant_buy_key)
401
+ # try, tenta fazer o request
402
+ begin
403
+ # se for homologacao faz a chamada por aqui
404
+ if @serviceEnvironment == :staging
405
+ getRequest(@@SERVICE_URL_STAGING + '/CreditCard/' + instant_buy_key)
406
+
407
+ # se for producao, faz a chamada por aqui
408
+ elsif @serviceEnvironment == :production
409
+ getRequest(@@SERVICE_URL_PRODUCTION + '/CreditCard/' + instant_buy_key)
410
+
411
+ # se for sandbox
412
+ elsif @serviceEnvironment == :sandbox
413
+ getRequest(@@SERVICE_URL_SANDBOX + '/CreditCard/' + instant_buy_key)
414
+ end
415
+
416
+ # se der algum erro, trata aqui
417
+ rescue Exception => e
418
+ return e.message
419
+ end
420
+ end
421
+
422
+ # Cria um cartão de crédito
423
+ def CreateCreditCard(create_instant_buy_data)
424
+ sale_hash = create_instant_buy_data.to_json
425
+ begin
426
+ if create_instant_buy_data.BillingAddress.to_json.any?
427
+ sale_hash['BillingAddress'] = create_instant_buy_data.BillingAddress.to_json
428
+ else
429
+ sale_hash['BillingAddress'] = nil
430
+ end
431
+
432
+ # se for homologacao faz a chamada por aqui
433
+ if @serviceEnvironment == :staging
434
+ url = @@SERVICE_URL_STAGING + '/CreditCard/'
435
+
436
+ # se for producao, faz a chamada por aqui
437
+ elsif @serviceEnvironment == :production
438
+ url = @@SERVICE_URL_PRODUCTION + '/CreditCard/'
439
+
440
+ # se for sandbox, faz a chamada por aqui
441
+ elsif @serviceEnvironment == :sandbox
442
+ url = @@SERVICE_URL_SANDBOX + '/CreditCard/'
443
+ end
444
+
445
+ response = postRequest(sale_hash.to_json, url)
446
+
447
+ # se der algum erro, trata aqui
448
+ rescue Exception => e
449
+ return e.message
450
+ end
451
+ # se nao houver erros, retorna o objeto
452
+ response
453
+ end
454
+
455
+ # Atualiza o cartão de crédito
456
+ def UpdateCreditCard(instant_buy_key, update_instant_buy_data_request)
457
+ begin
458
+ sale_hash = update_instant_buy_data_request.to_json
459
+
460
+ # se for homologacao faz a chamada por aqui
461
+ if @serviceEnvironment == :staging
462
+ url = @@SERVICE_URL_STAGING + '/CreditCard/' + instant_buy_key
463
+
464
+ # se for producao, faz a chamada por aqui
465
+ elsif @serviceEnvironment == :production
466
+ url = @@SERVICE_URL_PRODUCTION + '/CreditCard/' + instant_buy_key
467
+
468
+ # se for sandbox, faz a chamada por aqui
469
+ elsif @serviceEnvironment == :sandbox
470
+ url = @@SERVICE_URL_SANDBOX + '/CreditCard/' + instant_buy_key
471
+ end
472
+
473
+ response = patchRequest(sale_hash.to_json, url)
474
+ # se der algum erro, trata aqui
475
+ rescue Exception => e
476
+ return e.message
477
+ end
478
+ # se nao houver erros, retorna o objeto
479
+ response
480
+ end
481
+
482
+ # Deleta um cartão de crédito
483
+ def DeleteCreditCard(instant_buy_key)
484
+ # try, tenta fazer o request
485
+ begin
486
+ # se for homologacao faz a chamada por aqui
487
+ if @serviceEnvironment == :staging
488
+ deleteRequest(@@SERVICE_URL_STAGING + '/CreditCard/' + instant_buy_key)
489
+
490
+ # se for producao, faz a chamada por aqui
491
+ elsif @serviceEnvironment == :production
492
+ deleteRequest(@@SERVICE_URL_PRODUCTION + '/CreditCard/' + instant_buy_key)
493
+
494
+ # se for sandbox
495
+ elsif @serviceEnvironment == :sandbox
496
+ deleteRequest(@@SERVICE_URL_SANDBOX + '/CreditCard/' + instant_buy_key)
497
+ end
498
+
499
+ # se der algum erro, trata aqui
500
+ rescue Exception => e
501
+ return e.message
502
+ end
503
+ end
504
+
505
+ # Busca um buyer
506
+ def GetBuyer(buyer_key)
507
+ # try, tenta fazer o request
508
+ begin
509
+
510
+ # se for homologacao faz a chamada por aqui
511
+ if @serviceEnvironment == :staging
512
+ response = getRequest(@@SERVICE_URL_STAGING + '/Buyer/' + buyer_key)
513
+
514
+ # se for producao, faz a chamada por aqui
515
+ elsif @serviceEnvironment == :production
516
+ response = getRequest(@@SERVICE_URL_PRODUCTION + '/Buyer/' + buyer_key)
517
+
518
+ # se for sandbox, faz a chamada por aqui
519
+ elsif @serviceEnvironment == :sandbox
520
+ response = getRequest(@@SERVICE_URL_SANDBOX + '/Buyer/' + buyer_key)
521
+ end
522
+
523
+ # se der algum erro, trata aqui
524
+ rescue Exception => e
525
+ return e.message
526
+ end
527
+
528
+ # se nao houver erros, retorna o objeto
529
+ response
530
+ end
531
+
532
+ # Cria um buyer
533
+ def CreateBuyer(buyer_request)
534
+ sale_hash = buyer_request.to_json
535
+ sale_hash['AddressCollection'] = []
536
+ begin
537
+ if buyer_request.AddressCollection.any? == false || buyer_request.AddressCollection.nil?
538
+ sale_hash['AddressCollection'] = nil
539
+ else
540
+ buyer_request.AddressCollection.each do |address|
541
+ a = address.to_json
542
+ sale_hash['AddressCollection'] << a
543
+ end
544
+ end
545
+
546
+ # se for homologacao faz a chamada por aqui
547
+ if @serviceEnvironment == :staging
548
+ url = @@SERVICE_URL_STAGING + '/Buyer/'
549
+
550
+ # se for producao, faz a chamada por aqui
551
+ elsif @serviceEnvironment == :production
552
+ url = @@SERVICE_URL_PRODUCTION + '/Buyer/'
553
+
554
+ # se for sandbox, faz a chamada por aqui
555
+ elsif @serviceEnvironment == :sandbox
556
+ url = @@SERVICE_URL_SANDBOX + '/Buyer/'
557
+ end
558
+
559
+ response = postRequest(sale_hash.to_json, url)
560
+ rescue Exception => e
561
+ return e.message
562
+ end
563
+ response
564
+ end
565
+
566
+ # funcao de post generica
567
+ def postRequest(payload, url)
568
+ response = nil
569
+ begin
570
+ response = RestClient.post(url, payload, headers=@@SERVICE_HEADERS)
571
+ rescue RestClient::ExceptionWithResponse => err
572
+ return err.response
573
+ end
574
+ json_response = JSON.load response
575
+ json_response
576
+ end
577
+
578
+ # funcao patch generica
579
+ def patchRequest(payload, url)
580
+ begin
581
+ response = RestClient.patch(url, payload, headers=@@SERVICE_HEADERS)
582
+ rescue RestClient::ExceptionWithResponse => err
583
+ return err.response
584
+ end
585
+ json_response = JSON.load response
586
+ json_response
587
+ end
588
+
589
+ # funcao de delete generica
590
+ def deleteRequest(url)
591
+ begin
592
+ response = RestClient.delete(url, headers=@@SERVICE_HEADERS)
593
+ rescue RestClient::ExceptionWithResponse => err
594
+ return err.response
595
+ end
596
+ json_response = JSON.load response
597
+ json_response
598
+ end
599
+
600
+ # funcao get generica
601
+ def getRequest(url)
602
+ response = nil
603
+ begin
604
+ response = RestClient.get(url, headers=@@SERVICE_HEADERS)
605
+ rescue RestClient::ExceptionWithResponse => err
606
+ return err.response
607
+ end
608
+ json_response = JSON.load response
609
+ json_response
610
+ end
611
+
612
+ def getReportFile(url)
613
+ begin
614
+ response = RestClient.get(url, headers={:MerchantKey => "#{@merchantKey}"})
615
+ rescue RestClient::ExceptionWithResponse => err
616
+ return err.response
617
+ end
618
+ return response
619
+ end
620
+ end
621
+ end