Navigation

    ask avan logo
    • Register
    • Login
    • Search
    • Categories
    • Unsolved
    • Solved

    Please I'm trying to spend woocommerce order to another website using api, this the code I'm using but it doesn't work pls help me

    PHP
    2
    2
    55
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Miracle Seriki
      Miracle Seriki last edited by

      This is the website I’m sending the order to API
      How to Purchase Data via VTU.ng HTTP API
      Data Endpoint URL: https://vtu.ng/wp-json/api/v1/data
      Request Method: GET
      Parameters
      Field Name Example Value Description
      username Frank The login username/email for your VTU.ng account
      password 123456 The login password for your VTU.ng account
      phone 07045461790 The phone number that will receive the data
      network_id mtn The network_id is used to make each network unique. They include mtn, glo, airtel and etisalat. Notice that they are all in small letters.
      variation_id M1024 The variation ID of the data plan you want to purchase. They are as follows:
      M1024 = MTN Data 1GB (SME) – 30 Days
      M2024 = MTN Data 2GB (SME) – 30 Days
      GIFT500 = MTN Data 2.5GB (Direct) – 30 Days
      5000 = MTN Data 5GB (SME) – 30 Days
      GIFT8000 = MTN Data 8GB (Direct) – 30 Days
      GIFT5000 = MTN Data 15GB (Direct) – 30 Days
      G500 = Glo Data 1GB – 14 Days
      G2000 = Glo Data 5.8GB – 30 Days
      G1000 = Glo Data 2GB/2.5GB – 30 Days
      G2500 = Glo Data 7.7GB – 30 Days
      G3000 = Glo Data 10GB – 30 Days
      G4000 = Glo Data 13.25GB – 30 Days
      G5000 = Glo Data 18.25GB – 30 Days
      G8000 = Glo Data 20GB/25GB – 30 Days
      AIR1000 = Airtel Data 1.5GB – 30 Days
      Air1200 = Airtel Data 2GB – 30 Days
      Air1500 = Airtel Data 3GB – 30 Days
      AIR2000 = Airtel Data 4.5GB – 30 Days
      AIR2500 = Airtel Data 6GB – 30 Days
      Air3000 = Airtel Data 8GB – 30 Days
      Air5000 = Airtel Data 15GB – 30 Days
      Air100000 = Airtel Data 40GB – 30 Days
      9MOB1000 = 9mobile Data 1.5GB – 30 Days
      9MOB2000 = 9mobile Data 2GB – 30 Days
      9MOB3000 = 9mobile Data 3GB – 30 Days
      9MOB34500 = 9mobile Data 4.5GB – 30 Days
      9MOB4000 = 9mobile Data 11GB – 30 Days
      9MOB5000 = 9mobile Data 15GB – 30 Days
      9MOB40000 = 9mobile Data 40GB – 30 Days
      Example [Purchasing Data]
      https://vtu.ng/wp-json/api/v1/data?username=Frank&password=123456&phone=07045461790&network_id=mtn&variation_id=M1024
      Sample Response on Success
      {"code":"success","message":"Data successfully delivered","data":{"network":"MTN","data_plan":"MTN Data 1GB (SME) – 30 Days","phone":"07045461790","amount":"NGN319","request_id":"fb69ed8a39ac5684"}}
      Sample Response on Failure
      {"code":"failure","message":"Invalid data variation_id. Please, crosscheck and enter the correct variation_id."}

      This is the name of the products on my website
      MTN 1GB
      MTN 2GB
      MTN 5GB

      GLO 2GB
      GLO 5.8GB
      GLO 7.7GB

      AIRTEL 1.5GB
      AIRTEL 3GB
      AIRTEL 6GB

      9MOBILE 1.5GB
      9MOBILE 3GB
      9MOBILE 4.5GB

      Below is the code I’m trying to use..

      (  // Call API to deliver 
        data Add_action(‘woocommerce_order_status_changed’, ‘sme_data_hub_call_data_api’, 10, 3 );Function sme_data_hub_call_data_api( $order_id, $old_status, $new_status ){
      If( $new_status == “processing”){//Set Your VTU.ng Login Details $vtu_ng_username=’Your_VTU_NG_Username’; //Change this to your VTU.ng Username $vtu_ng_password=’Your_VTU_NG_Password’; //Change this to your VTU.ng Password
      // Get an instance of the WC_Order object
      $order = wc_get_order( $order_id );
      $phone = trim($order->get_billing_phone());
      $items = $order->get_items();
      Foreach ( $items as $item ) {
      $product_id = $item->get_product_id();
      $product_name = strtolower($item->get_name()); } 
      
       //Assign Network IDs
       If (strpos($product_name, “mtn”) !== false){$network_id=”mtn”;}    
       If (strpos($product_name, “glo”) !== false){$network_id=”glo”;} 
       If (strpos($product_name, “airtel”) !== false){$network_id=”airtel”;} 
       If (strpos($product_name, “9mobile”) !== false){$network_id=”etisalat”;} 
       
       //Assign variation_ids
       If (strpos($product_name, “mtn 1gb”) !== false){$variation_id=”M1024”;}
       If (strpos($product_name, “mtn 2gb”) !== false){$variation_id=”M2024”;}
       If (strpos($product_name, “mtn 5gb”) !== false){$variation_id=”5000”;}
      
       If (strpos($product_name, “glo 2gb”) !== false){$variation_id=”G1000”;}
       If (strpos($product_name, “glo 5.8gb”) !== false){$variation_id=”G2000”;}
       If (strpos($product_name, “glo 7.7gb”) !== false){$variation_id=”G2500”;}
      
       If (strpos($product_name, “airtel 1.5gb”) !== false){$variation_id=”AIR1000”;}
       If (strpos($product_name, “airtel 1.5gb”) !== false){$variation_id=”Air1500”;}    
       If (strpos($product_name, “airtel 1.5gb”) !== false){$variation_id=”AIR2500”;}
      
       If (strpos($product_name, “9mobile 1.5gb”) !== false){$variation_id=”9MOB1000”;}    
       If (strpos($product_name, “9mobile 3gb”) !== false){$variation_id=”9MOB3000”;}
       If (strpos($product_name, “9mobile 4.5gb”) !== false){$variation_id=”9MOB34500”;}
       
       
       //Check to confirm the product is for Data Purchase
       If(strpos($product_name, “gb”) !== false){
       $url = https://vtu.ng/wp-json/api/v1/data?username=$vtu_ng_username&password=$vtu_ng_password&phone=$phone&network_id=$network_id&variation_id=$variation_id;
       $response = file_get_contents( $url ); 
       $resp_object = json_decode($response);
       $code=$resp_object->code;
       $reference=$resp_object->data->request_id;
       $message=$resp_object->message;
       If($code==”success”){
       $order = new WC_Order($order_id);
       $order->update_status(‘completed’,$product_name. ‘ Data Successfully Delivered to ‘.$phone.’. Reference: ‘.$reference); 
       $order->add_order_note( $product_name. ‘ Data Successfully Delivered to ‘.$phone, true );
       
       }else{
          $order = new WC_Order($order_id);
          $order->add_order_note( “Error Processing Order! Error Message: “.$message,true );
       }
       
       }
      }
      

      }

      Please the code doesn’t work please help, check what I’m doing wrong..

      I use terrawallet, checkout field options, to edit my woocommerce to my suit..

      Reply Quote 0
        1 Reply Last reply

      • avan
        avan last edited by

        Hey @Miracle-Seriki

        I tried to look into your problem but it's hard to figure out what exactly is wrong unless I can re-create the problem or at least see what error message you are receiving.

        Reply Quote 0
          1 Reply Last reply

        • First post
          Last post