我有一个谷歌结帐“立即购买”按钮,我想添加动态创建的信息,单击时发送。 我怎么做?
按钮的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"
,但没有奏效。
如果这是谷歌Checkout的,你应该考虑使用现有的谷歌Checkout的NET库 。
虽然上述建议将工作,这样做的正确的(安全)的方式被记录在这里 。 该XML替代(签约)是在这里 ,其中一个让你做一个直接的表单POST到谷歌在一个安全的方式。
通过客户端方式提交总会让你容易受到篡改 - 这将使相差不大(安全明智)不只是做一个基本的HTML表单提交给谷歌。
更新日期 :
... 不支持现在买 ...
在一天结束的时候,有两件事情,使“BUY NOW”从任何其他“购物车”提交的不同:
- 图片
- 单个项目购买了立即购买(与一个或多个其他实现)。
看到这个从.NET库示例代码 。 它应该给你所有你需要....
更新2:
有没有什么“刚性”关于库。 你不必在它使用的一切 - 你甚至可以只取已经为您创建的所有管道的优势。
简单的例子,实施立即购买,使用谷歌Checkout的NET库
Web窗体代码(C ++):
<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]&w=117&h=48&style=white&variant=text&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库做什么。 为了符合谷歌Checkout的实施政策,使用的ImageButton实现 -它确保您使用的是谷歌的立即购买按钮(未改变,等等)。
ASP是一种服务器端脚本,所以页面加载后,你不能启动它。 该onlcick属性用于发射的JavaScript。 两个解决办法的:
- 你可以做的是重定向到另一个页面,该页面重定向到谷歌结帐。
- 使用JavaScript和Ajax,加载动态信息,并使用JavaScript提交