Страницы

Поиск по вопросам

среда, 24 октября 2018 г.

Битрикс и Яндекс касса , почему разные номера заказов

Доброго времени суток ! На сайте реализована многосайтовость, два ИМ на которых можно оформлять заказы, подключена яндекс касса. В аккаунте яндекс кассы прописаны ссылки:
Check URL https://site1.ru/bitrix/tools/sale_ps_result.php
Aviso URL https://site1.ru/bitrix/tools/sale_ps_result.php
Success URL http://site1.ru/bitrix/tools/sale_ps_success.php
Fail URL http://site1.ru/bitrix/tools/sale_ps_fail.php
т.е ссылки от первого сайта, когда клиент делает заказа на втором сайте site2.ru то в случае успешной оплаты соответственно от попадает на site1.ru , мне нужно сделать перенаправление на site2.ru т.е на тот сайт в котором был сделан заказ.
В файле /bitrix/tools/sale_ps_success.php я хочу сделать редирект , как мне показалось что это можно сделать получив ID заказа из URL который формирует яндекс касса в случае успешной оплаты, в котором есть параметр orderNumber=273 . Но заметил что номер заказа в яндекс кассе не совпадают с номером заказа на сайте. К примеру если а ЯК это 273 то на сайте 280 . И итог того что хочу сделать: Получить номер заказа из URL, в файле sale_ps_success.php проверить какому сайту пренадлежит заказ и сделать редиррект на нужный сайт https://site2/personal/order/make/?ORDER_ID=".$OrderID
Кто нибудь сталкивался с подобным? Почему номера заказов разные?
По совету Mihanik71 использовать класс Bitrix\Sale\Internals\PaymentTable оказалось верным решением за что ему большое спасибо, ниже пример кода который в файле(sale_ps_success.php) я запилил у себя на сайте:

$orderNumbder = $_GET['orderNumber']; // тут приходит номер оплаты
CModule::IncludeModule("sale"); c $obj = new Bitrix\Sale\Internals\PaymentTable; // класс с помощью которого можно вытащить id заказа, был обнаружен с помощью модуля live ip
$shimpentCode = $obj->getlist(array('select' => array('ID','ORDER_ID'),'filter' => array('ID' => $orderNumbder)))->fetch();
$SiteOrder = CSaleOrder::GetByID($shimpentCode['ORDER_ID']); // вытаскиваем свойства заказа, нас интересует поле LID
$SiteID = $SiteOrder['LID']; // id сайта на котором была покупка
$OrderID = $shimpentCode['ORDER_ID'];
$successUrl = ""; // простое условие , выбираем куда редиректить покупателя if($SiteID == 's1'){ $successUrl = "https://site1.ru/personal/order/make/?ORDER_ID=".$OrderID . "&PAY=Y"; // параметр PAY=Y добавил для своих нужд } if($SiteID == 's2'){ $successUrl = "https://site2.ru/personal/order/make/?ORDER_ID=".$OrderID . "&PAY=Y"; }
$successPath = COption::GetOptionString("sale", "sale_ps_success_path", "/");
if(!empty($successUrl)){ LocalRedirect($successUrl); } }


Ответ

Есть класс Bitrix\Sale\Internals\PaymentTable там по номеру оплаты поле ID можно получить номер заказа ORDER_ID.

Комментариев нет:

Отправить комментарий