【问题标题】:Trouble getting to PayPal Buy Now Buttons to work on a single page in ASP.NET无法在 ASP.NET 中的单个页面上使用 PayPal 立即购买按钮
【发布时间】:2010-11-12 09:20:38
【问题描述】:

我承认我是 asp.net 和 web 表单的菜鸟。我在一个页面上合并了几个 PayPal Buy Now 按钮时遇到了问题。基本上,问题在于无论点击哪个“立即购买”按钮,用户都会被带到贝宝购买页面上最后一个按钮所代表的产品。

我的第一个按钮的代码是这样的......

<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="ABC123">
<asp:ImageButton runat="server" id="PPImageButton1" PostBackUrl="https://www.paypal.com/cgi-bin/webscr" ImageUrl="https://www.paypal.com/en_US/i/btn/btn_buynow_SM.gif"/>

我的第二个按钮类似于...

<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="ABC456">
<asp:ImageButton runat="server" id="PPImageButton2" PostBackUrl="https://www.paypal.com/cgi-bin/webscr" ImageUrl="https://www.paypal.com/en_US/i/btn/btn_buynow_SM.gif"/>

如何让第一个按钮向 PayPal 服务发送值 ABC123 而不是 ABC456?

提前致谢。

【问题讨论】:

    标签: asp.net paypal


    【解决方案1】:

    发送值的不是您的按钮,而是它所在的表单和/或它背后的代码。 你能:

    1. 发布表单代码?
    2. 发布此页面的代码?

    【讨论】:

      【解决方案2】:

      按钮的 POST 内容是围绕提交按钮的 FORM 标记中的每个输入。因此,要让每个按钮提交一组单独的隐藏字段,您需要将按钮和所需的隐藏字段包装在单独的表单中:

      <form ... >
      <input type="hidden" name="cmd" value="_s-xclick">
      <input type="hidden" name="hosted_button_id" value="ABC123">
      <asp:ImageButton runat="server" id="PPImageButton1" PostBackUrl="https://www.paypal.com/cgi-bin/webscr" ImageUrl="https://www.paypal.com/en_US/i/btn/btn_buynow_SM.gif"/>
      </form>
      
      <form ... >
      <input type="hidden" name="cmd" value="_s-xclick">
      <input type="hidden" name="hosted_button_id" value="ABC456">
      <asp:ImageButton runat="server" id="PPImageButton1" PostBackUrl="https://www.paypal.com/cgi-bin/webscr" ImageUrl="https://www.paypal.com/en_US/i/btn/btn_buynow_SM.gif"/>
      </form>
      

      【讨论】:

      • 感谢您的回复。我基本上搞砸了我的解释,因为我没有提供足够的细节。这是一个 SharePoint 网站,当我尝试添加第二个表单标记(创建第一个按钮时,我收到一条错误消息,指出 ASP.NET 不支持嵌套表单。因此,我将
        和第一个按钮拉出工作正常。然后当我添加第二个按钮时,我发现了问题。
      • asp :ImageButton runat="server" id="PPImageButton1" PostBackUrl="paypal.com/cgi-bin/webscr" ImageUrl="paypal.com/en_US/i/btn/btn_buynow_SM.gif">
        paypal.com/cgi-bin/webscr" ImageUrl="paypal.com/en_US/i/btn/btn_buynow_SM.gif">
      • 我的最后一条评论是当前代码不起作用。第一个按钮似乎可以正常工作,而第二个按钮仅刷新页面。
      • 莱姆斯,你们帮了忙。在发帖之前,我收到了一些不好的建议。我将适当的开关添加到
        行,现在它似乎工作正常。谢谢你让我走上正确的道路。
      【解决方案3】:

      我对此的菜鸟解决方案是从 aspx 页面中删除每个立即购买按钮及其相关字段,并将每个集合放在单独的 html 页面中。

      <!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>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
      <title>first button</title>
      </head>
      
      <body>
      <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="paypal">
      <input type="hidden" value="_s-xclick" name="cmd" /> <input type="hidden" value="???????" name="hosted_button_id" /> 
      <table>
      <tbody>
      <tr>
      <td><input type="hidden" value="Member name" name="on0" />Member name</td>
      
      <td><input maxlength="60" size="30" name="os0" /></td></tr>
      <tr>
      <td><input type="hidden" value="Membership No. (if known)" name="on1" />Membership No. (if known)</td>
      <td><input maxlength="60" size="6" name="os1" /></td></tr></tbody></table>
      <input type="image" alt="PayPal - The safer, easier way to pay online." src="https://www.paypal.com/en_GB/i/btn/btn_cart_LG.gif"  name="submit" /> <img height="1" alt="" src="https://www.paypal.com/en_GB/i/scr/pixel.gif" width="1" border="0"/> </form>
      
      </body>
      </html>
      

      在 aspx 页面中删除按钮和其他字段的位置,插入一个指向 html 页面的 iframe,如下所示:

      <iframe width="600" height="" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="mybuttonpage1.htm"></iframe>
      

      【讨论】:

        【解决方案4】:

        以下是在 ASP.NET 中使用 PayPal 时出现多表单问题的解决方案:

        http://www.codersbarn.com/post/2008/03/08/Solution-to-ASPNET-Form-PayPal-Problem.aspx

        【讨论】:

        • 我认为这也是一个 hack!,iframe 和你的方法一样简单和 hacky(这花了我几个小时的乐趣)。
        • 覆盖 HtmlForm 是解决此问题的正确方法。如果您遇到问题,具体是什么问题?
        【解决方案5】:

        我讨论了将 PayPal 代码插入 ASP.NET 页面的问题的几种解决方法,并在我的文章 http://blackbeltcoder.com/Articles/ecommerce/quick-and-dirty-buy-now-buttons-in-asp-net 中介绍了一种不同的方法。

        最后,您不需要使用表单,因为 PayPal 允许您使用常规锚链接。

        【讨论】:

          【解决方案6】:

          我能够通过从 jQuery 中的 DOM 中删除所有其他按钮容器来使其工作。给你的容器添加一个类,给ImageButton添加一个CssClass,“PayPalImageButtons”

          <div>
              Buy This First Product Below
          </div>
          <div class="ManualPurchase PayPalButtons">
              <input type="hidden" name="cmd" value="_s-xclick" />
              <input type="hidden" name="hosted_button_id" value="ABC123" />
              <asp:ImageButton CssClass="PayPalImageButtons" runat="server" id="PPImageButton1" PostBackUrl="https://www.paypal.com/cgi-bin/webscr" ImageUrl="https://www.paypal.com/en_US/i/btn/btn_buynow_SM.gif" />
          </div>
          
          <div>
              Buy This Second Product Below
          </div>
          <div class="ManualPurchase PayPalButtons">
              <input type="hidden" name="cmd" value="_s-xclick" />
              <input type="hidden" name="hosted_button_id" value="ABC456" />
              <asp:ImageButton CssClass="PayPalImageButtons" runat="server" id="PPImageButton1" PostBackUrl="https://www.paypal.com/cgi-bin/webscr" ImageUrl="https://www.paypal.com/en_US/i/btn/btn_buynow_SM.gif" />
          </div>
          

          和 jQuery

          <script type="text/javascript">
              function pageLoad() {
                  $(".PayPalImageButtons").click(function (e) {
                      $(this).parent().addClass("keep");
                      $(".PayPalButtons").not(".keep").remove();
                  });
              }
          </script>
          

          我的下一步是处理已移除元素的高度,并且在加载 PayPal 页面时可能会出现“请稍候”对话框

          【讨论】:

            猜你喜欢
            • 2014-10-05
            • 2014-04-22
            • 2013-01-03
            • 2013-05-29
            • 2014-08-03
            • 2013-11-02
            • 2014-09-15
            • 2010-12-04
            • 2014-06-04
            相关资源
            最近更新 更多