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ář?由...所提交() ?