Net :: HTTP.post_form выбрасывает EOFError? - PullRequest
4 голосов
/ 11 июля 2011

Поэтому я пытаюсь получить детали транзакции из PayPal, не создавая форму и просто отправив сообщение на URL с необходимой информацией.Это фрагмент моего кода, и я попытался сделать то же самое с помощью формы, и это работает.

<form method=post action="https://www.sandbox.paypal.com/cgi-bin/webscr">
      <input type="hidden" name="cmd" value="_notify-synch">
      <input type="hidden" name="tx" value="<%= subscription.tx %>">
      <input type="hidden" name="at" value="<%= @identity_token %>">
      <input type="submit" value="View Details">
    </form>

Аналог Ruby выдает EOFError, и я не знаю, почему он это делает

paypal_uri = URI.parse('https://www.sandbox.paypal.com/cgi-bin/webscr')
@post_request = Net::HTTP.post_form(paypal_uri , {:tx => @subscription.tx, :at => IDENTITY_TOKEN, :cmd => "_notify-sync"})

1 Ответ

5 голосов
/ 11 июля 2011

URL-адрес https, поэтому вам необходимо включить SSL в вашей сети :: HTTP.

require 'openssl'

paypal_uri = URI.parse('https://www.sandbox.paypal.com/cgi-bin/webscr')
req = Net::HTTP::Post.new(paypal_uri.path)
req.set_form_data({:tx => @subscription.tx, :at => IDENTITY_TOKEN, :cmd => "_notify-sync"})
sock = Net::HTTP.new(paypal_uri.host, 443)
sock.use_ssl = true
store = OpenSSL::X509::Store.new
store.add_cert OpenSSL::X509::Certificate.new(File.new('paypal.pem'))
store.add_cert OpenSSL::X509::Certificate.new(File.new('paypal2.pem'))
sock.cert_store = store
sock.start do |http|
  response = http.request(req)
end

Чтобы получить сертификаты CA paypal.pem и paypal2.pem, просто перейдите к URL-адресу PayPal вручнуюЯ опишу это для FireFox.Нажмите на зеленый значок в левой части адресной строки, откройте диалоговое окно, просмотрите сертификат, Подробности, а затем экспортируйте два VeriSign сертификата как paypal.pem и paypal2.pem.Поместите их в ту же папку, что и ваш скрипт.Это должно вылечить ваши проблемы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...