Создавали отдельное подключение к платёжной платформе под названием "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 сертификате, что на днях вместе с подключением облачной кассы, мы продлили сертификат, и как как он бесплатный (хотя у нас он платный), запросы криво принимались, но для нас они сделали исключение и переделали свою систему под наш сертификат и теперь всё ОК.