我正在尝试在我的.aspx页面中实现paypal付款。我的页面中有以下html:
<form target="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="hosted_button_id" value="19218">
<input type="hidden" name="rm" value="2">
<input type="hidden" name="business" value="<%= ConfigurationManager.AppSettings("BusinessEmail").ToString%>">
<input type="hidden" name="item_name" value="<%= "CityBits Gold " & listplans.SelectedItem.ToString & " listing plan for " & trim(txttitle.text)%>">
<input type="hidden" name="item_number" value="<%= HiddenFieldid.Value%>">
<input type="hidden" name="amount" value="<%= listplans.SelectedValue%>">
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="return" value="<%= ConfigurationManager.AppSettings("ReturnUrl").ToString & "?requestID=" & HiddenFieldid.Value%>">
<input type="hidden" name="cancel_return" value="<%= ConfigurationManager.AppSettings("CancelUrl").ToString%>">
<input type="hidden" name="no_shipping" value="1">
<input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_cart_LG.gif" border="0" name="submit" alt="">
<img alt="" border="0" src="https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
在我的aspx页面中,当我点击paypal按钮时,它只是刷新页面。当我将完全相同的代码(当然具有实际值)放在一个简单的html文件中并单击按钮时,它会根据需要将我重定向到paypal。我尝试使用输入的实际值,就像在html页面中一样,但它仍然不起作用。
如果重要,我的页面中有更新面板,但此表格不在其中。
任何人都知道我做错了什么?这可能是一些愚蠢的事情,但这让我头疼了2天了!
答案 0 :(得分:1)
这里的问题是ASP.NET页面的工作方式。 ASP.NET总是假定页面上只有一个大表单,并在引入第二个表单时开始执行各种技巧。
但是,在您的情况下可以使用的是Button控件及其PostBackUrl属性。它将正确处理您的内部表单,收集所有参数并执行帖子:
<form target="paypal">
...
<asp:ImageButton runat="server" ID="PayPalSubmit"
PostBackUrl="https://www.paypal.com/cgi-bin/webscr"
ImageUrl="https://www.sandbox.paypal.com/en_US/i/btn/btn_cart_LG.gif" />
</form>
答案 1 :(得分:0)
在尝试将数据发布到PayPal时,这是ASP.NET表单的一个众所周知的问题。这是一个非常酷的解决方案,我一直用于电子商务Web窗体应用程序:
http://jerschneid.blogspot.com/2007/03/hide-form-tag-but-leave-content.html
这里有两篇个人博客文章,扩展了Jeremy Schneider关于使用自定义版HtmlForm的想法:
http://codersbarn.com/post/2008/03/08/Solution-to-ASPNET-Form-PayPal-Problem.aspx
http://codersbarn.com/post/2008/03/27/Integrate-PayPal-Checkout-Button-with-ASPNET-20.aspx
远离使用双重表格标签,JavaScript和其他黑客。
using System;
using System.Web.UI;
using System.Web.UI.HtmlControls;
/// <summary>
/// This is a special form that can _not_ render the actual form tag, but always render the contents
/// </summary>
public class GhostForm : System.Web.UI.HtmlControls.HtmlForm
{
protected bool _render;
public bool RenderFormTag
{
get { return _render; }
set { _render = value; }
}
public GhostForm()
{
//By default, show the form tag
_render = true;
}
protected override void RenderBeginTag(HtmlTextWriter writer)
{
//Only render the tag when _render is set to true
if (_render)
base.RenderBeginTag(writer);
}
protected override void RenderEndTag(HtmlTextWriter writer)
{
//Only render the tag when _render is set to true
if (_render)
base.RenderEndTag(writer);
}
}