Уведомление о сумме списания с API Google Checkout

Я получаю следующий ответ от уведомления о сумме оплаты. (в окружении песочницы). То, что я пытаюсь сделать, это отправить уведомление по электронной почте клиенту, когда я уверен, что платеж очищен. Прямо сейчас я использую уведомление о новом заказе, и иногда платежи клиентов не выполняются, и я хочу убедиться, что я доставлю цифровую загрузку, когда получу деньги.

array (
  'charge-amount-notification' => 
  array (
    'xmlns' => 'http://checkout.google.com/schema/2',
    'serial-number' => '962015304346298-00013-2',
    'timestamp' => 
    array (
      'VALUE' => '2012-09-01T13:25:18.732Z',
    ),
    'latest-charge-amount' => 
    array (
      'currency' => 'USD',
      'VALUE' => '99.0',
    ),
    'total-charge-amount' => 
    array (
      'currency' => 'USD',
      'VALUE' => '99.0',
    ),
    'google-order-number' => 
    array (
      'VALUE' => '962015304346298',
    ),
  ),

)

Я ожидал ключ сводки заказа с информацией о клиенте, как описано в документации.

https://developers.google.com/checkout/developer/Google_Checkout_XML_API_Notification_API#charge_amount_notification

Вот мой код:

if (isset($_POST['serial-number']))
    {
        require_once('lib/google_checkout/googleresponse.php');
        require_once('lib/google_checkout/googlerequest.php');
        require_once('lib/google_checkout/googlenotificationhistory.php');      
        $response = new GoogleResponse(GOOGLE_MERCHANT_ID, GOOGLE_MERCHANT_KEY);
        $google_notification_history = new GoogleNotificationHistoryRequest(GOOGLE_MERCHANT_ID, GOOGLE_MERCHANT_KEY, GOOGLE_SANDBOX ? 'sandbox' : 'production');
        $raw_xml_array = $google_notification_history->SendNotificationHistoryRequest($_POST['serial-number']);
        $raw_xml = $raw_xml_array[1];
        $response->SendAck($_POST['serial-number'], false);
        list($root, $order_data) = $response->GetParsedXML($raw_xml);

        if (isset($order_data['charge-amount-notification']))
        {
            $data = array();
            file_put_contents("google.txt", var_export($order_data, true));
            $data['name'] = $order_data['charge-amount-notification']['order-summary']['buyer-billing-address']['contact-name']['VALUE'];
            $data['email'] = $order_data['charge-amount-notification']['order-summary']['buyer-billing-address']['email']['VALUE'];
            $data['txn_id'] = $order_data['charge-amount-notification']['google-order-number']['VALUE'];
            $data['payment_status'] = 'Completed';
            $res = save_payment($data);
            if ($res) {
                $data = payment_details(array('txn_id' => $data['txn_id']));
                mail_notification($data);
            }            
        }
    }

person Chris Muench    schedule 01.09.2012    source источник


Ответы (1)


Элемент <order-summary> включается в уведомления только в версии API 2.5.
Google Checkout HTML API Notification API указывает:

После настройки веб-службы войдите в свою учетную запись Merchant Center, перейдите на вкладку «Настройки», а затем нажмите ссылку «Интеграция» в меню в левой части страницы. Введите URL-адрес веб-службы в поле URL-адрес обратного вызова API. (Вам необходимо ввести URL-адрес обратного вызова API как в учетной записи песочницы, так и в рабочей учетной записи.) Вы также должны указать формат, в котором вы хотите получать уведомления, и версию API. Эта документация охватывает «Уведомление как серийный номер» и API версии 2.5.

введите здесь описание изображения

person Community    schedule 08.09.2012
comment
Вроде 2.5 требует java, так ли это? - person Chris Muench; 08.09.2012
comment
Также какое уведомление я должен использовать, когда я могу гарантировать, что я получил деньги? - person Chris Muench; 08.09.2012
comment
Также я должен включить фильтрацию уведомлений? - person Chris Muench; 08.09.2012
comment
@Chris Извиняюсь за мой поздний ответ, но вчера, опубликовав свой ответ, я выключил свой компьютер и ушел, поэтому я только сейчас прочитал ваши комментарии. Ответ на ваш первый вопрос - нет: API 2.5 не требует Java. Вам следует включать фильтрацию уведомлений только в том случае, если вы не хотите получать все типы уведомлений. Поскольку вас интересует уведомление о новом заказе, вы также можете включить фильтрацию уведомлений, если хотите. Я не понял вопроса о том, какой тип уведомления использовать, когда вы получили деньги. Не могли бы вы объяснить это лучше? - person ; 09.09.2012
comment
У меня была проблема, когда я получал уведомление о новом заказе, а затем оплата не удалась. Я уже отправил им ссылку для загрузки цифрового продукта. Что я хочу сделать, так это НЕ отправлять или отправлять им по электронной почте URL-адрес, пока я не буду уверен, что они были оплачены. - person Chris Muench; 09.09.2012
comment
Хорошо, спасибо за разъяснение. Я думаю, вам следует прислушиваться к уведомлению об авторизации-сумме. Это уведомление отправляется, когда кредитная корзина покупателя авторизована, и у покупателя было достаточно времени для отмены заказа. Как только вы получите это уведомление, вы можете отправить товар. Дополнительные сведения см. в инструкциях по обработке заказов. - person ; 09.09.2012
comment
уведомление о сумме платежа отправляется, только если вы используете заказ на оплату и отправку команду до истечения срока действия авторизации. Подробнее см. на этой странице. - person ; 10.09.2012