4

I have the following code in my registration page to go to a paypal button. But when I click on the button it just refreshes the page.

Is their something I am missing? I should be able to include a paypal button on an aspx page right?

    <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <asp:Panel runat="server" ID="pnlRegisterPage" CssClass="registerPage">
        <table>
          <tr>
            <td><p>Plain text</p></td>
            <td>
                <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
                <input type="hidden" name="cmd" value="_s-xclick">
                <input type="hidden" name="hosted_button_id" value="Z8TACKRHQR722">
                <table>
                <tr><td><input type="hidden" name="on0" value="Registration Type">Registration Type</td></tr><tr><td><select name="os0">
                    <option value="Team">Team $80.00</option>
                    <option value="Individual">Individual $40.00</option>
                </select> </td></tr>
                </table>
                <input type="hidden" name="currency_code" value="USD">
                <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
                <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
                </form>
            </td>
        </tr>
    </table>

</asp:Panel>
</asp:Content>

Master Page

<body>
    <form id="form1" runat="server">
    <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
    </asp:ToolkitScriptManager>
    <div class="masterbody">
        <center>
            <asp:Image runat="server" ID="imgLogo" ImageUrl="" /></center>
        <div class="menubar">
            <div class="loginview">                                   
            <asp:LoginView ID="MenuBar" runat="server">
                <AnonymousTemplate>                                                             
                </AnonymousTemplate>
                <LoggedInTemplate>
                </LoggedInTemplate>
            </asp:LoginView>
            </div>
        </div>        
        <div>
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            </asp:ContentPlaceHolder>
        </div>
    </div>

    <div class="footer"></div>
    </form>        
</body>
JPJedi
  • 1,498
  • 7
  • 32
  • 58

6 Answers6

6

The master page shows that ContentPlaceHolder1 is inside the ASP.NET runat="server" form so you won't be able to place the PayPal form inside that region. You'll need to arange it so that the PayPal form is not inside any other form.

A possible solution found here: http://www.codersbarn.com/post/Solution-to-ASPNET-Form---PayPal-Problem.aspx but I don't think you'll be able to have any postback events on any page with the form rendering disabled.

Daniel Renshaw
  • 33,729
  • 8
  • 75
  • 94
  • It doesn't affect postbacks because all you are doing is toggling forms. Usually, this is done on submitting the transaction :-) – IrishChieftain Oct 14 '10 at 19:25
1

My prefered solution is to do a fix via Javascript.

As what is stated with other answers, the problem lies with the form of the PayPal button being embedded within the .Net form, preventing the PayPal form from submitting to the correct location.

To get around this the PayPal form element can be removed, and Javascript can be used to change the .Net form's action to point to PayPal, and then submit upon click.

The following alterations need to be made to the original code:

  • The <form> tags have been removed
  • The input submit image has changed to an 'img' tag
  • An onclick has been added to the main image, firstly changing the form action to point to PayPal, and secondly submitting the form.
  • 'cursor:pointer' style has been added to keep the appearance of a button

Resulting PayPal button code:

<input type="hidden" name="cmd" value="_s-xclick"
<input type="hidden" name="hosted_button_id" value="xxxxxxxx">
<img style="cursor:pointer;" alt="PayPal – The safer, easier way to pay online." border="0" src="https://www.paypalobjects.com/en_US/GB/i/btn/btn_subscribeCC_LG.gif" onclick="document.forms[0].action='https://www.paypal.com/cgi-bin/webscr';document.forms[0].submit();" />
<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
Radderz
  • 2,770
  • 4
  • 28
  • 40
  • This method is useful when trying to add the PayPal button through a WYSIWYG editor, where as other solutions would not be an option in this instance. – Radderz Apr 10 '14 at 23:26
1
Its simple, Just add another ContentPlaceHolder in mater page use this content place holder for paypal button. Like this:
 Master Page

<body>
    <form id="form1" runat="server">
    <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
    </asp:ToolkitScriptManager>
    <div class="masterbody">
        <center>
            <asp:Image runat="server" ID="imgLogo" ImageUrl="" /></center>
        <div class="menubar">
            <div class="loginview">                                   
            <asp:LoginView ID="MenuBar" runat="server">
                <AnonymousTemplate>                                                             
                </AnonymousTemplate>
                <LoggedInTemplate>
                </LoggedInTemplate>
            </asp:LoginView>
            </div>
        </div>        
        <div>
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            </asp:ContentPlaceHolder>
        </div>
    </div>

    </form>        
<asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server">
            </asp:ContentPlaceHolder>

</body>


<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    </asp:Content>
    <asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">
    past paypal button code here:

                <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
                <input type="hidden" name="cmd" value="_s-xclick">
                <input type="hidden" name="hosted_button_id" value="Z8TACKRHQR722">
                <table>
                <tr><td><input type="hidden" name="on0" value="Registration Type">Registration Type</td></tr><tr><td><select name="os0">
                    <option value="Team">Team $80.00</option>
                    <option value="Individual">Individual $40.00</option>
                </select> </td></tr>
                </table>
                <input type="hidden" name="currency_code" value="USD">
                <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
                <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
                </form>
    </asp:Content>
Muhammad Awais
  • 4,238
  • 1
  • 42
  • 37
0

Place </form> end tag just before the first PayPal button <form> line.
That worked for me

DevT
  • 4,843
  • 16
  • 59
  • 92
Greg
  • 1
0
<asp:ImageButton ID="ImageButton1" runat="server"
   ImageUrl="https://www.paypal.com/en_US/i/btn/btn_buynow_LG.gif"
   PostBackUrl="https://www.paypal.com/cgi-bin/webscr" />

able to solve this problem using image button. for more details see Here

DevT
  • 4,843
  • 16
  • 59
  • 92
0

Did you go through the PayPal API integration example, this sample might help.

KMån
  • 9,896
  • 2
  • 31
  • 41
  • http://www.codersbarn.com/post/Solution-to-ASPNET-Form---PayPal-Problem.aspx suggests the PayPal SDK may not work with ASP.NET 2. – Daniel Renshaw Apr 27 '10 at 16:46