【问题标题】:Google Checkout Notification Acknowledgement (C# ASP.NET MVC)Google Checkout 通知确认 (C# ASP.NET MVC)
【发布时间】:2011-06-24 16:35:51
【问题描述】:

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

【问题讨论】:

  • 你试过 Response.Flush() 吗?

标签: api google-checkout


【解决方案1】:

您似乎缺少 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() 时出现异常

如果您首先存储序列号可能会更好(这样您“总是”拥有它),然后做您需要做的任何其他事情(即发送通知历史请求、解析、发送电子邮件等)。

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

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

【讨论】:

    【解决方案2】:

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

    更多信息请参见此处。

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

    【讨论】:

    • 其实我也想过这个。我什至在我的项目中安装了该库,但后来我不知道如何将它与 ASP.NET MVC 一起使用。它似乎依赖于 GC 按钮控件,并且您可能知道,控件不适用于 ASP.NET MVC。您是否想过将库移植到 ASP.NET MVC?我认为与其使用控件,不如使用 HTML 帮助程序,但我不确定是否会这样做,因为我不知道库的内部工作原理。
    • 在内部,按钮只知道如何创建 GCheckoutRequest 的实例。请记录一个问题,我可以为 mvc 创建一个问题,但不需要使用该按钮。查看代码示例,它将为您节省数小时的时间。
    • 您也可以在网站上提出功能请求,其中包含您认为应该如何格式化帮助程序的示例,我可以将其添加到库中。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 2013-05-28
      • 1970-01-01
      相关资源
      最近更新 更多