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