damiano fontana
¿Es posible obtener la identificación de suscripción de la identificación de pedido de Woocommerce con la API de WooCommerce? Estoy usando PHP y con esto puedo obtener todos los datos del pedido, pero no la identificación de la suscripción:
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => "https://www.example.com/wp-json/wc/v3/orders/".$orderId,
CURLOPT_USERPWD => 'code:code',
CURLOPT_HTTPHEADER => array(
"accept: application/json"
)
]);
$woocommerceOrder = curl_exec($curl);
add_filter( 'woocommerce_api_order_response', 'add_woo_field_order_api_response', 20, 4 );
function add_woo_field_order_api_response( $order_data, $order, $fields, $server ) {
// Get the subscription id
$subscriptions_ids = wcs_get_subscriptions_for_order( $order->get_id(), array( 'order_type' => 'any' ) );
// We get all related subscriptions for this order
foreach ( $subscriptions_ids as $subscription_id => $subscription_obj )
if ( $subscription_obj->order->id == $order_id )
break; // Stop the loop
$order_data[ 'subscription_id' ] = $subscription_id;
return $order_data;
}
Agregue este fragmento de código en el tema activo de su servidor function.php. Luego, la respuesta de la API del pedido contendrá el id_suscripción
-
He probado este código, pero en ejemplo.com/wp-json/wc/v3/orders/”.$orderId endopoint no veo ningún elemento subscribe_id
– Damián Fontana
28 de abril de 2021 a las 14:24
-
@DamianoFontana Verifique si el código se ejecuta cuando se activa la solicitud.
– muy solo
28 de abril de 2021 a las 14:47
-
Intenté agregar un parámetro de prueba, pero no puedo verlo en la respuesta del punto final… function add_woo_field_order_api_response ($order_data, $order, $fields, $server) { $order_data[‘test-parameter’] = “Prueba prueba prueba”;
– Damián Fontana
28 de abril de 2021 a las 14:54
-
-
¿Debo usar prefix_wc_rest_prepare_order_object en lugar de add_woo_field_order_api_response?
– Damián Fontana
28 de abril de 2021 a las 16:43
Lo he resuelto con este código en mi archivo functions.php en WordPress:
function prefix_wc_rest_prepare_order_object($response, $object, $request){
// Get the subscription id
$subscriptions_ids = wcs_get_subscriptions_for_order($object->get_id(), array('order_type' => 'any'));
// We get all related subscriptions for this order
foreach($subscriptions_ids as $subscription_id => $subscription_obj){
if($subscription_obj->order->id == $object->get_id()){
break; // Stop the loop
}
}
$response->data['subscription_id'] = $subscription_id;
return $response;
}
add_filter('woocommerce_rest_prepare_shop_order_object', 'prefix_wc_rest_prepare_order_object', 10, 3);
Gracias a mujuonly por la referencia y por el fragmento inicial.
¿Ha probado un punto final de API similar? www.example.com/wp-json/wc/v3/subscriptions
– muy solo
25 abr 2021 a las 23:34
Sí, pero necesito la identificación de suscripción para ese punto final… pero primero necesito obtener la identificación de suscripción de la identificación de pedido de woocommerce que tengo
– Damián Fontana
26 de abril de 2021 a las 12:24