Cómo interconectar tus sistemas con WooCommerce: https://www.acceseo.com/como-interconectar-tus-sistemas-con-woocommerce.html
DECODECMS YOUTUBE:
https://www.youtube.com/playlist?list=PLdrC-D_EHDhTZbJkksVn-rZi1XEQKeOv3
Actualizar el stock de productos usando la API de WooCommerce:
https://www.youtube.com/watch?v=KfUL7SJ8RJM – https://decodecms.com/actualizar-el-stock-de-productos-usando-la-api-de-woocommerce/
Agregar datos a los Endpoints de la API de WooCommerce:
https://www.youtube.com/watch?v=6QxlwbeCMHE – https://decodecms.com/agregar-datos-a-los-endpoints-de-la-api-de-woocommerce/
La API de WooCommerce: https://woocommerce.github.io/woocommerce-rest-api-docs/#introduction
La API REST de WooCommerce en una Tienda Online WordPress – https://www.vitalinnova.com/la-api-woocommerce-tienda-online-wordpress/
Enviar información de pedido en Woocommerce a través de la API – https://foro.wpargentina.org/t/enviar-informacion-de-pedido-en-woocommerce-a-traves-de-la-api/3690
wordpress “file_get_contents(‘php://input’)”
https://www.codegrepper.com/code-examples/php/frameworks/wordpress/file_get_contents%28+%27php%3A%2F%2Finput%27+%29+wordpress
https://www.php.net/manual/es/wrappers.php
https://www.codegrepper.com/code-examples/php/file_get_contents%28%27php+%2F%2Finput%27%29
https://stackoverflow.com/questions/19146984/file-get-contentsphp-input-always-returns-an-empty-string
otra forma de leer el input: https://stackoverflow.com/questions/33044189/parse-woocommerce-webhook-json
function doPost(request) {
var json = request.postData.getDataAsString();
var obj = JSON.parse(json);
// getting some of the Woocommerce data just as an example // Hook was fired after order.created var id = obj.order.id; var orderNumber = obj.order.order_number; var payMethod = obj.order.payment_details.method_title;
?php
// Original Answer
header('Content-Type: application/json');
$request = file_get_contents('php://input');
$req_dump = print_r( $request, true );
$fp = file_put_contents( 'request.log', $req_dump );
// Updated Answer
if($json = json_decode(file_get_contents("php://input"), true)){
$data = $json;
}
print_r($data);
?>
CON LO QUE EMPECE A CREAR EL PHP
https://www.acceseo.com/como-interconectar-tus-sistemas-con-woocommerce.html
WoocommerceStockUpdater
https://gitlab.com/-/snippets/2037867
Product webhook
https://gitlab.com/-/snippets/2037900
HOOK.IO
woocommerce_webhook_topic_hooks
http://hookr.io/filters/woocommerce_webhook_topic_hooks/
$payload = file_get_contents('php://input');
$receivedHeaders = apache_request_headers();
$receivedHash = $receivedHeaders['X-WC-Webhook-Signature'];
$generatedHash = base64_encode(hash_hmac('sha256', $payload, $secret, true));
if($receivedHash === $generatedHash):
//Verified, continue your code
else:
//exit
endif;
EL CÓDIGO QUE HE USADO EN EL WEBHOOK DE TIENDAAPI
$payload = file_get_contents('php://input');
$product = json_decode($payload);
$secret = 'ffsdafdsafasffasfdk'; //'your-secret-here';
$receivedHash = $_SERVER['HTTP_X_WC_WEBHOOK_SIGNATURE'] ?? 'false';
$generatedHash = base64_encode(hash_hmac('sha256', $payload, $secret, true));
if($receivedHash !== $generatedHash) {
echo 'frase secret no coindice ';
die();
}
https://solve360.com/help/integration-walkthroughs/solve-webhooks-examples/
Fetching headers via apache_request_headers() http://php.net/manual/en/function.apache-request-headers.php
donde en webhook aparece si no funciona el, se pone disabled
explicacion:
https://robotninja.com/blog/test-woocommerce-webhooks/
https://woocommerce.github.io/code-reference/files/woocommerce-includes-class-wc-webhook.html#source-view.695
woocommerce_webhook_status
https://docs.wpdebuglog.com/plugin/woocommerce/5.3.0/filter/woocommerce_webhook_status/#
https://www.wp-plugin-api.com/hook/woocommerce_webhook_status/
hacer debug de esa parte del webhook, test
https://robotninja.com/blog/test-woocommerce-webhooks/
https://learnwoo.com/webhooks-in-woocommerce/
https://growdevelopment.com/woocommerce-webhooks/ +++++++++++++++++++++++
desahabilitar o poner actvio o disabed un webhook por codigo php
woocommerce webhook code for disabled
la clase:
https://woocommerce.github.io/code-reference/classes/WC-Webhook.html
https://woocommerce.github.io/code-reference/classes/WC-Legacy-Webhook.html
https://woocommerce.github.io/code-reference/classes/WC-Webhook.html#method_set_status ++++no se usar esto
WooCommerce Code Reference
https://woocommerce.github.io/code-reference/index.html
actualizar webhook
https://github.com/woocommerce/woocommerce/blob/75fce4a5fa620bc9fa810a079b25cb79de0edef8/includes/wc-update-functions.php#L1504
function wc_update_330_webhooks()
function wc_update_330_webhooks() {
register_post_type( ‘shop_webhook’ );
// Map statuses from post_type to Webhooks CRUD.
$statuses = array(
'publish' => 'active',
'draft' => 'paused',
'pending' => 'disabled',
);
$posts = get_posts( array(
'posts_per_page' => -1,
'post_type' => 'shop_webhook',
'post_status' => 'any',
) );
foreach ( $posts as $post ) {
$webhook = new WC_Webhook();
$webhook->set_name( $post->post_title );
$webhook->set_status( isset( $statuses[ $post->post_status ] ) ? $statuses[ $post->post_status ] : 'disabled' );
$webhook->set_delivery_url( get_post_meta( $post->ID, '_delivery_url', true ) );
$webhook->set_secret( get_post_meta( $post->ID, '_secret', true ) );
$webhook->set_topic( get_post_meta( $post->ID, '_topic', true ) );
$webhook->set_api_version( get_post_meta( $post->ID, '_api_version', true ) );
$webhook->set_user_id( $post->post_author );
$webhook->set_pending_delivery( false );
$webhook->save();
wp_delete_post( $post->ID, true );
}
unregister_post_type( 'shop_webhook' );
}
actualizar , crear por API:
https://woocommerce.github.io/woocommerce-rest-api-docs/#webhooks
function createWebhook($userID,$topic,$secret,$deliveryURL,$status)
{
$webhook = new WC_Webhook();
$webhook->set_user_id($userID); // User ID used while generating the webhook payload.
$webhook->set_topic( $topic ); // Event used to trigger a webhook.
$webhook->set_secret( $secret ); // Secret to validate webhook when received.
$webhook->set_delivery_url( $deliveryURL ); // URL where webhook should be sent.
$webhook->set_status( $status ); // Webhook status.
$save = $webhook->save();
return $save;
}
global $wpdb;
$results = $wpdb->get_results( "SELECT webhook_id, delivery_url FROM {$wpdb->prefix}wc_webhooks" );
foreach($results as $result)
{
if(strpos($result->delivery_url, 'domain.com') !== false)
{
$wh = new WC_Webhook();
$wh->set_id($result->webhook_id);
$wh->delete();
}
}
otra forma:
$data_store = WC_Data_Store::load( 'webhook' ); $webhooks = $data_store->search_webhooks();
wordpress “webhook” error 404
https://wordpress.org/search/webhook+404
WooCommerce Webhooks Custom / Action no se guarda // WooCommerce Webhooks Custom/Action not saving
https://stackoverflow.com/questions/32313279/woocommerce-webhooks-custom-action-not-saving
function custom_woocommerce_webhook_topics( $topic ) {
$topic['order.refunded'] = array(
'woocommerce_process_shop_order_meta',
'woocommerce_api_edit_order',
'woocommerce_order_edit_status',
'woocommerce_order_status_changed'
);
return $topic;
}
add_filter( 'woocommerce_webhook_topic_hooks', 'custom_woocommerce_webhook_topics', 10, 1 );
https://stackoverflow.com/search?q=woocommerce+webhook+
Stock
How To Use The WooCommerce API
https://sgwebpartners.com/how-to-use-woocommerce-api/ ++++++++++++en ingles, merece la pena verlo traducido
Cómo interconectar tus sistemas con WooCommerce – Actualiza stock
https://www.acceseo.com/como-interconectar-tus-sistemas-con-woocommerce.html
Creación de productos woocommerce utilizando la API REST de WordPress
http://es.wordpressask.com/creacion-de-productos-woocommerce-utilizando-la-api-rest-de-wordpress.html
Actualizar el stock de productos usando la API de WooCommerce DECODE en bloque ejecutando un fichero de php en servidor con cron
https://www.youtube.com/watch?v=KfUL7SJ8RJM
https://decodecms.com/actualizar-el-stock-de-productos-usando-la-api-de-woocommerce/
