PHP Google Checkout Notifications - пример кода для отправки запроса на уведомление? - PullRequest
1 голос
/ 11 ноября 2011

Я интегрировал 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 Я также проверил пример кода Google, но он настолько многослойный и зависимый, что, хотя мне и удалось его использовать, остальное остается загадкой - поэтому, если вы не можете дать мне номера строк, образцы не являютсябольшая помощь

1 Ответ

1 голос
/ 11 ноября 2011

ОК, оказалось, что это было действительно просто.

Я неправильно назвал параметры - 'type' должен был быть '_type', вот так:

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

Я получаюответ мне нужен сейчас, паника предотвращена :) 1006 *

...