Я интегрировал это в свой сайт более 6 месяцев назад. Громкость очень низкая, но пока работает хорошо.
Первое, о чем вам следует беспокоиться, это «ЗАРЯДНО». Это означает, что кредитная карта была одобрена для транзакции, но фактически она не будет списывать средства, пока вы не предпримете действия. Чтобы отправить запрос на начисление платы, просто удалите комментарий в двух строках под заголовком CHARGEABLE. Вы можете изменить свои настройки, чтобы она автоматически заряжала карту, в «Настройки»> «Настройки», но вы можете просто снять комментарий с 2 строк и оставить настройки открытыми.
Обратите внимание, что вы, возможно, захотите дождаться «уведомления о риске» и определить, прошла ли проверка риска перед утверждением сбора ($ data [$ root] ['risk-information'] ['права на получение защита '] [' VALUE ']). Хотя, кажется, вы говорите о цифровых товарах, возможность возврата средств может не иметь значения для вас.
В какой-то момент я уверен, что вам также следует проверить, что в запросе содержится достаточно информации, чтобы вы могли связать средства с каким-либо счетом, прежде чем начислять его, но, возможно, это просто моя паранойя.
Другое состояние, которое я использую, - «уведомление о сумме платежа». Вполне возможно, что есть способ использовать «CHARGED», но я не уверен, что «CHARGED» предоставляет сумму, которая была фактически списана. ($ amount_charged = $ data [$ root] ['total-charge-amount'] ['VALUE'];)
Что касается SSL, то при проверке местоположения, где вы вводите URL обратного вызова, указывается следующее:
«Укажите URL-адрес для Google, чтобы уведомлять вас о новых заказах и изменениях в состоянии заказа. Вы должны указать URL-адрес сервера, на котором запущен 128-битный SSLv3 или TLS» *
Ответ на ваш комментарий:
Я делаю это в разделе «new_order_notification», не уверен, что вы можете сделать это в другом месте.
$items = get_arr_result( $data[$root]['shopping-cart']['items']['item'] );
foreach( $items as $item ) {
if( !isset ( $item['merchant-item-id']['VALUE'] ) ) {
//error
return;
}
$request_item_id = $item['merchant-item-id']['VALUE'];
//save your item id with corresponding google order id for further processing
}