我已将Google Checkout与网站集成,让它正常工作/假装向人们收取罚款并处理订单通知。
但是,当我向Google发送请求以获取通知的详细信息时,我会收到400响应,其中包含无效的XML。
事实上,到目前为止,此集成的所有内容都是HTML键值对,但我突然需要解析和处理XML?我可能会遗漏一些东西,但我无法看到文档中的哪个位置告诉我我的请求应该是什么样的。
它清楚地列出了一个名称/值对的示例,但显然我实际上需要将它们作为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我也通过谷歌的示例代码进行了检查,但它是如此分层和依赖性,虽然我设法使用其中一些,其余的是一个谜 - 所以,除非你能给我行号,样本没有多大帮助
答案 0 :(得分:1)
好的结果证明这很简单。
我的param名称错了 - 'type'应该是'_type',就像这样:
$request='_type=notification-history-request&serial-number='.$serialNumber;
我现在得到了我需要的回应,避免了恐慌:)。