require File.dirname(__FILE__)+"/../lib/v_paypal" require 'yaml' require 'test/unit' class VPaypalTest < Test::Unit::TestCase def test_with_set_express_checkout @request_params = { "OrderTotal" => "10.00", "CancelURL" => "http://foo1.com", "ReturnURL" => "http://foo2.com", "sandbox_username" => "biz_api2.dumb.com", "sandbox_password" => "gemvpaypal" } endpoint_url = "" vpp = VPaypal::PaypalPro.new(endpoint_url) res_2 = vpp.vRequest("SetExpressCheckout",@request_params) client_1 = PayPalAPIAAInterface.new client_1.options['protocol.http.ssl_config.verify_mode'] = OpenSSL::SSL::VERIFY_PEER client_1.options['protocol.http.ssl_config.ca_file'] = File.dirname(__FILE__)+'/../certs/api_cert_chain.crt' client_1.options['protocol.http.ssl_config.client_cert'] = File.dirname(__FILE__)+'/../certs/client.cert' client_1.options['protocol.http.ssl_config.client_key'] = File.dirname(__FILE__)+'/../certs/client.keys' client_1.headerhandler << VPaypal::RequesterCredentialsHandler.new(@request_params["sandbox_username"], @request_params["sandbox_password"],'') req_1 =SetExpressCheckoutReq.new type_1 = SetExpressCheckoutRequestType.new type_1.version = "2.0" details_1 = SetExpressCheckoutRequestDetailsType.new type_1.setExpressCheckoutRequestDetails = details_1 ns_1 = "urn:ebay:apis:eBLBaseComponents" otqname_1 = XSD::QName.new(ns_1, "OrderTotal") otele_1 = SOAP::SOAPElement.new(otqname_1, @request_params["OrderTotal"]) otele_1.extraattr["currencyID"] = "USD" details_1.orderTotal = otele_1 details_1.returnURL = @request_params["ReturnURL"] details_1.cancelURL = @request_params["CancelURL"] req_1.setExpressCheckoutRequest=type_1 res_1 = client_1.setExpressCheckout(req_1) print_error(res_1,res_2) assert_equal(res_1.ack.to_s, res_2.ack.to_s) end def test_with_do_direct_payment endpoint_url = "" vpp = VPaypal::PaypalPro.new(endpoint_url) @request_params = {"PaymentActionCode" => "Sale", "OrderTotal"=>"10.00" , "FirstName"=> "First", "LastName" => "Last", "Street1"=>"Some street" , "StateOrProvince"=>"ny", "CityName"=>"new york", "Country"=>"US", "PostalCode" => "10013", "CreditCardType" => "Visa", "CreditCardNumber" =>"4747586528909458", "ExpMonth" => "1", "ExpYear" => "2007" , "CVV2" => "000", "IPAddress" => "61.11.28.22", "sandbox_username" => "biz_api2.dumb.com", "sandbox_password" => "gemvpaypal" } @test_request_params = { "PaymentAction-PaymentActionCodeType" => @request_params["PaymentActionCode"], "PaymentDetails" => {"OrderTotal"=> @request_params["OrderTotal"] }, "CreditCard-CreditCardDetails" => {"CardOwner-PayerInfo" => {"PayerName-PersonName" => {"FirstName"=> @request_params["FirstName"], "LastName" => @request_params["LastName"] }, "Address" => { "Street1"=>@request_params["Street1"] , "StateOrProvince"=>@request_params["StateOrProvince"], "CityName"=> @request_params["CityName"], "Country"=> @request_params["Country"], "PostalCode" => @request_params["PostalCode"], } , }, "CreditCardType" => @request_params["CreditCardType"], "CreditCardNumber" => @request_params["CreditCardNumber"], "ExpMonth" => @request_params["ExpMonth"], "ExpYear" => @request_params["ExpYear"] , "CVV2" => @request_params["CVV2"] }, "IPAddress" => @request_params["IPAddress"] } res_2 = vpp.vRequest("DoDirectPayment",@test_request_params) client_1 = PayPalAPIAAInterface.new client_1.options['protocol.http.ssl_config.verify_mode'] = OpenSSL::SSL::VERIFY_PEER client_1.options['protocol.http.ssl_config.ca_file'] = File.dirname(__FILE__)+'/../certs/api_cert_chain.crt' client_1.options['protocol.http.ssl_config.client_cert'] = File.dirname(__FILE__)+'/../certs/client.cert' client_1.options['protocol.http.ssl_config.client_key'] = File.dirname(__FILE__)+'/../certs/client.keys' client_1.headerhandler << VPaypal::RequesterCredentialsHandler.new(@request_params["sandbox_username"], @request_params["sandbox_password"],'') req_1 =DoDirectPaymentReq.new type_1 = DoDirectPaymentRequestType.new type_1.version = "2.0" details_1 = DoDirectPaymentRequestDetailsType.new type_1.doDirectPaymentRequestDetails = details_1 ns_1 = "urn:ebay:apis:eBLBaseComponents" otqname_1 = XSD::QName.new(ns_1, "OrderTotal") otele_1 = SOAP::SOAPElement.new(otqname_1, @request_params["OrderTotal"]) otele_1.extraattr["currencyID"] = "USD" details_1.paymentAction = PaymentActionCodeType::Sale paymentDetails = PaymentDetailsType.new paymentDetails.orderTotal = otele_1 details_1.paymentDetails = paymentDetails creditCard =CreditCardDetailsType.new payerInfo = PayerInfoType.new payerName = PersonNameType.new payerName.firstName = @request_params["FirstName"] payerName.lastName = @request_params["LastName"] payerInfo.payerName = payerName address = AddressType.new address.street1 = @request_params["Street1"] address.cityName = @request_params["CityName"] address.stateOrProvince = @request_params["StateOrProvince"] address.country = @request_params["Country"] address.postalCode = @request_params["PostalCode"] payerInfo.address = address creditCard.cardOwner = payerInfo creditCard.creditCardType = CreditCardTypeType::Visa creditCard.creditCardNumber = @request_params["CreditCardNumber"] creditCard.expMonth = @request_params["ExpMonth"] creditCard.expYear = @request_params["ExpYear"] creditCard.cVV2 = @request_params["CVV2"] details_1.creditCard = creditCard details_1.iPAddress = @request_params["IPAddress"] req_1.doDirectPaymentRequest=type_1 res_1 = client_1.doDirectPayment(req_1) print_error(res_1,res_2) assert_equal(res_1.ack.to_s, res_2.ack.to_s) end def print_error(res_1,res_2) msg="" if(res_1.ack=="Failure") er= res_1.errors msg += show_error(er)+" in res_1." end if(res_2.ack=="Failure") er= res_2.errors msg += show_error(er)+" in res_2." end if msg!="" assert_raise(msg) end end def show_error(er=nil) if !er[0].nil? er.each do |error| m += "#{error.longMessage}
" end else m = "#{er.longMessage}
" end end end