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 2 3 4 5 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 18 super(HeaderName) @username, @password, 19 @subject = username, password, subject 20 end 21 22 {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

