Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Pagamenti Online
mercoledì 25 novembre 2009 - 13.18
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
TOPOAMORE
Profilo
| Expert
695
messaggi | Data Invio:
mer 25 nov 2009 - 13:18
Salve a tutti,
vorrei implementare il pagamento online di prodotti dal mio sito.
Ho visto anche le Api di paypal ma non riesco ben a capire 2 cose : 1) il cliente deve avere per forza un account paypal? 2) non riesco a trovare un esempio che riesco a capire dai loro manuali.
Chiedo se qualcuno ha gia pratica con questo metodo o qualche link per su nuovi metodi.
Grazie
ASP 2.0 - VB 2008
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mer 25 nov 2009 - 16:17
>Ho visto anche le Api di paypal ma non riesco ben a capire 2
>cose : 1) il cliente deve avere per forza un account paypal?
No. E' una domanda che mi sono posto spesso anche io. C'è una differenza però mi par di capire che se tu fai un pagamento paypal-paypal non ci sono commissioni perchè è come se fosse un trasferimento tra due conti. Mentre se tu vuoi mettere in piedi una cosa che supporti le transazioni anche per chi non è titolare di un conto paypal bisogna pagare le classiche commissioni richieste dai circuiti interbancari, Visa, Mastercard, ecc. che sono variabili tra 1 e 3 % sull'importo. La prima cosa da sapere prima di implementare un pagamento online sono le commissioni. Poi puoi scegliere Paypal, oppure altri player come Banca Sella (nota in italia per questo tipo di prodotti) o anche altre banche.
>2) non riesco a trovare un esempio che riesco a capire dai loro
>manuali.
Siamo in due. Risolviamo prima il punto 1) poi procediamo. Se invece sei già definitivamente orientato per Paypal fammi sapere.
David De Giacomi | <empty>
http://blogs.dotnethell.it/david/
TOPOAMORE
Profilo
| Expert
695
messaggi | Data Invio:
mer 25 nov 2009 - 16:49
ciao se riusciamo a darci una mano ne sarei enormemente felice.
oltre banca sella c'e' anche un altro operatore che compre piu banche BANKPASS (
http://www.bankpass.it/
) ma bisognerebbe chiedere maggiori informazioni.
Ho scaricato e sto studiando i manuali paypal ma non sono chiarissimi.
cmq le commissioni banca sella non sono piccoline https://www.sella.it/ecommerce/gestpay/gestpay_condizioni.jsp
in questo momento paypal mi sembra il migliore sia come commissioni sia come disponibilita api ee gestione dettagliata delle transazioni e reportistica
Diamoci una mano e troviamo una soluzione
ASP 2.0 - VB 2008
leonardop
Profilo
| Junior Member
65
messaggi | Data Invio:
mer 25 nov 2009 - 18:41
Scaricate lo starterkit TheBeerHouse. Integra uno store che fa uso di paypal, quindi un'ottimo esempio
Spero di essere stato di aiuto
leonardo
TOPOAMORE
Profilo
| Expert
695
messaggi | Data Invio:
mer 25 nov 2009 - 21:51
Provvedo a scaricalo e ti dico
ASP 2.0 - VB 2008
TOPOAMORE
Profilo
| Expert
695
messaggi | Data Invio:
mer 25 nov 2009 - 22:34
Non mi parte completamente. C'e' un modo particolare? La soluzione non carica tutto.....
ASP 2.0 - VB 2008
leonardop
Profilo
| Junior Member
65
messaggi | Data Invio:
mer 25 nov 2009 - 22:51
che vuol dire "non mi parte completamente"??
Comunque puoi scaricare la versione 1.0
http://thebeerhouse.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=127
, va benissimo come esempio
leonardo
TOPOAMORE
Profilo
| Expert
695
messaggi | Data Invio:
mer 25 nov 2009 - 23:02
quando carico la soluzione 2 componenti non li carica e il sito (lo store del sito) non carica i prodotti...bho
ASP 2.0 - VB 2008
sankyu
Profilo
| Senior Member
266
messaggi | Data Invio:
mer 25 nov 2009 - 23:21
io per ora ho solo usato la soluzione non integrata nel sito web quindi prepari la richiesta di pagamento, la mandi a paypal che la processa e tramite una richiesta post ti da la conferma o la negazione dell'operazione
per riassumere il tutto si svolge in tre fasi:
1- prepari la richiesta post da mandare a paypal su di una pagina web https( la richiesta deve contenere alcuni campi necessari che sono elencati nel form di esempio qua sotto)
<form id="payForm" method="post" action="<%Response.Write (URL)%>">
<input type="hidden" name="cmd" value="_xclick"/>
<input type="hidden" name="business" value="<%Response.Write (business)%>">
<input type="hidden" name="item_name" value="<%Response.Write (item_name)%>">
<input type="hidden" name="amount" value="<%Response.Write (amount)%>">
<input type="hidden" name="no_shipping" value="<%Response.Write (no_shipping)%>">
<input type="hidden" name="return" value="<%Response.Write (return_url)%>">
<input type="hidden" name="rm" value="<%Response.Write (rm)%>">
<input type="hidden" name="notify_url" value="<%Response.Write (notify_url)%>">
<input type="hidden" name="cancel_return" value="<%Response.Write (cancel_url)%>">
<input type="hidden" name="currency_code" value="<%Response.Write (currency_code)%>">
<input type="hidden" name="custom" value="<%Response.Write (custom)%>">
<input type="hidden" name="lc" value="PL">
</form>
i vari response.write settano dei campi con delle variabili che per comodità ho memorizzato nel web.config e che comunque sono tutti forniti da paypal e presenti nel manuale
in particolare <%Response.Write (URL)%> fornisce l'url di paypal a cui inviare la richiesta di pagamento
il valore custom è un valore che potete usare per identificare la transazione come un'id richiesta o qualcosa di simile e sarà molto utile per aggiornare lo stato del pagamento più avanti
2- ora il gioco si sposta sui server paypal ed a voi non resta che attendere l'andamento del pagamento sia questo con paypal o carta di credito a noi non interessa
3-paypal risponde in 2 modi : via querystring o via richiesta ipn (una semplice richiesta post verso una pagina web definita dal pannello di controllo businness paypal)
ora viene il bello:
vi posto prima il codice per decodificare la risposta via querystring e come usarlo
Private Function getPdtResponseValue(ByVal pdtresponse As String, ByVal key As String) As String
Dim sParts As String()
Dim iParts As Integer
Dim aParts As String()
Dim sKey As String
Dim sValue As String
pdtresponse = Mid(pdtresponse, 9)
sParts = Split(pdtresponse, vbLf)
iParts = UBound(sParts) - 1
For i = 0 To iParts
aParts = Split(sParts(i), "=")
sKey = aParts(0)
sValue = aParts(1)
If sKey = key Then
Return sValue
End If
Next
Return ""
End Function
'leggo la risposta della querystring
Dim strResponse As HttpWebResponse = CType(req.GetResponse(), HttpWebResponse)
Dim IPNResponseStream As Stream = strResponse.GetResponseStream
Dim encode As Encoding = System.Text.Encoding.GetEncoding("utf-8")
Dim readStream As New StreamReader(IPNResponseStream, encode)
Dim read(1024) As [Char]
' Reads 256 characters at a time.
Dim count As Integer = readStream.Read(read, 0, 1024)
While count > 0
' Dumps the 256 characters to a string
Dim IPNResponse As New [String](read, 0, count)
count = readStream.Read(read, 0, 1024)
Dim risposta As String = IPNResponse.Substring(0, 7)
' elaboro la risposta
If risposta = "SUCCESS" Then
Dim idRichiestaAccredito As Integer = (getPdtResponseValue(IPNResponse, "custom"))
end if
end while
questo è solo un esempio di una risposta di tipo pdt quindi mandata direttamente dalla pagina web di paypal come querystring verso un'ipotetica vostra pagina paymentsuccessful.aspx
ora passiamo alla risposta ipn cioè una risposta che avviene in background generalmente qualche secondo dopo la risposta pdt e che è immune da un'involontaria chiusura del browser dell'utilizzatore del sito in quanto avviene tramite post tra paypal ed una vostra pagina che chiamerò ipnHandler.aspx
il codice .aspx è molto semplice
<%@ Page Language="VB" AutoEventWireup="false" Inherits="BidreamsItaWebApp.IPNHandler" Codebehind="IPNHandler.aspx.vb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml"
>
<head id="Head1" runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
quello vb un po meno
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
Dim ci As CultureInfo = New CultureInfo("en-us")
Dim strFormValues As String = Encoding.ASCII.GetString(Request.BinaryRead(Request.ContentLength))
Dim strNewValue As String
'Salvo i dati post IPN nel database poi invio la risposta a paypal
Dim idRichiestaAccredito As Integer = SaveIpnResponseAndGetCustom(strFormValues)
' getting the URL to work with
Dim URL As String
If AppSettings("UseSandbox").ToString = "true" Then
URL = "https://www.sandbox.paypal.com/cgi-bin/webscr"
Else
URL = "https://www.paypal.com/cgi-bin/webscr"
End If
' Create the request back
Dim req As HttpWebRequest = CType(WebRequest.Create(URL), HttpWebRequest)
' Set values for the request back
req.Method = "POST"
req.ContentType = "application/x-www-form-urlencoded"
strNewValue = strFormValues + "&cmd=_notify-validate"
req.ContentLength = strNewValue.Length
'Controllo che la richiesta non sia già stata utilizzata e
'salvo la richiesta su db per evitare duplicati
' Write the request back IPN strings
Dim stOut As StreamWriter = New StreamWriter(req.GetRequestStream(), _
Encoding.ASCII)
stOut.Write(strNewValue)
stOut.Close()
'send the request, read the response
Dim strResponse As HttpWebResponse = CType(req.GetResponse(), HttpWebResponse)
Dim IPNResponseStream As Stream = strResponse.GetResponseStream
Dim encode As Encoding = System.Text.Encoding.GetEncoding("utf-8")
Dim readStream As New StreamReader(IPNResponseStream, encode)
Dim read(256) As [Char]
' Reads 256 characters at a time.
Dim count As Integer = readStream.Read(read, 0, 256)
While count > 0
' Dumps the 256 characters to a string
Dim IPNResponse As New [String](read, 0, count)
count = readStream.Read(read, 0, 15)
Dim risposta As String = IPNResponse.Substring(0, 8)
' if the request is verified
If risposta = "VERIFIED" Then
Dim ric As New BidreamsIta.RichiesteAccredito
ric = BidreamsIta.RichiesteAccredito.getById(idRichiestaAccredito)
If Not ric.Confermata Then
EseguiAccredito(ric.ImportoCrediti, ric.ImportoValuta, getIpnResponseValue(strNewValue, "txn_id"), ric.IdUtente)
ric.Conferma()
End If
End If
End While
readStream.Close()
strResponse.Close()
End Sub
Private Function SaveIpnResponseAndGetCustom(ByVal response As String) As String
Using c As New BidreamEntities
Dim res As New paypalIpnResponse
Dim sParts As String()
Dim iParts As Integer
Dim aParts As String()
Dim sKey As String
Dim sValue As String
sParts = Split(response, "&")
iParts = UBound(sParts) - 1
For i = 0 To iParts
aParts = Split(sParts(i), "=")
sKey = aParts(0)
sValue = aParts(1)
Select Case sKey
Case "txn_id"
res.txn_id = sValue
Case "txn_type"
res.txn_type = sValue
Case "business"
res.business = sValue
Case "charset"
res.charset = sValue
Case "custom"
res.custom = sValue
Case "first_name"
res.first_name = sValue
Case "handling_amount"
res.handling_amount = sValue
Case "item_name"
res.item_name = sValue
Case "item_number"
res.item_number = sValue
Case "last_name"
res.last_name = sValue
Case "mc_currency"
res.mc_currency = sValue
Case "mc_fee"
res.mc_fee = sValue
Case "mc_gross"
res.mc_gross = sValue
Case "payer_email"
res.payer_email = sValue
Case "payer_id"
res.payer_id = sValue
Case "payer_status"
res.payer_status = sValue
Case "payment_date"
res.payment_date = sValue
Case "payment_fee"
res.payment_fee = sValue
Case "payment_gross"
res.payment_gross = sValue
Case "payment_status"
res.payment_status = sValue
Case "pending_reason"
res.pending_reason = sValue
Case "quantity"
res.quantity = sValue
Case "receiver_email"
res.receiver_email = sValue
Case "receiver_id"
res.receiver_id = sValue
Case "residence_country"
res.residence_country = sValue
Case "shipping"
res.shipping = sValue
Case "tax"
res.tax = sValue
Case "transaction_subject"
res.transaction_subject = sValue
End Select
Next
c.AddTopaypalIpnResponse(res)
c.SaveChanges()
If res.custom <> "" Then
Return res.custom
Else
Return 0
End If
End Using
End Function
Private Function getIpnResponseValue(ByVal Ipnresponse As String, ByVal key As String) As String
Dim sParts As String()
Dim iParts As Integer
Dim aParts As String()
Dim sKey As String
Dim sValue As String
sParts = Split(Ipnresponse, "&")
iParts = UBound(sParts) - 1
For i = 0 To iParts
aParts = Split(sParts(i), "=")
sKey = aParts(0)
sValue = aParts(1)
If sKey = key Then
Return sValue
End If
Next
Return ""
End Function
ora non ho molto tempo di scendere nel dettaglio, per un corso che devo tenere presso un itis sto preparando una guida con delle slide e la spiegazione dettagliata di tutto il processo sia paypal che paynova
poi chiederò agli admin del sito se la possono pubblicare tra le guide
cmq se avete domande chiedete
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
gio 26 nov 2009 - 00:27
>oltre banca sella c'e' anche un altro operatore che compre piu
>banche BANKPASS (
http://www.bankpass.it/
) ma bisognerebbe chiedere
>maggiori informazioni.
Bankpass mi pare cara, 25€ al mese di servizio 2.5% sul transato pagobancomat, 3,5% cartasì.
>cmq le commissioni banca sella non sono piccoline https://www.sella.it/ecommerce/gestpay/gestpay_condizioni.jsp
Banca sella ha startup alti e poi commissioni 3% e 4% sulla base del contratto.
>in questo momento paypal mi sembra il migliore sia come commissioni
>sia come disponibilita api ee gestione dettagliata delle transazioni
>e reportistica
Paypal 0 costi fissi di piattaforma, ma 3.4% di commissione a scendere se superi i 2500 € al mese e in aggiunta 0,35 € a transazione. Inoltre se non sbaglio quando trasferisci soldi da paypal al tuo conto corrente devi pagare ancora delle commissioni.
Oggi ho visto invece IWSmile:
http://www.iwsmile.it/
1.8% di commissione e 3 € al mese di piattaforma
Ciao
David De Giacomi | <empty>
http://blogs.dotnethell.it/david/
TOPOAMORE
Profilo
| Expert
695
messaggi | Data Invio:
gio 26 nov 2009 - 19:14
Per Sankyu
grazie per tutto il codice di studio, sei molto gentile. Ti dico subito che lo copiero per studiarmelo con calma ora che torno a milano sul mio bel computer.
Per Brainkiller
Non sembra male ma bisogna vedere se e totalemente integrabile come paypal. Come presentazione non sembra male
ASP 2.0 - VB 2008
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
ven 27 nov 2009 - 17:07
>Per Brainkiller
>Non sembra male ma bisogna vedere se e totalemente integrabile
>come paypal. Come presentazione non sembra male
Tutti sono integrabili come Paypal e forse anche più facilmente
Cmq. quando ho girato io su paypal c'è un'area in cui trovi degli .zip con dentro le pagine già create d'esempio per tutti i linguaggi asp.net, php, jsp, ecc.
Ciao
David De Giacomi | <empty>
http://blogs.dotnethell.it/david/
marco_tv
Profilo
| Newbie
2
messaggi | Data Invio:
gio 28 gen 2010 - 15:18
Ciao a tutti, questo è il mio primo messaggio :)
Per chi fosse interessato qui ho trovato un esempio in vb.net per paypal già pronto e facilissimo da usare
Io invece stavo cercando un esempio in vb.net per iwsmile. Esiste?
Paypal ha commissioni troppo alte e non vorrei regalare loro troppi soldi
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
gio 28 gen 2010 - 15:45
>Io invece stavo cercando un esempio in vb.net per iwsmile. Esiste?
>Paypal ha commissioni troppo alte e non vorrei regalare loro
>troppi soldi
Hai capito ora perchè costa di più Paypal ?
Ciao
David De Giacomi | <empty>
http://blogs.dotnethell.it/david/
marco_tv
Profilo
| Newbie
2
messaggi | Data Invio:
gio 28 gen 2010 - 17:28
ehhhh hai ragione sono furbi, codice facilmente recuperabile => piu soldi per loro
comunque allora per iwsmile non c'è niente per vb.net o asp.net? ho cercato molto in giro
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
ven 29 gen 2010 - 16:10
>ehhhh hai ragione sono furbi, codice facilmente recuperabile
>=> piu soldi per loro
>comunque allora per iwsmile non c'è niente per vb.net o asp.net?
>ho cercato molto in giro
Eh in effetti non si capisce.
Io pensavo che una volta diventato cliente loro ti fornissero l'SDK con gli esempi di codice. Sei già cliente tu ?
Secondo me devi sentire loro e chiedere se hanno o codice o specifiche.
Alla fine le specifiche sono tutte simili e di facile implementazione.
Ciao
David De Giacomi | <empty>
http://blogs.dotnethell.it/david/
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !