А еще удобнее клиенту отправлять сразу ссылку на оплату, или сгенерированный счет.
Инструкция
Сначала создадим нужные статусы
В настройках (настройки -> настройки модулей -> интернет-магазин -> настройки -> Статус, начиная с которого можно оплатить заказ (указать)
Сделать настройки в типах событий (добавить в нужном событии поле ORDER_PAYMENT
В почтовых шаблонах добавить в тело письма данное поле

Письмо клиенту, что может оплатить.
Файл /bitrix/php_interface/init.php
use Bitrix\Main, Bitrix\Main\Loader, Bitrix\Sale\PaySystem, Bitrix\Sale, Bitrix\Sale\Order; AddEventHandler("main", "OnBeforeEventAdd", "MyOnBeforeEventAdd"); |
function MyOnBeforeEventAdd(&$event, &$lid, &$arFields){ if($event == "SALE_ORDER_ALLOW_PAY" && isset($arFields["ORDER_REAL_ID"]) && intval($arFields["ORDER_REAL_ID"])>0 && (!isset($arFields["ORDER_PAYMENT"]) || $arFields["ORDER_PAYMENT"]=='') ){ $order = Sale\Order::load(intval($arFields["ORDER_REAL_ID"])); $paymentCollection = $order->getPaymentCollection(); $paySystemService = PaySystem\Manager::getObjectById($paymentCollection->current()->getPaymentSystemId()); if($paySystemService->getField("IS_CASH")=="Y"){ //если наличные $arFields["ORDER_PAYMENT"] = "Вы можете оплатить в офисе по адресу: Тут адрес"; } elseif($paySystemService->getField("ACTION_FILE")=="bill"){ //если счет $arPdf = $paySystemService->getPdf($paymentCollection->current()); if(isset($arPdf["SRC"]) && $arPdf["SRC"]!=''){ $arFields["ORDER_PAYMENT"] = "<a href='https://адрес_сайта".$arPdf["SRC"]."' target='_blank'>Ссылка на счет pdf</a>"; } } elseif ($paySystemService->getField('NEW_WINDOW') === 'N' || $paySystemService->getField('ID') == 9){ $initResult = $paySystemService->initiatePay($paymentCollection->current(), null, PaySystem\BaseServiceHandler::STRING); if ($initResult->isSuccess()){ $arFields["ORDER_PAYMENT"] = $initResult->getTemplate(); } } else{ $arFields["ORDER_PAYMENT"] = "Вы можете оплатить, перейдя по ссылке на заказ"; } } } |
тут ограничение для платежной системы ID 9
function MyOnBeforeEventAdd(&$event, &$lid, &$arFields){ if($event == "SALE_STATUS_CHANGED_NP" && isset($arFields["ORDER_REAL_ID"]) && intval($arFields["ORDER_REAL_ID"])>0){ $order = Sale\Order::load(intval($arFields["ORDER_REAL_ID"])); if($order->getField('PAYED') == "N"){ $paymentCollection = $order->getPaymentCollection(); $paySystemService = PaySystem\Manager::getObjectById($paymentCollection->current()->getPaymentSystemId()); if ($paySystemService->getField('NEW_WINDOW') === 'N' || $paySystemService->getField('ID') == 9){ $initResult = $paySystemService->initiatePay($paymentCollection->current(), null, PaySystem\BaseServiceHandler::STRING); if ($initResult->isSuccess()){ $arFields["ORDER_PAYMENT"] = $initResult->getTemplate(); } } else{ $arFields["ORDER_PAYMENT"] = "Вы можете оплатить, перейдя по ссылке на заказ"; } } } } |