0

我有一个被调用的回调 url,我可以处理它。但是 - Google 不会处理我的确认。这一切都在EnvironmentType.Sandbox.

在 Google 结帐“集成控制台”中,我收到以下消息:

我们在处理您的通知确认时遇到错误。我们得到的错误是:解析通知确认时出错。

详细信息是:他们给我发了什么:serial-number=...

他们收到了什么:

<?xml version="1.0" encoding="utf-8"?>
<notification-acknowledgment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" serial-number="here is the same serial number they sent me" xmlns="http://checkout.google.com/schema/2" />

<!DOCTYPE html...

我正在使用的代码:

GCheckout.AutoGen.NotificationAcknowledgment response = new GCheckout.AutoGen.NotificationAcknowledgment();
response.serialnumber = serialNumber;
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.BinaryWrite(GCheckout.Util.EncodeHelper.Serialize(response));
HttpContext.Current.Response.StatusCode = 200;

这里有什么错误?

4

2 回答 2

1

请参阅.Net 库示例中的此“代码隐藏”代码

如果您使用的是 aspx 文件,请删除其中的所有 HTML 内容,如同一示例的aspx 源代码所示

Response.End()也将起作用,因为它阻止返回任何进一步的响应内容(实际上做同样的事情 - 阻止aspx发送 Web 表单(文件)中的 HTML 内容)。

您还可以考虑ashx为回调 url 使用通用处理程序 ( ) 而不是 aspx 页面。

于 2012-06-25T02:07:37.943 回答
0

似乎这个问题可以通过回答我的另一个问题来解决:如何从头开始创建 http 响应?.

解决方案是添加:

HttpContext.Current.Response.End();
于 2012-06-24T21:33:33.523 回答