Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
12 septembre 2009 6 12 /09 /septembre /2009 09:49

Le code généré par le site PayPal pour les boutons ressemble à ceci :

 

Code du bouton “Afficher le panier”. (La partie crypté a été tronqué et remplacé par … )

<form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7----- … -----END PKCS7-----">
<input type="image" src="https://www.paypal.com/fr_FR/FR/i/btn/btn_viewcart_LG.gif" border="0" name="submit" alt="PayPal - la solution de paiement en ligne la plus simple et la plus sécurisée !">
<img alt="" border="0" src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
</form>

Si nous mettons ce code directement sur une page ASP.NET on a de forte chance que rien ne se passe lorsque l’on clique sur le bouton.

Pour résoudre ce problème nous allons créer une classe qui va nous permettre de générer dynamiquement le form que nous allons envoyer à PayPal.

 

Code :

Public Class RemotePost

    Private Inputs As System.Collections.Specialized.NameValueCollection = New System.Collections.Specialized.NameValueCollection()

    Private _Url As String = String.Empty
    Private _Method As String = "post"
    Private _FormName As String = "form1"

    Public Sub Add(ByVal name As String, ByVal value As String)
        Inputs.Add(name, value)
    End Sub

    Public Sub Post()
        System.Web.HttpContext.Current.Response.Clear()

        System.Web.HttpContext.Current.Response.Write("<html><head>")

        System.Web.HttpContext.Current.Response.Write(String.Format("</head><body onload=document.{0}.submit()>", FormName))

        System.Web.HttpContext.Current.Response.Write(String.Format("<form name='{0}' method='{1}' action='{2}' >", FormName, Method, Url))
        For i As Integer = 0 To Inputs.Keys.Count - 1
            System.Web.HttpContext.Current.Response.Write(String.Format("<input name='{0}' type='hidden' value='{1}'>", Inputs.Keys(i), Inputs(Inputs.Keys(i))))

        Next
        System.Web.HttpContext.Current.Response.Write("</form>")
        System.Web.HttpContext.Current.Response.Write("</body></html>")
        System.Web.HttpContext.Current.Response.End()
    End Sub

    Property FormName() As String
        Get
            Return _FormName
        End Get
        Set(ByVal value As String)
            _FormName = value
        End Set
    End Property

    Property Method() As String
        Get
            Return _Method
        End Get
        Set(ByVal value As String)
            _Method = value
        End Set
    End Property

    Property Url() As String
        Get
            Return _Url
        End Get
        Set(ByVal value As String)
            _Url = value
        End Set
    End Property
End Class

 

Ensuite il suffit de créer votre propre bouton et d’utiliser votre classe RemotPost dans l’événement click du bouton.

 

Code :

Protected Sub ImageButtonPanier_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButtonPanier.Click
        Dim remote As New RemotePost
        remote.Url = "https://www.paypal.com/cgi-bin/webscr"
        remote.Add("cmd", "_s-xclick")
        remote.Add("encrypted", "-----BEGIN PKCS7----- … -----END PKCS7-----")
        remote.Post()
End Sub

 

La classe RemotPost peut être utilisée pour tous les autres boutons PayPal.

Partager cet article

Repost 0
Published by Cyril - dans ASP.NET
commenter cet article

commentaires