Создавали отдельное подключение к платёжной платформе под названием "paykeeper", проработали с ними не один год, пару дней назад, дополнительно подключили облачную кассу и столкнулись с тем что после оплаты заказа, перестал меняться сам статус заказа на оплаченный и так как заказ не оплачен, он через определённое время удаляется.
Тех поддержка платформы говорит что при подключении облачной кассы, ничего в самом подключении не меняется, всё должно работать как раньше. Но у нас не работает.
Сам код подключения к paykeeper:
register_payment('paykeeper'); } class EVPL_paykeeper extends EVPL_Payment{ public $form_pay_id; function register_payment($form_pay_id){ $this->form_pay_id = $form_pay_id; parent::add_payment($this->form_pay_id, array( 'class' => get_class($this), 'request' => 'clientid', 'name' => 'paykeeper', )); if(is_admin()) $this->add_options(); } function add_options(){ add_filter('evpl_pay_option',(array($this,'options'))); add_filter('evpl_pay_child_option',(array($this,'child_options'))); } function options($options){ $options[$this->form_pay_id] = 'Paykeeper'; return $options; } function child_options($child){ $opt = new EVPL_Options(); $child .= $opt->child( array( 'name' => 'connect_sale', 'value' => $this->form_pay_id ), array( $opt->title(__('Настройка подключения')), ) ); return $child; } function pay_form($data){ global $evpl_options; $fields = array( 'sum' => $data->payment_amount, 'orderid' => $data->order_id, 'clientid' => $data->payment_id, 'phone' => '+7(999)-999-99-99', 'client_email' => $data->user_data ); $form = parent::form($fields,$data,'https://show-kassa2.server.paykeeper.ru/create/'); return $form; } function result($data){ global $evpl_options; $data->payment_amount = $_REQUEST["sum"]; $data->payment_id = $_REQUEST["clientid"]; $data->user_data = $_REQUEST['client_email']; $data->order_id = $_REQUEST["orderid"]; $secret_seed = ""; //Секретное слово $id = $_POST['id']; $sum = $_POST['sum']; $clientid = $_POST['clientid']; $orderid = $_POST['orderid']; $key = $_POST['key']; $order = evpl_get_order($data->order_id); if(!$order||$order->order_status!=1){ //заказа не существует или уже оплачен echo "bad signn"; exit(); } if ($key != md5 ($id . sprintf ("%.2lf", $sum). $clientid.$orderid.$secret_seed)) { echo "Error! Hash mismatch"; exit; } echo "OK ".md5($id.''); //Секретное слово if(!parent::get_pay($data)) parent::insert_pay($data); exit; } function success(){ global $evpl_options; $data = array( 'payment_id' => $_REQUEST["clientid"] ); if(parent::get_pay((object)$data)){ wp_redirect(get_permalink($evpl_options['page_successfully_pay'])); exit; } else { wp_die(__('Запись о платеже не найдена в базе данных')); } } } } ?>
Если код ранее отрабатывал верно, а теперь перестал, значит дело не в коде, а в изменившемся внешнем окружении. Я никогда не использовал облачные кассы, не знаю их нюансов, предпочитаю иметь собственную, но как мне кажется смотреть надо в первую очередь на взаимодействие вашего сервера со сторонним платежки или сервиса, который вы подключили. Надо убедиться, что запросы от вашего сервера принимаются на стороне этой облачной кассы, а ответы от нее принимаются вашим сервером, начните с этого.
Проблема решилась и может кому то пригодится.
Как написала сама тех поддержка paykeeper, что всё дело в нашей ssl сертификате, что на днях вместе с подключением облачной кассы, мы продлили сертификат, и как как он бесплатный (хотя у нас он платный), запросы криво принимались, но для нас они сделали исключение и переделали свою систему под наш сертификат и теперь всё ОК.