Файлы обработчика располагаются по адресу:

// /bitrix/php_interface/include/sale_payment/<НАЗВАНИЕ ПС>/
Пример простого вывода одной оплаты

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
use \Bitrix\Main,    
    Bitrix\Sale;

$ORDER_ID=trim($_GET["ORDER_ID"]);
if(empty($ORDER_ID)){
	die('Неизвестный заказ!');
}

Bitrix\Main\Loader::includeModule("sale");
$order  = Sale\Order::loadByAccountNumber($ORDER_ID);
$paymentCollection = $order->getPaymentCollection();
$onePayment = $paymentCollection[0];
$service = Sale\PaySystem\Manager::getObjectById($onePayment->getPaymentSystemId());
$context = \Bitrix\Main\Application::getInstance()->getContext();
$initResult = $service->initiatePay($onePayment, $context->getRequest(), \Bitrix\Sale\PaySystem\BaseServiceHandler::STRING);
echo $initResult->getTemplate();
Если в заказе несколько оплат, то их можно вывести в цикле:
// выведем все оплаты заказа в цикле
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
use \Bitrix\Main,    
    Bitrix\Sale;

$ORDER_ID=trim($_GET["ORDER_ID"]);
if(empty($ORDER_ID)){
	die('Неизвестный заказ!');
}

Bitrix\Main\Loader::includeModule("sale");
$order  = Sale\Order::loadByAccountNumber($ORDER_ID);
$paymentCollection = $order->getPaymentCollection();
echo 'У заказа '.$ORDER_ID.' есть '.count($paymentCollection ).' оплаты
'; foreach($paymentCollection as $payment){ $service = Sale\PaySystem\Manager::getObjectById($payment->getPaymentSystemId()); $context = \Bitrix\Main\Application::getInstance()->getContext(); $initResult = $service->initiatePay($payment, $context->getRequest(), \Bitrix\Sale\PaySystem\BaseServiceHandler::STRING); $buffered_output = $initResult->getTemplate(); echo 'Оплата № '.$payment->getField('ACCOUNT_NUMBER').' на '.$payment->getSum(); echo (strlen($buffered_output)<2) ? '
**Кнопки нет' : $buffered_output; echo '
'; }

Важное замечание
При вызове шаблон платежной системы нужно подключать с помощью require(), а не require_once(). В последнем случае платежная система выведет результат только один раз.

Полезные дополнения

// проверка оплачен ли заказ - true или false
$paymentCollection->isPaid();

// оплаченная сумма
$paymentCollection->getPaidSum();

// оплачена хотя бы одна оплата
$paymentCollection->hasPaidPayment();

// сумма к оплате
$payment->getSum();

// название платежной системы
$payment->getPaymentSystemName();

Официальная справка по кастомизации платежной системы и кастомизации шаблона платежной системы.


(0)
Отправьте заявку нашим специалистам

Начните проект сейчас

Оставить заявку