Зачем нужна ссылка на оплату заказа?
Теги: оплатаТеги: оплата
12.07.2021
Заказы часто создают сами менеджеры через админку битрикса. Чтобы пользователь мог оплатить заказ, ему можно скинуть ссылку на оплату.
Шаг 1. Создаем свойство заказа в админке 1С Битрикс
-
Шаг 2. Добавляем событие "при сохранении заказа" в init.php
Main\EventManager::getInstance()->addEventHandler( 'sale', 'OnSaleOrderSaved', 'PayLink' ); function PayLink(Main\Event $event) { CModule::IncludeModule("sale"); $order = $event->getParameter("ENTITY"); $paymentIds = $order->getPaymentSystemId(); $personTypeId = $order->getPersonTypeId(); $propertyCollection = $order->getPropertyCollection(); if ($paymentIds[0] == 10) { $orderPropertyId = ($personTypeId == 1) ? 55 : 56; $somePropValue = $propertyCollection->getItemByOrderPropertyId($orderPropertyId); if (!$somePropValue) { CSaleOrderPropsValue::Add(array( 'ORDER_ID' => $order->getId(), 'ORDER_PROPS_ID' => $orderPropertyId, 'NAME' => "Ссылка на оплату", 'VALUE' => "https://" . $_SERVER["SERVER_NAME"] . "/pay.php?ORDER_ID=" . $order->getId(), 'CODE' => "PAY_LINK", )); } else { $propValue = $somePropValue->getValue(); if (empty($propValue)) { // $somePropValue->setValue("https://pk-optex.ru/personal/order/payment/?ORDER_ID=".$order->getId()); $somePropValue->setValue("https://" . $_SERVER["SERVER_NAME"] . "/pay.php?ORDER_ID=" . $order->getId()); $somePropValue->save(); } } } }
Обратите внимание, что в коде используются идентификаторы платежной системы ($paymentIds[0] == 10) и типа платильщика $personTypeId.
Ссылка на оплату будет иметь следующий вид: https://ваш_домен/pay.php?ORDER_ID=10
-
Шаг 3. Создаем страницу оплаты
Cоздаем в корне сайта файл pay.php и добавляем в него код:
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); use \Bitrix\Sale; CModule::IncludeModule("sale"); $ORDER_ID=intval($_GET["ORDER_ID"]); $orderObj = Sale\Order::load( $ORDER_ID ); $paymentCollection = $orderObj ->getPaymentCollection(); $payment = $paymentCollection [0]; $service = Sale\PaySystem\Manager::getObjectById( $payment ->getPaymentSystemId()); $context = \Bitrix\Main\Application::getInstance()->getContext(); $service ->initiatePay( $payment , $context ->getRequest()); $initResult = $service->initiatePay($payment, $context->getRequest(), \Bitrix\Sale\PaySystem\BaseServiceHandler::STRING); $buffered_output = $initResult->getTemplate();
<sc ript type="text/javascript"> document.getElementsByTagName('form')[0].submit(); </sc ript>
Теги: оплатаТеги: оплата
12.07.2021