Оформление заказа в один клик(API)

Этот вариант подойдет для готовой корзины Битрикса - вместо переадресации на оформление заказа мы будем собирать данные и создавать заказ средствами API (а не компонентов).[spoiler]
Дорисуем нужные поля в форму (она уже есть в корзине)
 <form metod="post" action="">  
...
<h2 class="h2">Ваши данные</h2>
               <div class="form_wrapp" style="text-align: center; padding: 0;">
                  <div class="input_wrapp">
                     <div class="input_hold"><label class="label">Имя:</label><input type="text" name="NAME" value="" required=""></div>
                     <div class="input_hold"><label class="label">Телефон:</label><input type="text" name="PHONE" value="" required=""></div>
                     <div class="input_hold"><label class="label">Email:</label><input type="email" name="EMAIL" value="" required=""></div>
                  </div>
               </div> 
<input type="hidden" name="PRICE" id="PRICE_ORDER"  value="<?=$arResult["allSum"]?>" /> 
                     <a href="javascript:void(0)" onclick="$('#oformit').trigger('click');" class="btn"><?=GetMessage("SALE_ORDER")?></a>
               <input type="submit" style="display:none;" name="oformit" id="oformit" value="oformit"  />
...  
</form>


В POSTе будем ловить данные и создавать заказ


if($_POST["oformit"]){
   echo "<pre>", print_r($_POST), "</pre>"; 

   global $USER; 
   if($USER->IsAuthorized()) {
      LocalRedirect("/personal/order/make/"); // если юзер авторизован отправим его на обычное оформление
   }else{
      $arFilter = array('EMAIL' => $_POST["EMAIL"]);
      $rsUsers = CUser::GetList($by = 'ID', $order = 'ASC', $arFilter); // если юзер не авторизован проверим e-mail на существование в базе и предложим авторизоваться, если mail найден
      while ($arUser = $rsUsers->Fetch()) 
         {
            $ID_USER=$arUser["ID"]; 
         }
      if($ID_USER){
         LocalRedirect("/personal/order/make/index.php?USER_ID=".$ID_USER);
      } else {
         $password_chars = array(
            "abcdefghijklnmopqrstuvwxyz",
            "ABCDEFGHIJKLNMOPQRSTUVWXYZ",      // не нашли юзера с указанным  mail, значит создаем его
            "0123456789",
         );
         $newPassword = $newPasswordConfirm = randString(6, $password_chars); 
         $arRegister = $USER->Register($_POST["EMAIL"], $_POST["NAME"], "", $newPassword, $newPassword, $_POST["EMAIL"]);
            // создадим заказ
         
            CModule::IncludeModule("sale");      
            $ORDER_ID = CSaleOrder::Add(array(
                     "LID"              => SITE_ID,  
                     "PERSON_TYPE_ID"   => 2,
                     "PAYED"            => "N",
                     "CANCELED"         => "N",
                     "STATUS_ID"        => "N",
                     "PRICE"            => $_POST["PRICE"],
                     "CURRENCY"         => "RUB",
                     "USER_ID"          => $arRegister["ID"],
                     "PAY_SYSTEM_ID"    => 1,
                     "PRICE_DELIVERY"   => 0,
                     "DELIVERY_ID"      => 2,
                     "DISCOUNT_VALUE"   => 0,
                     "TAX_VALUE"        => 0.0,
                     "USER_DESCRIPTION" => "Быстрый заказ" 
                  ));
            
                  echo "<pre>", print_r($ORDER_ID), "</pre>"; 


            // Связываем товары корзины с заказом

            CSaleBasket::OrderBasket($ORDER_ID); 
            LocalRedirect("/personal/order/make/confirm.php?ID=".$ORDER_ID); 


      }
   }

}