paratika_gateway.rb 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. require 'payment/errors'
  2. require_relative '../../../paratika/lib/paratika'
  3. class Payment::ParatikaGateway
  4. include ::Paratika
  5. ERROR_MAP = Paratika::ERROR_MAP
  6. include Payment::Errors
  7. def self.active?
  8. Paratika.config.active
  9. end
  10. def self.connection
  11. request = yield
  12. response = request.send
  13. [request.data, response.data]
  14. rescue => e
  15. Payment.debug_message(request, response, e)
  16. end
  17. def self.charge_from_card(payment, customer, card, pre_auth, saved_card)
  18. klass = pre_auth ? Paratika::PreAuth : Paratika::Sale
  19. card = saved_card ? { token: card } : card
  20. request = klass.new(payment, customer, card)
  21. response = request.send
  22. [request.data, response.data]
  23. rescue => e
  24. Payment.debug_message(request, response, e)
  25. end
  26. def self.cancel_transaction(payment)
  27. request = Paratika::Void.new(payment)
  28. response = request.send
  29. [request.data, response.data]
  30. rescue => e
  31. Payment.debug_message(request, response, e)
  32. end
  33. def self.refund_money(payment)
  34. request = Paratika::Refund.new(payment)
  35. response = request.send
  36. [request.data, response.data]
  37. rescue => e
  38. Payment.debug_message(request, response, e)
  39. end
  40. def self.query_saved_cards(customer)
  41. request = Paratika::QueryCard.new(customer[:id])
  42. response = request.send
  43. [request.data, response.data]
  44. rescue => e
  45. Payment.debug_message(request, response, e)
  46. end
  47. def self.delete_card(token)
  48. request = Paratika::EWalletDeleteCard.new(token)
  49. response = request.send
  50. [request.data, response.data]
  51. rescue => e
  52. Payment.debug_message(request, response, e)
  53. end
  54. def self.currency_exchange(from, to, amount)
  55. request = Paratika::CurrencyExchange.new(from, to, amount)
  56. response = request.send
  57. [request.data, response.data]
  58. rescue => e
  59. Payment.debug_message(request, response, e)
  60. end
  61. def self.query_bin_number(bin_number)
  62. request = Paratika::QueryBin.new(bin_number)
  63. response = request.send
  64. [request.data, response.data]
  65. rescue => e
  66. Payment.debug_message(request, response, e)
  67. end
  68. end