On Mar 2, 2006, at 2:03 PM, James Edward Gray II wrote:

> We have an odd problem at work today.
>
> Running the following code on Windows XP gives us a CVV2 error,  
> which is what we expect (we didn't give one).  However, running the  
> same code on Linux or OS X gets a complaint that we didn't provide  
> the key, which is obviously not true (see last line).
>
> Does anyone see anything inherently non-portable in the following  
> code?
>
>   require 'net/http'
>   require 'net/https'
>
>   uri  = URI.parse 'https://www.usaepay.com/gate.php'
>   p (http = Net::HTTP.new(uri.host, uri.port))
>   p http.use_ssl     = true
>   p http.verify_mode = OpenSSL::SSL::VERIFY_NONE
>   p http.post(uri.path, "UMkey=OUR_KEY_CODE_HERE").body
>

Switching the code to the following seems to work everywhere, as long  
as 1.8.4 is used:

   require 'net/https'

   uri  = URI.parse 'https://www.usaepay.com/gate.php'
   req = Net::HTTP::Post.new(uri.path)
   req.set_form_data "UMkey" => "OUR_KEY_CODE_HERE"
   p (http = Net::HTTP.new(uri.host, uri.port))
   p http.use_ssl	   = true
   p http.verify_mode = OpenSSL::SSL::VERIFY_NONE
   p http.start { http.request(req) }.body

I still don't understand why the first version didn't work though...

James Edward Gray II