yith update_status payment_complete custom color change php wordpress order woocommerce

php - update_status - woocommerce order payment_complete



Cómo crear un pedido en WordPress Woocommerce API 4.3 (1)

¿Cómo crear una función para crear orden basada en datos pasados ​​desde la aplicación móvil? Sé que woocommerce tiene su api de pedido, pero su create_order solo se llama después de pagar pago?

Quiero crear una función create_order para pasar datos exactos como la API de woocommerce, pero no después del éxito del pago. Estoy asumiendo que el pago ya es exitoso.

y la extensión de puntos y recompensas woocommerce se usa para agregar descuentos

¿Alguna idea? ayuda por favor gracias


Con la ayuda de alguien problema resuelto

public function create_order() { if ($_REQUEST[''dev'']) { $address = array( ''first_name'' => ''Zayle'', ''last_name'' => ''Ong'', ''company'' => ''Timios'', ''email'' => ''[email protected]'', ''phone'' => ''777-777-777-777'', ''address_1'' => ''31 Main Street'', ''address_2'' => '''', ''city'' => ''Simei'', ''state'' => ''SG'', ''postcode'' => ''520151'', ''country'' => ''Singapore'' ); $userid = 1; $productid = 196; // put here an id of a product that is available on Woocommerce->Products $pointstouse = 100; } else { $address = array( ''first_name'' => $_POST[''first_name''], ''last_name'' => $_POST[''last_name''], ''company'' => $_POST[''company''], ''email'' => $_POST[''email''], ''phone'' => $_POST[''phone''], ''address_1'' => $_POST[''adddress1''], ''address_2'' => $_POST[''adddress2''], ''city'' => $_POST[''city''], ''state'' => $_POST[''state''], ''postcode'' => $_POST[''postcode''], ''country'' => $_POST[''country''] ); $userid = $_POST[''userid'']; $productid = $_POST[''productidid'']; $pointstouse = $_POST[''pointstouse'']; if (! $_POST[''first_name''] && ! $_POST[''last_name''] && ! $_POST[''email''] && ! $_POST[''adddress1''] & ! $_POST[''city'']) { return array( "error" => "Please fill First name, Last Name, Address and City", "orderstatus" => "error" ); } if (!$userid) { return array( "error" => "Need to specify a userid", "orderstatus" => "error" ); } if (!$productid) { return array( "error" => "Need to specify a product id", "orderstatus" => "error" ); } if (!$pointstouse) { return array( "error" => "Need to specify points to use", "orderstatus" => "error" ); } } $pointsuser = WC_Points_Rewards_Manager::get_users_points($userid); if ($pointsuser >= $pointstouse) { $order = wc_create_order(); $product = new WC_Product($productid); if (!$product->is_type(''variable'')) { update_post_meta($productid, "_stock", (get_post_meta($productid, "_stock", true) - 1)); }else{ } $order->add_product($product, 1); $order->set_address($address, ''billing''); $order->set_address($address, ''shipping''); $discount_code = str_replace("--userid--", $userid, "wc_points_redemption_--userid--_" . date("d-m-Y") . "_" . rand(0, 99999)); /* * Create coupon */ $coupon_code = $discount_code; // Code $amount = WC_Points_Rewards_Manager::calculate_points_value($pointstouse); // Amount $discount_type = ''fixed_cart''; // Type: fixed_cart, percent, fixed_product, percent_product $coupon = array( ''post_title'' => $coupon_code, ''post_content'' => '''', ''post_status'' => ''publish'', ''post_author'' => 1, ''post_type'' => ''shop_coupon'' ); $new_coupon_id = wp_insert_post($coupon); // Add meta update_post_meta($new_coupon_id, ''discount_type'', $discount_type); update_post_meta($new_coupon_id, ''coupon_amount'', $amount); update_post_meta($new_coupon_id, ''individual_use'', ''no''); update_post_meta($new_coupon_id, ''product_ids'', ''''); update_post_meta($new_coupon_id, ''exclude_product_ids'', ''''); update_post_meta($new_coupon_id, ''usage_limit'', ''1''); update_post_meta($new_coupon_id, ''expiry_date'', ''''); update_post_meta($new_coupon_id, ''apply_before_tax'', ''yes''); update_post_meta($new_coupon_id, ''free_shipping'', ''no''); $order->add_coupon($discount_code, $amount); $order->calculate_totals(); $order->set_total($order->calculate_totals() - $amount); $order->set_total($amount, ''cart_discount''); $orderid = new WC_Order($order->ID); $order_id = trim(str_replace(''#'', '''', $order->get_order_number())); add_post_meta($order_id, ''_payment_method'', ''cheque''); update_post_meta($order_id, ''_created_via'', ''checkout''); update_post_meta($order_id, ''_customer_user'', $userid); add_post_meta($order_id, ''_payment_method_title'', ''Cheque Payment''); update_post_meta($order->id, ''_wc_points_redeemed'', $pointstouse); WC_Points_Rewards_Manager::decrease_points($userid, $pointstouse, ''order'', "coupon " . $coupon_code . " used for order " . $order_id, $order_id); return array( "orderid" => $order_id, "orderstatus" => "ok" ); } else { return array( "error" => "You do not have enought points", "orderstatus" => "error" ); } }