Код |
---|
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule('iblock');
Cmodule::IncludeModule('catalog');
Cmodule::IncludeModule('sale');
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' && $_POST["name_user"] && $_POST["tel_user"] && $_POST["email_user"]) {
$user_name = $_POST["name_user"];
$user_phone = $_POST["tel_user"];
$user_mail = $_POST["email_user"];
$user_adress = $_POST["address_user"]." индекс: ".$_POST["index_user"];
$user_dost_type = $_POST["dostavka"];
//find_user
$user_class = new CUser;
try {
$date_adder = date("dmY:His");
$USER_id = $user_class->Add(array(
"NAME" => $user_name,
"LOGIN" => $date_adder,
"EMAIL" => $user_mail,
"PASSWORD" => "passs_".$date_adder,
"CONFIRM_PASSWORD" => "passs_".$date_adder,
"GROUP_ID" => array(2),
"ACTIVE" => "Y",
"PERSONAL_PHONE" => $user_phone,
"PERSONAL_MOBILE" => $user_phone,
"PERSONAL_MAILBOX" => $user_mail,
"PERSONAL_ZIP" => $_POST["index_user"],
"PERSONAL_STREET" => $user_adress,
));
} catch (\Exception $e) {
$rsUsers = CUser::GetList(($by="personal_country"), ($order="desc"), array(
"=EMAIL" => $user_mail,
));
$ar_res = $rsUsers->GetNext();
$USER_id = $ar_res["ID"];
}
$basket_ck = $_COOKIE["basket"];
$basket_1 = explode(",", $basket_ck);
$arSelect = Array("ID", "NAME", "PRICE_1");
$arFilter = Array("ID" => $basket_1, "ACTIVE" => "Y");
$res = CIBlockElement::GetList(Array(), $arFilter);
$products = array();
while($ob = $res->GetNext()) {
$products[] = array(
'PRODUCT_ID' => (int)$ob["ID"],
'NAME' => $ob["NAME"],
'PRICE' => (float)$ob["PRICE_1"],
'BASE_PRICE' => (float)$ob["PRICE_1"],
'CURRENCY' => 'RUB',
'QUANTITY' => 1,
);
}
$basket = Bitrix\Sale\Basket::create(SITE_ID);
foreach ($products as $product)
{
$item = $basket->createItem("catalog", $product["PRODUCT_ID"]);
unset($product["PRODUCT_ID"]);
$item->setFields($product);
}
$order = Bitrix\Sale\Order::create(SITE_ID, $USER_id);
$order->setPersonTypeId(1);
$order->setBasket($basket);
$shipmentCollection = $order->getShipmentCollection();
$shipment = $shipmentCollection->createItem(
Bitrix\Sale\Delivery\Services\Manager::getObjectById($user_dost_type)
);
$shipmentItemCollection = $shipment->getShipmentItemCollection();
foreach ($basket as $basketItem)
{
$item = $shipmentItemCollection->createItem($basketItem);
$item->setQuantity($basketItem->getQuantity());
}
$paymentCollection = $order->getPaymentCollection();
$payment = $paymentCollection->createItem(
Bitrix\Sale\PaySystem\Manager::getObjectById(3)
);
$payment->setField("SUM", $order->getPrice());
$payment->setField("CURRENCY", $order->getCurrency());
$propertyCollection = $order->getPropertyCollection();
$phoneProp = $propertyCollection->getPhone();
$phoneProp->setValue($user_phone);
$nameProp = $propertyCollection->getPayerName();
$nameProp->setValue($user_name);
$emailProp = $propertyCollection->getUserEmail();
$emailProp->setValue($user_mail);
$adressProperty = $propertyCollection->getAddress();
$adressProperty->setValue($user_adress);
$result = $order->save();
if (!$result->isSuccess())
{
echo $result->getErrors();
} else {
echo "sucsess";
}
} else {
echo "err";
}
|
Это код формирования заказа и оформления корзины, сами товары закидываются по айдишникам в куку, а потом на стадии оформления идет аякс запрос на этот скрипт, который сразу создает пользователя если его нет и сам заказ на него. Модуль для платежей - это Официальный сбербанковский эквайринг 2.0. Сами заказы формируются без проблем, но вот пытаюсь понять, как выцепить сылку для перенаправления на оплату заказа.