【问题标题】:How to subscribe to click event of html form?如何订阅html表单的点击事件?
【发布时间】:2023-04-11 10:50:02
【问题描述】:

我有一个谷歌结帐“立即购买”按钮,我想添加动态创建的信息,以便在点击它时发送。我该怎么做?

按钮的html是:

<form action="https://sandbox.google.com/checkout/..." id="Form1" method="post" name="..." target="_top">
<input name="item_name_1" type="hidden" value="..." />
...
<input alt="" src="https://sandbox.google.com/checkout/buttons/buy.gif?merchant_id=..." type="image" />
</form>

那么我要添加什么? (如果可能的话,我想通过 ASP.Net 代码来实现。)

我尝试添加onclick="Button1_Click",但没有成功。

【问题讨论】:

    标签: asp.net html asp.net-4.0 google-checkout


    【解决方案1】:

    如果这是用于 Google Checkout,您应该考虑使用现有的 .Net library for Google Checkout

    虽然上述建议可行,但正确(安全)的做法是documented here。 XML 替代(签名)是here,其中之一允许您以安全的方式直接向 Google 发送 FORM POST。

    通过客户端方法提交总是会让您容易受到篡改 - 与仅向 Google 发布基本的 HTML 表单相比(安全方面)几乎没有什么区别。


    更新

    ...不支持立即购买...

    归根结底,有两点让“立即购买”不同于任何其他“购物车”提交:

    1. 图片
    2. “立即购买”的单件购买(相对于其他实施的一个或多个)。

    看到这个sample code from the .Net Library。它应该给你所有你需要的......


    更新 2

    图书馆没有任何“死板”的地方。您不必使用其中的所有内容 - 您甚至可以利用已经为您创建的所有管道。

    简单示例,使用 Google Checkout .Net 库实现 BUY NOW

    Web 表单代码 (aspx):

    <p>Some ASP.net button:<br />
    <asp:Button ID="Button1" runat="server" Text="BUY ME NOW" onclick="Button1_Click" /><br />
    
    An ASP.NET Image Button using BUY NOW Image:<br />
    <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="https://checkout.google.com/buttons/buy.gif?merchant_id=[USE YOUR OWN MERCHANT ID]&amp;w=117&amp;h=48&amp;style=white&amp;variant=text&amp;loc=en_US" onclick="ImageButton1_Click" />
    

    此时您在浏览器中看到的内容如下:

    代码(内联或代码隐藏):

    using GCheckout.Checkout;
    using GCheckout.Util;
    
    ....
    
    protected void Button1_Click(object sender, EventArgs e)
    {
        doSomething();
    }
    
    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        doSomething();
    }
    
    private void doSomething()
    {
        /**
         * Use the correct Merchant ID and Key based on GCheckout.EnvironmentType
         * You cannot mix/match sandbox and production id or key
         */
        CheckoutShoppingCartRequest Req = new CheckoutShoppingCartRequest("your_production_MID", "your_production_KEY", GCheckout.EnvironmentType.Production, "USD", 20);
    
        /**
         * Everything from this point is a copy and paste
         * from .net libary sample code
         * http://code.google.com/p/google-checkout-dotnet-sample-code/source/browse/examples/post_cart/simple.aspx
         */
        Req.AddItem("Mars bar", "Packed with peanuts", 0.75m, 2);
    
        //lets make sure we can add 2 different flat rate shipping amounts
        Req.AddFlatRateShippingMethod("UPS Ground", 5);
    
        //Add a rule to tax all items at 7.5% for Ohio
        Req.AddStateTaxRule("OH", 7.5, true);
    
        GCheckoutResponse Resp = Req.Send();
        if (Resp.IsGood)
        {
            Response.Redirect(Resp.RedirectUrl, true);
        }
        else
        {
            Response.Write("Resp.ResponseXml = " + Resp.ResponseXml + "<br>");
            Response.Write("Resp.RedirectUrl = " + Resp.RedirectUrl + "<br>");
            Response.Write("Resp.IsGood = " + Resp.IsGood + "<br>");
            Response.Write("Resp.ErrorMessage = " + Resp.ErrorMessage + "<br>");
        }
    }
    

    重要

    以上只是示例代码,用于说明您可以使用 .Net 库做什么。 要遵守 Google Checkout 实施政策,请使用 ImageButton 实施 - 它可确保您使用的是 Google 的“立即购买”按钮(未更改等)。

    【讨论】:

    • 他们的 API 似乎不支持“立即购买”按钮。
    • 我尝试使用 .net 库,但是当我要更改按钮的图像时 - 设置按钮的 ImageUrl 属性只会让它消失。任何想法如何做到这一点?
    • 非常感谢您的坚持。我决定按照您的建议使用他们的 .net 库。 (现在卡在 Google 没有处理我的 NotificationAcknowledgment stackoverflow.com/questions/11177384/… 。)
    【解决方案2】:

    ASP 是服务器端脚本,因此在页面加载后您无法启动它。 onlcick 属性用于启动 javascript。 两种解决方法:

    • 您可以将其重定向到另一个页面,该页面重定向到 google checkout。
    • 使用javascript和ajax,加载动态信息,使用javascript提交

    【讨论】:

    • 谢谢。我没有脚本经验,但我可能能够管理重定向。 (虽然我仍然不知道如何在代码中添加信息:)
    • “页面加载后无法启动它”——我不知道它是否叫做“启动”,但事情可以发生——例如——单击 ASP.net 按钮会调用代码隐藏中的相应事件处理程序。
    • 哎呀,我的错,请阅读 .net 部分。那就别管我的回答了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    相关资源
    最近更新 更多