Доброго времени суток.
Есть интернет-магазин на WordPress + Woocommerce.
Заказы приходят часто, операторы получают новые заказы путем уведомления по почте.
Есть плагин онлайн оплаты от банка Тинькофф.
Плагин установился хорошо. Все проходит, статусы заказа меняет в соответствии с результатом оплаты.
НО. уведомления по почте не приходят как при обычном заказе.
Как я понял, плагин банка просто присваивает значения статуса заказа, а не изменяет через update_status. Из-за этого уведомления о заказе на почту не приходят. Нужно руками в админ панели статусы менять, чтобы письмо ушло, но так как заказы идут часто, то это неудобно очень.
Вот кусок кода, который отвечает за статусы заказа (если нужно больше, могу скинуть, или позаимствовать весь плагин на сайте банка)
//woocommerce_tinkoff_settings
$settings = $wpdb->get_results("select * from ".$wpdb->prefix."options where option_name='woocommerce_tinkoff_settings'");
$settings = unserialize($settings[0]->option_value);
$_POST['Password'] = $settings['secret_key'];
ksort($_POST);
$sorted = $_POST;
$original_token = $sorted['Token'];
unset($sorted['Token']);
$values = implode('', array_values($sorted));
$token = hash('sha256', $values);
if($token == $original_token){
$order = $wpdb->get_results("select * from ".$wpdb->prefix."woocommerce_order_items where order_id=". (int) $_POST['OrderId']);
$order_status = $wpdb->get_results("select * from ".$wpdb->prefix."posts where ID=". $order[0]->order_id);
$status = $order_status[0]->post_status;
switch ($_POST['Status']) {
case 'AUTHORIZED': $order_status = 'wc-on-hold'; break; /*Деньги на карте захолдированы. Корзина очищается.*/
case 'CONFIRMED': $order_status = 'wc-processing'; break; /*Платеж подтвержден.*/
case 'CANCELED': $order_status = 'wc-cancelled'; break; /*Платеж отменен*/
case 'REJECTED': $order_status = 'wc-failed'; break; /*Платеж отклонен.*/
case 'REVERSED': $order_status = 'wc-cancelled'; break; /*Платеж отменен*/
case 'REFUNDED': $order_status = 'wc-refunded'; break; /*Произведен возврат денег клиенту*/
}
$a = $wpdb->query($wpdb->prepare("UPDATE ".$wpdb->prefix."posts SET post_status='".$order_status."' WHERE ID=%d ", (int) $_POST['OrderId']));
($a) ? die('OK') : die('NOTOK');
}
Буду признателен за помощь!