1

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

该按钮的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",但没有奏效。

4

2 回答 2

2

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

虽然上述建议可行,但此处记录了正确(安全)的这样做方式。XML 替代方案(签名)在此处,其中之一允许您以安全的方式直接向 Google 发送 FORM POST。

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


更新

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

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

  1. 图片
  2. 立即购买的单件商品购买(相对于其他实施方式的一项或多项)。

请参阅.Net 库中的此示例代码。它应该给你所有你需要的......


更新 2

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

简单示例,使用 Google Checkout .Net 库实现立即购买

网络表单代码 (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" />

此时,这是您在浏览器中看到的内容:

屏幕截图 Google Checkout 立即购买

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

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 的“立即购买”按钮(未更改等)。

于 2012-06-20T14:59:06.710 回答
1

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

  • 您可以做的是将其重定向到另一个页面,该页面重定向到 google checkout。
  • 使用javascript和ajax,加载动态信息,使用javascript提交
于 2012-06-20T12:03:19.643 回答