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:
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