how to apply single page checkout using drupal ubercart
Yo cant make it single page. Mandatory steps are,


Add product to cart
Go to checkout page
Payment 


You can combine the steps 3 by adding Shipping and billing address using Ubercart Checkout Tweaks module, which helps to

Assume billing and delivery addresses will be the same


  In many stores, orders are delivered to the billing address more times
  than not. Enabling this option in the checkout settings will default
  the "same address" checkbox at checkout, making the checkout page seem
  shorter and less intimidating.


For limit the products that added to cart you can use hook_add_to_cart

Parameters:
$nid - the node ID of the product
$qty - the quantity being added
$data - the data array, including attributes and model number adjustments