一旦我收到序列号,我就会尝试向Google发送通知确认,这样它就会知道我已经处理了这个序列号并将它保存到了我的数据库中。但是,我一直在集成控制台中得到以下错误:
我们在处理通知确认时遇到了错误。我们得到的错误是:错误解析通知确认。
当我检查发送到服务器的值时,我觉得一切看起来都很好:
<notification-acknowledgement xmlns="http://checkout.google.com/schema/2" serial-number="357304636821412-00001-7" />这是我的密码:
[HttpPost]
public EmptyResult Notify()
{
var serial = Request["serial-number"];
var data =
"<notification-history-request xmlns=\"http://checkout.google.com/schema/2\"><serial-number>" + serial + "</serial-number></notification-history-request>";
var serverResponse = _checkoutService.Post(data, GoogleCheckoutConstants.ReportsUri);
//Send me email to checkout the response
dynamic email = new Email("CheckoutLog");
email.Response = serverResponse;
email.Send();
var acknowldgement =
"<notification-acknowledgement xmlns=\"http://checkout.google.com/schema/2\" serial-number=\"" + serial +
"\" />";
HttpResponse response = System.Web.HttpContext.Current.Response;
response.StatusCode = 200;
response.ContentType = "text/xml";
response.Write(acknowldgement);
return null;
}此外,为什么我一直只接收new-order-notification?对我来说更重要的是authorization-amount-notification,但是它从不发送它,尽管在文件第2节,步骤2.1中它说过一段时间后它应该发送给我这个通知。我是不是漏掉了什么?
发布于 2011-06-26 04:26:36
似乎您缺少xml声明(?)
**<?xml version="1.0" encoding="utf-8"?>**
<notification-acknowledgment serial-number="the-serial-no" xmlns="http://checkout.google.com/schema/2" />其他可能影响它的因素(仅基于上述猜测):
如果您首先存储串行#(因此您“总是”拥有它),然后做您需要做的其他任何事情(即发送通知历史记录请求、解析、发送电子邮件等),可能会更好。
确认的想法是你确认成功地收到了序列号。一旦您有了序列号,您就可以在需要时执行通知历史记录请求(即,如果您有解析问题,您可以一次又一次地重新发送,直到您成功地解析为止)。
希望这有帮助..。
发布于 2011-06-27 13:40:20
为什么不使用已经为构建的.Net库?
更多信息请看这个。
http://code.google.com/p/google-checkout-dotnet-sample-code/
发布于 2011-09-09 21:00:31
您还需要确保在文档和示例代码中引用了正确的API版本。我在看两个不同的版本,这让我很困惑。如果您正在使用api版本2.5,请签出这篇文章。
weblog/2010/11/29/UsingTheGoogleCheckout25APIWithASPNETMVCTheMissingSample.aspx
https://stackoverflow.com/questions/6470914
复制相似问题