Google Checkout通知确认(C#ASP.NET MVC)

时间:2011-06-24 16:35:52

标签: api google-checkout

我收到序列号后,我正在尝试向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中它说它会在一段时间后发送给我这个通知。我在这里错过了什么吗?

3 个答案:

答案 0 :(得分:2)

似乎你缺少xml声明(?)

**<?xml version="1.0" encoding="utf-8"?>**
<notification-acknowledgment serial-number="the-serial-no" xmlns="http://checkout.google.com/schema/2" />

其他可能影响它的事情(仅基于上述猜测):

  • 您对_checkoutService.Post
  • 的调用中的异常
  • 您对email.Send()
  • 的致电中的例外情况

如果您首先存储序列号#(因此您“始终”拥有它),然后执行您需要执行的任何操作(即发送通知历史记录请求,解析,发送电子邮件等),这可能会更好。

确认的想法是让您确认成功收到序列号。获得序列号后,您可以在需要时执行通知历史记录请求(例如,如果您在解析时遇到问题,可以反复重新发送,直到您可以成功解析为止)。

希望这会有所帮助......

答案 1 :(得分:0)

为什么不使用已为Google Checkout构建的.Net库。

有关详细信息,请参阅此处。

http://code.google.com/p/google-checkout-dotnet-sample-code/

答案 2 :(得分:0)

您还需要确保在文档和示例代码中引用了正确的API版本。我正在看两个不同的版本,这让我感到很困惑。如果您使用的是api版本2.5,请查看此帖子。

http://www.capprime.com/software_development_weblog/2010/11/29/UsingTheGoogleCheckout25APIWithASPNETMVCTheMissingSample.aspx