Как показать рассчитанную стоимость в бэкэнд на странице заказа WooCommercePhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как показать рассчитанную стоимость в бэкэнд на странице заказа WooCommerce

Сообщение Anonymous »

Я создаю интернет -магазин для моей компании, которая является дочерней компанией банка. С помощью банковского кредита мы хотим построить инфраструктуру продажи товаров посредством рассрочки. Используя этот плагин, мне удалось добавить поле выбора, которое позволило покупателю выбрать свой план кредита. Есть и другие поля, но здесь не важны . Я также добавил Update_totals_on_change класс в это поле, поэтому, когда он изменяет обновления страницы. Мне удалось рассчитать количество рассрочки в woocommerce_cart_calculate_fees Каждый раз, когда план кредита меняется таким образом:

Код: Выделить всё

add_action( 'woocommerce_cart_calculate_fees', 'manipulate_order', 99 );

function manipulate_order( $cart ) {

if ( ! $_POST || ( is_admin() && ! is_ajax() ) ) {
return;
}
$post_data=null;
if ( isset( $_POST['post_data'] ) ) {
parse_str( $_POST['post_data'], $post_data );
} else {
$post_data = $_POST;
}

session_start();
$_SESSION['payment'] = $post_data['payment'];

if($post_data['payment'] == 'cash')
{
WC()->cart->fees_api()->set_fees(array());
}
else
{
$items = WC()->cart->get_cart_contents();
$cartInfo = array();
foreach ($items as $item => $values) {
$productInfo = array();
array_push($productInfo, $values['data']->get_id());
array_push($productInfo, $values['quantity']);
array_push($productInfo, get_post_meta($values['product_id'], '_price', true));
array_push($productInfo, get_post_meta($values['product_id'], 'interest', true));
array_push($cartInfo, $productInfo);
}
$targetBenefit = 7;
$total_price = 0;
$average_weighted_interest = 0;
for ($i = 0; $i < count($cartInfo); $i++) {
$total_price += ($cartInfo[$i][1] * $cartInfo[$i][2]);
$average_weighted_interest += $cartInfo[$i][1] * $cartInfo[$i][2] * $cartInfo[$i][3] / 100;
}

$average_weighted_interest = round(100 * $average_weighted_interest / $total_price,2);
$prepayment_percent = $post_data['prepayment'];
$bank_wage_percent = explode("_",$post_data['loan'])[0];
$bank_wage_period = explode("_",$post_data['loan'])[1];
$adjusted_bank_wage_percent = round($bank_wage_percent*(1-$prepayment_percent/100),2);
$increase_percent = round($targetBenefit + $adjusted_bank_wage_percent - $average_weighted_interest,2);
$added_expense = round($total_price * $increase_percent/100,2);
$loan_amount = round((($total_price + $added_expense)-$total_price*$prepayment_percent/100),2);
$_SESSION['loan_amount'] = $loan_amount;
$installment =  calPMT(18, $bank_wage_period, $loan_amount);
$_SESSION['installment'] = $installment;

WC()->cart->add_fee('Added Expense: ', $added_expense);
WC()->cart->add_fee('Loan Amount: ', 0-$loan_amount);
if($loan_amount > 150000){
wc_add_notice( __( 'Your Loan amount is bigger than maximum, delete some product or increase prepayment' ), 'error' );
}
}
}

function calPMT($apr, $term, $loan)
{
$term = $term;
$apr = $apr / 1200;
$amount = $apr * -$loan * pow((1 + $apr), $term) / (1 - pow((1 + $apr), $term));
return round($amount);
}
Я также добавил еще два поля только для чтения текста в оформлении, один для Lider_amount с тем же идентификатором, а другой для рассрочки также с тем же идентификатор. Я хочу вернуть эти два вычисленных значения из менеджированного действия на переднюю часть, и там, чтобы показать их в качестве значения двух полей только для чтения каждый раз, когда обновляется вся страница оформления. Здесь есть куча полезных событий. Вероятно, что событие Update_checkout лучше всего подходит для моей проблемы, но я понятия не имею, как вернуть эти два значения из Manipulate_order обратный вызов на фронт и там, чтобы показать в полях только для чтения.

Подробнее здесь: https://stackoverflow.com/questions/670 ... ckout-page
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»