Class: PaypalAdaptive::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/request.rb

Instance Method Summary collapse

Constructor Details

#initialize(env = nil) ⇒ Request

Returns a new instance of Request.



12
13
14
15
16
17
18
19
# File 'lib/request.rb', line 12

def initialize(env = nil)
  @env = env
  @@config ||= PaypalAdaptive::Config.new(@env)
  @@api_base_url ||= @@config.api_base_url
  @@headers ||= @@config.headers
  @@ssl_cert_file ||= @@config.ssl_cert_file
  @@ssl_ca_cert_path ||= @@config.ssl_ca_cert_path
end

Instance Method Details

#call_api(data, path) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/request.rb', line 81

def call_api(data, path)
  #hack fix: JSON.unparse doesn't work in Rails 2.3.5; only {}.to_json does..
  api_request_data = JSON.unparse(data) rescue data.to_json
  url = URI.parse @@api_base_url
  http = Net::HTTP.new(url.host, 443)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_PEER

  if @@ssl_cert_file
    cert = File.read(@@ssl_cert_file)
    http.cert = OpenSSL::X509::Certificate.new(cert)
    http.key = OpenSSL::PKey::RSA.new(cert)
  end

  if @@ssl_ca_cert_path
    http.ca_path = @@ssl_ca_cert_path unless @@ssl_ca_cert_path.nil? #/etc/ssl/certs'
  end

  response = http.post(path, api_request_data, @@headers)

  JSON.parse(response.body)
end

#cancel_preapproval(data) ⇒ Object

Raises:



63
64
65
66
67
# File 'lib/request.rb', line 63

def cancel_preapproval(data)
  raise NoDataError unless data

  call_api(data, "/AdaptivePayments/CancelPreapproval")
end

#convert_currency(data) ⇒ Object

Raises:



69
70
71
72
73
# File 'lib/request.rb', line 69

def convert_currency(data)
  raise NoDataError unless data

  call_api(data, "/AdaptivePayments/ConvertCurrency")
end

#pay(data) ⇒ Object

Raises:



30
31
32
33
34
35
# File 'lib/request.rb', line 30

def pay(data)
  raise NoDataError unless data

  response_data = call_api(data, "/AdaptivePayments/Pay")
  PaypalAdaptive::Response.new(response_data, @env)
end

#payment_details(data) ⇒ Object

Raises:



44
45
46
47
48
# File 'lib/request.rb', line 44

def payment_details(data)
  raise NoDataError unless data

  call_api(data, "/AdaptivePayments/PaymentDetails")
end

#preapproval(data) ⇒ Object

Raises:



50
51
52
53
54
55
# File 'lib/request.rb', line 50

def preapproval(data)
  raise NoDataError unless data

  response_data = call_api(data, "/AdaptivePayments/Preapproval")
  PaypalAdaptive::Response.new(response_data, @env)
end

#preapproval_details(data) ⇒ Object

Raises:



57
58
59
60
61
# File 'lib/request.rb', line 57

def preapproval_details(data)
  raise NoDataError unless data

  call_api(data, "/AdaptivePayments/PreapprovalDetails")
end

#refund(data) ⇒ Object

Raises:



75
76
77
78
79
# File 'lib/request.rb', line 75

def refund(data)
  raise NoDataError unless data

  call_api(data, "/AdaptivePayments/Refund")
end

#set_payment_options(data) ⇒ Object

Raises:



37
38
39
40
41
42
# File 'lib/request.rb', line 37

def set_payment_options(data)
  raise NoDataError unless data

  response_data = call_api(data, "/AdaptivePayments/SetPaymentOptions")
  PaypalAdaptive::Response.new(response_data, @env)
end

#validateObject



21
22
23
24
25
26
27
28
# File 'lib/request.rb', line 21

def validate
  #TODO the receiverList field not validating properly

  # @@schema_filepath = "../lib/pay_request_schema.json"
  # @@schema = File.open(@@schema_filepath, "rb"){|f| JSON.parse(f.read)}
  # see page 42 of PP Adaptive Payments PDF for explanation of all fields.
  #JSON::Schema.validate(@data, @@schema)
end