PHP Google Checkout Notifications - 用于发送通知请求的代码示例?

时间:2011-11-11 14:29:03

标签: php google-checkout

我已将Google Checkout与网站集成,让它正常工作/假装向人们收取罚款并处理订单通知。

但是,当我向Google发送请求以获取通知的详细信息时,我会收到400响应,其中包含无效的XML。

事实上,到目前为止,此集成的所有内容都是HTML键值对,但我突然需要解析和处理XML?我可能会遗漏一些东西,但我无法看到文档中的哪个位置告诉我我的请求应该是什么样的。

见这里: http://code.google.com/apis/checkout/developer/Google_Checkout_HTML_API_Notification_API.html#Receiving_and_Processing_Notifications

它清楚地列出了一个名称/值对的示例,但显然我实际上需要将它们作为XML发送?

我现在就在这里:

<?php    $header_arr = array("Authorization: Basic ".$authKey,
                    "Content-Type: application/xml; charset=UTF-8",
            "Accept: application/xml; charset=UTF-8");

$request='type=notification-history-request&serial-number='.$serialNumber;

$ch = curl_init($test_URL);     
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header_arr);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$body = curl_exec($ch);

if (curl_errno($ch)) {
  $log.=', error! :'.curl_error($ch);
} else {
  $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  $log.=', status code is: '.$status_code;  //400
}
?>

每次返回400 - 是的我知道我正在设置XML的接受标头,这是文档指定的,这里:http://code.google.com/apis/checkout/developer/Google_Checkout_HTML_API.html#https_auth_scheme

所以,我发现自己需要发送正确的请求......任何想法?

PS我也通过谷歌的示例代码进行了检查,但它是如此分层和依赖性,虽然我设法使用其中一些,其余的是一个谜 - 所以,除非你能给我行号,样本没有多大帮助

1 个答案:

答案 0 :(得分:1)

好的结果证明这很简单。

我的param名称错了 - 'type'应该是'_type',就像这样:

$request='_type=notification-history-request&serial-number='.$serialNumber;

我现在得到了我需要的回应,避免了恐慌:)。