如何克服为贝宝按钮 asp.net 嵌入 html 表单

Posted

技术标签:

【中文标题】如何克服为贝宝按钮 asp.net 嵌入 html 表单【英文标题】:How to get past embedding a html form for paypal buttons asp.net 【发布时间】:2011-03-20 06:08:54 【问题描述】:

我有一些在 asp.net 网站上使用 paypal 的经验,但是这个问题让我很困惑。

问题的根源:您无法在页面表单中嵌入 paypal 按钮的 html 表单。

原始解决方案:最初我的网站使用多个 aspx 页面,因此我可以简单地排列我的表单标签,这样它们就不会被嵌入到另一个页面中。

我的网站现在使用一个包含不同 ascx 控件的主 aspx 页面。这意味着我没有在页面周围排列表单标签的选项,因此需要解决。

注意。我到处寻找简单的解决方案,但那里是一片丛林,贝宝是一场噩梦。我确实在 ghost form 上找到了一些东西,这些东西都在 c# 中。可能有帮助...

提前感谢您的帮助....

【问题讨论】:

我在下面的回复中放置了“Ghost 表单”的代码。使用它,您将不需要使用 SDK 提供的 Web 服务 :-) 【参考方案1】:

使用他们的 API 提交 PayPal 信息,而不是直接向他们提交表单。

这样您就可以将所有内容保留为单个表单的一部分,并在 PayPal 输入和验证方面增加一点稳健性。

PayPal: SDKs and Downloads

【讨论】:

【参考方案2】:

另一个支付提供商也遇到了这个问题。您可以使用他们的 API,也可以通过以下方式解决它:

将结帐按钮设为标准图片按钮 运行类似 ClientScript.RegisterStartupScript() 的东西来输出 HTML 和 javascript。 HTML 应该是具有所有隐藏字段和正确 id 的实际表单。 javascript 是在页面加载和提交页面时执行的代码。

ClientScript.RegisterStartupScript(Me.GetType(), "PaypalSubmit", "<AllMarkUp><GoesHere><script>And.Javascript</script>", False)

希望这会有所帮助,否则您可以使用 Web 服务 API。通过采用这种方法,您正在执行回发,输出 HTML 表单(在 .NET 表单之外,因为它位于页面底部),然后依靠 javascript 实际提交它。

【讨论】:

【参考方案3】:

这里有一些对你有用的东西。在您的代码隐藏中:

// Workaround for PayPal form problem
CustomForm mainForm = new CustomForm();
mainForm.RenderFormTag = false;

创建一个覆盖 HtmlForm 类的自定义表单类:

public class CustomForm : System.Web.UI.HtmlControls.HtmlForm

    protected bool _render;

    public bool RenderFormTag
    
        get  return _render; 
        set  _render = value; 
    

    public CustomForm()
    
        //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);
    

【讨论】:

以上是关于如何克服为贝宝按钮 asp.net 嵌入 html 表单的主要内容,如果未能解决你的问题,请参考以下文章

WooCommerce - 增加运费并为贝宝网关增加额外费用

如何使 paypal 按钮在 asp.net webform 中工作

asp.net 中的简单应用程序,用户在文本框中输入金额并单击使用贝宝结帐

Market Place 贝宝集成

贝宝订阅与定期?

贝宝订阅与定期?