php CálculodeFrete通过AJAX.php
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php CálculodeFrete通过AJAX.php相关的知识,希望对你有一定的参考价值。
/*
Função de API para calcular via AJAX
*/
add_action( 'wp_ajax_dwp_ajax_simulator', 'dwp_ajax_simulator' );
add_action( 'wp_ajax_nopriv_dwp_ajax_simulator', 'dwp_ajax_simulator' );
function dwp_ajax_simulator() {
$active_methods = array();
// Gera um package
$packages = array();
$packages[0]['destination']['postcode'] = $_POST['zipcode'];
$packages[0]['destination']['country'] = 'BR';
$packages[0]['destination']['state'] = $_POST['uf'];
$packages[0]['contents_cost'] = 0;
$packages[0]['contents'] = array();
// Adiciona os itens do carrinho no package
global $woocommerce;
$items = $woocommerce->cart->get_cart();
foreach($items as $item => $values) {
if ( $values['data']->needs_shipping() ) { // Só adiciona produtos que precisam de envio
array_push(
$packages[0]['contents'],
array(
'data' => wc_get_product( $values['product_id'] ),
'quantity' => $values['quantity'],
'price' => $values['data']->get_price()
)
);
$packages[0]['contents_cost'] = $packages[0]['contents_cost'] + ( $values['data']->get_price() * $values['quantity'] );
}
}
// Adiciona um produto ao carrinho pra forçar o cálculo
// ... não implementado ainda. Taxa fixa e Retirar no local ainda aparecem mesmo sem produto
// Para cada método, retorna seus valores
WC()->shipping->calculate_shipping( $packages );
$shipping_methods2 = WC()->shipping->packages;
foreach ($shipping_methods2[0]['rates'] as $id => $shipping_method) {
$active_methods[] =
array( 'id' => $shipping_method->method_id,
'type' => $shipping_method->method_id,
'provider' => $shipping_method->method_id,
'name' => $shipping_method->label,
'price' => number_format($shipping_method->cost, 2, '.', '')
);
}
// Cria um html de retorno
ob_clean();
foreach ( $active_methods as $method ){
echo "<p><strong>" . $method['name'] . ": </strong> <span class='currency'>R$</span> <span class='amount'>" . $method['price'] . "</span></p>";
}
$html = ob_get_clean();
// Retorno
echo json_encode(
array(
'packages' => $packages,
'shipping_methods' => $active_methods,
'hasShippingMethods' => ( count($active_methods) >= 1 ) ? true: false,
'html' => $html
)
);
die;
}
以上是关于php CálculodeFrete通过AJAX.php的主要内容,如果未能解决你的问题,请参考以下文章
php TấtcảcácthamsốtrongWP_Query
php 修理mộtsốlỗ他cơbảnk息triểnkhaiựánlaravellênhost
php 修理mộtsốlỗ他cơbảnk息triểnkhaiựánlaravellênhost
php ACF:Ukázkapráce的瞬态
php Nette reset hodnotveformulářippodeslání
php Jakýttlačítkembylsdeslánformulář?由...所提交() ?