stone_ecommerce 1.2.3 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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