Добрый день.
Где лучше в плагине сделать/добавить наценку стоимости заказа. Пробовал добавить в интеграции к платёжной системе, но стоит также проверка платежа и на этом этапе выдаёт ошибку (якобы заказа не был оплачен, хотя все в норме, платеж прошёл, клиент получил билеты), скорее всего из за того что суммы разные получаются по итогам.
Интересует более правильный подход к данной проблеме. Думаю данный вопрос заинтересует многих пользователей данного плагина.
Заранее большое спасибо.
если вы уже внесли изменения в порядок формирования корзины и выводите эту информацию, то также сможете пересчитать общую стоимость прибавляя размер сбора и в момент сохранения данных заказа в БД соответственно потребуется увеличить стоимость заказа на эту сумму, тогда при проведении оплаты стоимость заказа будет биться с размером оплаты и проблем возникать не должно
Сделал вот так:
$percent = get_post_meta( $post_id, 'collection', true );
$args = apply_filters('evpl_pre_insert_order', array(
'user_data' => $this->user_data,
'order_price' => $this->cart->price*$percent,
'place_amount' => $this->cart->amount,
'order_details' => serialize($this->details),
'order_date' => current_time('mysql'),
'order_status' => $order_status,
'order_hash' => md5(current_time('mysql'))
));На странице мероприятия, показывается значение из таблицы, но в сам фильтр не добавляется...
add_filter('evpl_pre_insert_order', 'my_evpl_pre_insert_order');
function my_evpl_pre_insert_order($data){
$post = get_post();
$percent = get_post_meta( $post_id, 'collection', true );
$data['order_price'] = $data['order_price'] *$percent;
return $data;
}При оформлении заказа, получается сумма 0 рублей.
Заказ еще не создан, не понятно к какому именно мероприятию данные отнести, поэтому придется работать с данными корзины пользователей:
add_filter('evpl_pre_insert_order', 'my_evpl_pre_insert_order');
function my_evpl_pre_insert_order($data){
$cartData = evpl_get_cart_data();
if(!$cartData) return $data;
foreach($this->cart->places as $event_id => $date_places){
if(!$date_places) continue;
$percent = get_post_meta( $event_id, 'collection', 1 );
if(!$percent) continue;
$data['order_price'] *= $percent;
}
return $data;
}
не совсем уверен насчет порядка увеличения стоимости заказа, возможно вместо умножения надо использовать сложение, но это уже вам решать, логику можете изменить и сами
поправил код
add_filter('evpl_pre_insert_order', 'my_evpl_pre_insert_order');
function my_evpl_pre_insert_order($data){
$cartData = evpl_get_cart_data();
if(!$cartData) return $data;
foreach($cartData->places as $event_id => $date_places){
if(!$date_places) continue;
$percent = get_post_meta( $event_id, 'collection', 1 );
if(!$percent) continue;
$data['order_price'] *= $percent;
}
return $data;
}
потому что в каждом последующем мероприятии общая стоимость увеличивается на процент указанный для этого мероприятия, т.е. увеличение неравномерное. Допустим стоимость заказа 100р. первое мероприятие увеличит его на 10 процентов, станет 110, а второе уже 110 будет увеличивать на 10 процентов и станет 121 и так далее. Надо вносить коррективы в логику увеличения, а именно в строку
$data['order_price'] *= $percent;