24 Jan
duccio

duccio il 24 January 2006 parla di Tutorial

Implementare DirectConnect con le Api di Paypal

Prima di iniziare è necessario installare il ’soap4r development package’, reperibile su http://dev.ctor.org/download/, e la dipendenza http-access2 . Vi voglio ricordare che la versione soap4r 1.5.5 da problemi utilizzando il Web Service di Paypal. Ricordatevi di registrarvi su http://developer.paypal.com e creare un account test di tipo business e seguite tutte le procedure per verificarlo. Questo è necessario per scaricare successivamente ‘Api Certificate’. A questo punto scaricate i Sandbox Test Certificates PayPalSvc.wsdl, eBLBaseComponents.xsd, CoreComponentTypes.xsd e metteteli tutti in una cartella. Adesso è necessario scaricare il PayPal ApiCertificate, per fare questo andate su https://www.sandbox.paypal.com/ e loggatevi col vostro account test, andate su Profile->API Access sotto account information e scaricate l’Api Certificate.

Con la prima parte di questo file createne uno chiamato ‘client.key’ e con la seconda parte createne un altro chiamato ‘client.cert’ Adesso scaricate il php SDK package da Paypal e una volta scompresso andate in:

    1 <local_folder>\PayPal_PHP_Windows_SDK_v3_0\paypal_php_sdk\Services_PayPal\PayPal\cert\</local_folder>

prendete il file ‘api_cert_chain.crt’ e mettetelo nella vostra cartella.

Andate nella cartella del soap4r\bin precedentemente scaricato e lanciate da prompt il comando:

    1 wsdl2ruby.rb --wsdl http://www.sandbox.paypal.com/wsdl/PayPalSvc.wsdl --type client --force

I 3 file generati ‘default.rb’, ‘defaultDriver.rb’, and ‘PayPalAPIInterfaceServiceClient.rb’ dovrete metterli insieme agli altri, nella cartella creata.

Create questo file di test e chiamatelo test.rb:

    1 require 'defaultDriver.rb'
    2 require 'soap/header/simplehandler'
    3 require 'pp'
    4 
    5 class RequesterCredentialsHandler < SOAP::Header::
    6   SimpleHandler
    7   HeaderName = XSD::QName.new('urn:ebay:api:
    8   PayPalAPI', 'Req
    9   uesterCredentials')
   10   CredentialsName = XSD::QName.new('urn:ebay:apis:
   11   eBLBaseComp
   12   onents', 'Credentials')
   13   UsernameName = XSD::QName.new(nil, 'Username') 
   14   PasswordName = XSD::QName.new(nil, 'Password') 
   15   SubjectName = XSD::QName.new(nil, 'Subject') 
   16 
   17   def initialize(username, password, subject) 
   18     super(HeaderName)        @username, @password, 
   19     @subject = username, password, subject
   20   end 
   21 
   22   def on_simple_outbound        {CredentialsName =>
   23     {UsernameName => @username, PasswordName =>
   24       @password, SubjectName => @subject}} 
   25     end        
   26 
   27     endpoint_url=nil
   28     client = PayPalAPIAAInterface.new(endpoint_url) 
   29     client.options['protocol.http.ssl_config.verify_mode'] 
   30     = OpenSSL::SSL::VERIFY_PEER
   31     client.options['protocol.http.ssl_config.ca_file'] =
   32     'api_cert_chain.crt'
   33     client.options['protocol.http.ssl_config.client_cert'] =
   34     'client.cert'   
   35     client.options['protocol.http.ssl_config.client_key'] = 
   36     'client.key'  
   37     client.headerhandler < < RequesterCredentialsHandler
   38     .new('username', 'password','') 
   39     client.wiredump_dev = STDERR if $DEBUG  
   40     directreq = DoDirectPaymentReq.new 
   41     drtype = DoDirectPaymentRequestType.new   
   42     directreq.DoDirectPaymentRequest = drtype   
   43     #drtype.Version = "2.0"   
   44     dtype = DoDirectPaymentRequestDetailsType.new  
   45     dtype.IPAddress = 'xxx.xxx.xxx.xxx'
   46     pdetails = PaymentDetailsType.new     
   47     bamount = BasicAmountType.new('10,000')  
   48     #bamount.xmlattr_currencyID='USD' 
   49     pdetails.OrderTotal = bamount    
   50     dtype.PaymentDetails = pdetails     
   51     dcard = CreditCardDetailsType.new    
   52     dtype.PaymentAction = "Sale"    
   53     payerinfo = PayerInfoType.new      
   54     addr = AddressType.new    
   55     addr.Name ='Utente'   
   56     addr.Street1 = 'street'    
   57     addr.Street2 = ''    
   58     addr.CityName = 'city'   
   59     addr.PostalCode = 'cap'   
   60     addr.StateOrProvince = 'XX'   
   61     addr.Country ='IT'      
   62     dcard.CreditCardType ='VISA'   
   63     dcard.CreditCardNumber ='1111111111111111'  
   64     dcard.CVV2 = '111'  
   65     dcard.ExpMonth = '01'      
   66     dcard.ExpYear  = '2005'   
   67     pname = PersonNameType.new  
   68     pname.FirstName = 'xxxx'       
   69     pname.LastName = 'xxxx'   
   70     payerinfo.PayerName = pname  
   71     paydetailssitem = PaymentDetailsItemType.new  
   72     paydetailssitem.Name = 'xxxx'  
   73     dtype.CreditCard = dcard    
   74     dcard.CardOwner = payerinfo        
   75     payerinfo.Address = addr      
   76     pdetails.ShipToAddress = addr  
   77     res = client.DoDirectPayment(directreq) 
   78     puts res.ack    
   79   end
   80 

adesso da cmd entrate nella cartella contenente tutti i file creati e lanciate il comando:

    1 ruby -d test.rb

Ricordatevi di installare le uconv altrimenti si genererà un’eccezione. E’ sufficiente scaricare il file uconv.so

Scrivi un commento