我收到序列号后,我正在尝试向Google Checkout发送通知确认,以便知道我已经处理了此序列号并将其保存到我的数据库中。但是我在集成控制台中不断收到以下错误:
我们遇到了错误处理 你的通知确认。该 我们得到的错误是:解析时出错 通知确认。
当我检查发送到服务器的值时,一切似乎对我来说都很好:
<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
,但它永远不会发送它,尽管在Documentation Section 2, Step 2.1中它说它会在一段时间后发送给我这个通知。我在这里错过了什么吗?
答案 0 :(得分:2)
似乎你缺少xml声明(?)
**<?xml version="1.0" encoding="utf-8"?>**
<notification-acknowledgment serial-number="the-serial-no" xmlns="http://checkout.google.com/schema/2" />
其他可能影响它的事情(仅基于上述猜测):
如果您首先存储序列号#(因此您“始终”拥有它),然后执行您需要执行的任何操作(即发送通知历史记录请求,解析,发送电子邮件等),这可能会更好。
确认的想法是让您确认成功收到序列号。获得序列号后,您可以在需要时执行通知历史记录请求(例如,如果您在解析时遇到问题,可以反复重新发送,直到您可以成功解析为止)。
希望这会有所帮助......
答案 1 :(得分:0)
为什么不使用已为Google Checkout构建的.Net库。
有关详细信息,请参阅此处。
http://code.google.com/p/google-checkout-dotnet-sample-code/
答案 2 :(得分:0)
您还需要确保在文档和示例代码中引用了正确的API版本。我正在看两个不同的版本,这让我感到很困惑。如果您使用的是api版本2.5,请查看此帖子。