Pregunta sobre WooCommerce de Wordpress:

OBTENER la funci贸n de la API de Woocommerce – SetOrder con URL variable

Un usuario pregunt贸 馃憞

En primer lugar, me gustar铆a decir que soy nuevo en el mundo de la programaci贸n y agradecer茅 su ayuda con la siguiente pregunta. B谩sicamente, quiero agregar una llamada a la API tan pronto como se complete y se pague un pedido. Entonces encontr茅 esta funci贸n en l铆nea.

add_action( 'woocommerce_payment_complete', 'my_api_call');
function my_api_call( $order_id ){

	// Order Setup Via WooCommerce

	$order = new WC_Order( $order_id );

	// Iterate Through Items

	$items = $order->get_items(); 
	foreach ( $items as $item ) {	

		// Store Product ID

	$product_id = $item['product_id'];
        $product = new WC_Product($item['product_id']);

        // Check for "API" Category and Run

        if ( has_term( 'api', 'product_cat', $product_id ) ) {

	       	$name		= $order->billing_first_name;
        	$surname	= $order->billing_last_name;
        	$email		= $order->billing_email;
	        $projectsku     = $product->get_sku(); 
        	$apikey 	= "KEY_GOES_HERE";

        	// API Callout to URL

        	$url = '##API URL##';

			$body = array(
				"Project"	=> $projectsku,
				"Name" 		=> $name,
				"Surname"  	=> $surname,
				"Email"		=> $email,
				"KEY"		=> $apikey
			);

			$response = wp_remote_post( $url, 
				array(
					'headers'   => array('Content-Type' => 'application/json; charset=utf-8'),
					'method'    => 'POST',
					'timeout' => 75,				    
					'body'		=> json_encode($body),
				)
			);

			$vars = json_decode($response['body'],true);
        	        
                        // API Response Stored as Post Meta

  			update_post_meta( $order_id, 'meta_message_'.$projectsku, $vars['message'] );
  			update_post_meta( $order_id, 'meta_link_'.$projectsku, $vars['link']);
  			update_post_meta( $order_id, 'did-this-run','yes'); // just there as a checker variable for me
        }

    }
}

En esta funci贸n, me gustar铆a tener una URL variable como el siguiente ejemplo:

http: // nombre_servidor / nombre_aplicaci贸n / Myapi / Productslist / setOrder? DBContext = Predeterminado & purchase_no = 2 & order_no = 2 & barcode = 5009736400011 & ordQty = 1 & sellPrice = 300.22 & key = contrase帽a

Es una funci贸n GET que contiene las variables: purchase_no order_no barcode ordCty sellPrice

Y una 芦llave禄 debe ser un cable fijo.

Entonces, 驴necesito editar todas las variables?

$url = '##API URL##';

			$body = array(
				"Project"	=> $projectsku,
				"Name" 		=> $name,
				"Surname"  	=> $surname,
				"Email"		=> $email,
				"KEY"		=> $apikey
			);

Adem谩s, 驴necesito cambiar el m茅todo a GET para que funcione?

$response = wp_remote_post( $url, 
				array(
					'headers'   => array('Content-Type' => 'application/json; charset=utf-8'),
					'method'    => 'POST',
					'timeout' => 75,				    
					'body'		=> json_encode($body),
				)
			);

隆Gracias de antemano!

(@madeincosmos)

Ingeniero Autom谩tico de Felicidad

Hace 1 a帽o, 9 meses

Hola @ asso99,

Si desea que WooCommerce env铆e una llamada a la API a un servidor en una direcci贸n diferente cada vez que alguien paga un pedido, esto se puede lograr sin codificaci贸n personalizada utilizando WooCommerce Webhooks. Si configura una red, enviar谩 autom谩ticamente una notificaci贸n a la direcci贸n indicada. Tambi茅n hay una opci贸n para Secret en sitios web que act煤an como clave de autenticaci贸n:

https://docs.woocommerce.com/document/webhooks/

Si tambi茅n necesita modificar la respuesta del mensaje API enviado por la web (es decir, cambiar el nombre de ciertas columnas), puede usar el filtro woocommerce_api_order_response cambie la respuesta antes de enviarla. A continuaci贸n, se muestra un ejemplo de c贸mo se puede hacer esto:

http://dominykasgel.com/modify-woocommerce-api-orders-response/

隆Salud!

(@madeincosmos)

Ingeniero Autom谩tico de Felicidad

Hace 1 a帽o, 9 meses

No hemos tenido noticias tuyas en un tiempo, as铆 que marcar茅 este hilo como resuelto ahora. Si tiene m谩s preguntas, no dude en comenzar una nueva.

隆Salud!

驴Solucion贸 tu problema??

0 / 0

Deja una respuesta 0

Tu direcci贸n de correo electr贸nico no ser谩 publicada.