Получить способ оплаты заказа битрикс

Содержание
  1. Работа с заказом в Битрикс D7
  2. Заказ (Sale\Order)
  3. Корзина заказа (Sale\Basket)
  4. Свойства заказа (Sale\PropertyValueCollection)
  5. Оплаты заказа (Sale\PaymentCollection)
  6. Пример оформления заказа в D7
  7. Заказы
  8. Создание
  9. Создание без отгрузок и оплат
  10. Получение по ID
  11. Получение информации
  12. Редактирование
  13. Оплата
  14. Разрешение доставки
  15. Добавление комментария
  16. Смена статуса
  17. Отмена и удаление
  18. Получение публичной ссылки
  19. Выборка заказов по значению свойства
  20. Добавление привязки
  21. Пользовательские комментарии
  22. Оплаты
  23. Получение
  24. Добавление
  25. Редактирование
  26. Удаление
  27. Получение конкретной оплаты
  28. Получение суммы оплаты
  29. Получение состояния: оплачено или нет
  30. Получение оплаченной суммы по заказу
  31. Возврат средств
  32. Получение объекта платежной системы
  33. Получение списка доступных платежных систем с учетом настроенных ограничений
  34. Пользовательские комментарии
  35. Работа с оплатой заказа в Bitrix D7
  36. Bitrix. Интернет магазин. API работы с закаом. Как получить PAY_SYSTEM_ID по Id заказа?

Работа с заказом в Битрикс D7

Начиная с 16 версии используется новая версия ядра магазина Битрикс, являющаяся частью ядра Битрикс D7. Многое описанное здесь может работать и в переходной версии 15.5. Все классы для работы с магазином собраны в модуле sale, поэтому для работы примером используем use для пространства модуля интернет-магазина.

Заказ (Sale\Order)

Заказ представляет собой объект класса Bitrix\Sale\Order. Нужно запомнить, что пока не вызван метод save() этот объект необязательно связан с сохранённым заказом. Также пока вы не вызовете save(), изменения в заказе не будут сохранены в базе данных.

Существующий заказ можно получить следующим образом:

Поля заказа можно получить короткими вызовами:

Также любое поле по имени можно получить так:

Список доступных полей можно получить, вызвав $order->getAvailableFields().

Заказ имеет связь один-ко-многим с несколькими объектами в виде коллекций — коллекция товаров в корзине (Sale\Basket), коллекция отгрузок (Sale\ShipmentCollection), коллекция оплат (Sale\PaymentCollection) и коллекция свойств заказа (Sale\PropertyValueCollection).

Самый простой способ получить список способов доставки и оплаты — короткие вызовы:

Чтобы получить список примененных к заказу скидок, нужно вызвать:

В массиве $discountData[‘DISCOUNT_LIST’] содержится список скидок, в $discountData[‘COUPON_LIST’] содержится список купонов. Т.к. скидки можно отключать в админке, следует проверять поле APPLY: если Y — скидка/купон применёны, если N — были отключены менеджером.

Корзина заказа (Sale\Basket)

Про работу с корзиной была отдельная статья, привязать и получить корзину заказа можно так:

Свойства заказа (Sale\PropertyValueCollection)

Свойства заказа — объекты Bitrix\Sale\PropertyValue — собраны в коллекции propertyCollection

Получить значения всех свойств и группы свойств можно так:

У многих свойств заказа есть определенное встроенное назначение (атрибуты IS_EMAIL, IS_PAYER, IS_LOCATION, IS_LOCATION4TAX, IS_PROFILE_NAME, IS_ZIP, IS_PHONE, IS_ADDRESS). Такие свойства можно получить следующими методами:

Получить значение свойства по ID:

В любом случае получаем значение свойства — экземпляр класса Bitrix\Sale\PropertyValue. Из него мы можем получить значение свойства:

И информацию о самом свойстве:

Чтобы изменить значение свойства следует вызвать метод setValue и сохранить сущность

Оплаты заказа (Sale\PaymentCollection)

Из коллекции оплат также можно получить информацию об оплате, что и из объекта заказа. Оплата с внутреннего счета также считается одной из оплат:

Коллекция содержит объекты оплаты Sale\Payment с информацией об оплатах:

Оплатить или вернуть оплату можно методами setPaid(), setReturn():

Инициировать оплату (вывести шаблон оплаты: форму, кнопку и т.п.) можно следующим образом:

Читайте также:  Способы изучения финансовой грамотности

Пример оформления заказа в D7

Для примера приведу простейший код оформления заказа с комментариями

Источник

Заказы

Операции с заказами

Создание

Создание без отгрузок и оплат

Получение по ID

Заказ представляет собой объект, который можно получить несколькими способами:

  • по ID:
  • по номеру заказа (ACCOUNT_NUMBER):

Получение информации

Для получения информации используйте один из двух методов.

Метод всегда возвращает либо массив объектов, либо null.

Параметр Описание С версии
$parameters Массив, структура:
  • filter — описание фильтра для WHERE и HAVING
  • order — параметры сортировки
  • limit — количество записей
  • offset — смещение для limit
  • runtime — динамически определенные поля

  • \Bitrix\Sale\Order::getList($parameters);

    Метод всегда возвращает объект DB\Result, из которого можно получить данные с помощью метода fetch();

    Параметр Описание С версии
    $parameters Массив, структура которого полностью соответствует структуре ORM’ного getList.
    Метод всегда возвращает объект DB\Result , из которого можно получить данные с помощью метода fetch() .

    Выведем даты всех заказов текущего пользователя за текущий месяц, отсортированные по дате заказа

    Получить заказы с определенным товаром

    Фильтрация по нескольким вариантам статуса

    Получение списка заказов, у которых отсутствует какое-либо свойство

    Получение списка заказов по нескольким свойствам заказа

    Редактирование

    Оплата

    Оплата заказа подразумевает оплату всех частичных оплат, которые в него входят. Только в этом случае заказ считается полностью оплаченным.

    Разрешение доставки

    Разрешение доставки подразумевает разрешение всех частичных отгрузок, которые в него входят. Только в этом случае заказ считается полностью оплаченным.

    Если необходимо отменить разрешение отгрузки, тогда достаточно вместо $shipment->allowDelivery() вызвать $shipment->disallowDelivery() :

    Добавление комментария

    Смена статуса

    Отмена и удаление

    Отмена

    Для отмены заказа необходимо, чтобы все оплаты были не оплачены, отгрузки не отгружены. В противном случае возникнет ошибка, которая будет возвращена. Поэтому, если это необходимо, перед отменой выполнить отмену отгрузки и отмену оплаты заказа.

    Удаление

    Есть 2 подхода к удалению заказа: «умное» и «в лоб».

    • При «умном» удалении заказ сначала отменяется, а затем удаляется. Это значит, что у удаляемого заказа не должно быть оплаченный оплат и отгруженных отгрузок.
    • При удалении «в лоб» не происходит отмены заказа. Идет прямое удаление информации о заказе из базы.

    Получение публичной ссылки

    Необходимо, чтобы в настройках модуля Интернет-магазин (Настройки > Настройки продукта > Настройки модулей > Интернет-магазин) была отмечена опция «Разрешить просмотр заказа по ключу без авторизации».

    Выборка заказов по значению свойства

    Добавление привязки

    Пример добавления привязки существующего Контакта или Компании к Заказу:

    Пользовательские комментарии

    Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

    Для этого нужно всего лишь авторизоваться на сайте

    Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

    Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

    Источник

    Оплаты

    Внимание! Оплаты всегда связаны с заказом. Использовать метод \Bitrix\Sale\Payment::save() для сохранения категорически запрещается. При изменении оплаты может произойти изменение связанных сущностей, которые не будут сохранены. Необходимо выполнять сохранение через заказ: \Bitrix\Sale\Order::save() . Помимо всего этого в одной из ближайших версий вызов \Bitrix\Sale\Payment::save() будет генерировать ошибку уровня E_WARNING .

    Читайте также:  Решение систем уравнений графическим способом конспект

    Получение

    • Работа с коллекцией
    • Работа с массивом

    Помимо объектов есть возможность напрямую обращаться к базе через метод \Bitrix\Sale\PaymentCollection::getList($parameters) , либо \Bitrix\Sale\Payment::getList($parameters) . Оба этих метода работают аналогично.

    Методы всегда возвращают объект Bitrix\Main\DB\Result , из которого можно получить данные с помощью метода fetch().

    Параметр Описание С версии
    $parameters Массив, структура которого полностью соответствует структуре ORM’ного getList.

    Добавление

    • Вариант 1:
    • Вариант 2:
    • Вариант 3:

    Редактирование

    Изменить данные в оплате можно через методы:

    В обоих случаях результатом работы метода является объект класса \Bitrix\Sale\Result .

    Список доступных для редактирования полей:

    Удаление

    Возвращает объект типа \Bitrix\Sale\Result .

    Получение конкретной оплаты

    Получение суммы оплаты

    Получение состояния: оплачено или нет

    Возвращает true или false .

    Получение оплаченной суммы по заказу

    Возврат средств

    Метод принимает единственный параметр, значения которого могут быть следующие:

    • ‘Y’ — при возврате на внутренний счет;
    • ‘P’ — при возврате через платежную систему(если она поддерживает данный функционал);
    • ‘N’ — при отмене возврата.

    Возвращает объект типа \Bitrix\Sale\Result . При выполнении возврата Вам не требуется делать каких-то дополнительных операций вроде вызова методов API платежной системы для выполнения возврата. Система все сделает сама. При попытке выполнить возврат через платежную систему, которая его не поддерживает, будет возвращена ошибка.

    Получение объекта платежной системы

    Результатом работы метода является объект класса \Bitrix\Sale\PaySystem\Service .

    Получение списка доступных платежных систем с учетом настроенных ограничений

    Параметры Описание С версии
    $payment Объект оплаты.
    $mode Одно из двух значений:
    • \Bitrix\Sale\Services\Base\RestrictionManager::MODE_CLIENT
    • \Bitrix\Sale\Services\Base\RestrictionManager::MODE_MANAGER

    По умолчанию: \Bitrix\Sale\Services\Base\RestrictionManager::MODE_CLIENT . В режиме клиента возвращается список только тех платежных систем, которые попадают под ограничения.

    В режиме менеджера возвращается полный список платежных систем (системы, которые не подают под ограничения, имеют ключ RESTRICTED ).

    Пользовательские комментарии

    Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

    Для этого нужно всего лишь авторизоваться на сайте

    Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

    Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

    Источник

    Работа с оплатой заказа в Bitrix D7

    В обновлённом ядре Bitrix D7 функционал работы с заказами был существенно изменён. Немного ранее мы рассматривали работу со свойствами заказа посредством использования возможностей обновленного ядра D7. В данном посту мы поговорим про работу с функционалом оплаты заказов через API.

    Об этом уже говорилось на нашем сайте, и не будет лишним повторить, что в ядре D7 реализована концепция ORM, свойственная для объектно-ориентированных языков программирования. Эта концепция включает в себя такое понятие как «коллекция», которая представляет из себя «умный» массив. Работа с ним оптимизирует групповые операции с объектами одного типа. Так к примеру, для реализации отдельного функционала сайта реализованы отведённые коллекции, с которыми мы можем работать по правилам ООП.

    В данном посту вы рассмотрим возможности использования коллекции оплаты заказа Sale\PaymentCollection. Давайте создадим объект заказа, с которым мы и будем далее работать.

    В переменную $order был помещён объект существующего заказа. Для работы с данными оплаты заказа, обращаемся к коллекции оплаты заказа Sale\PaymentCollection.

    После создания объекта коллекции оплаты, мы можем получать информацию об оплате текущего заказа, а также его параметры.

    Возможности системы позволяют содержать множество записей об оплатах. Это означает что с этими записями мы можем работать так же и в цикле. Каждая итерация цикла будет передавать объект оплаты Sale\Payment, который даёт возможность работы с данными оплаты.

    Как получать данные оплаты мы рассмотрели, теперь самое время попробовать изменить параметры. Для этого мы попробует установить флаг оплаты, и возврата с помощью методов setPaid() и setReturn().

    Как мы знаем метод оплаты может иметь какую-либо форму с кнопкой оплаты. Для инициализации данной формы мы можем использовать следующий код:

    Таким образом, при создании заказа создаётся запись оплаты, с неоплаченным статусом. После транзакции покупателем статус оплаты должен меняться для подтверждения операции оплаты. Всё это делается в конкретном интерфейсе сайта. Пользуясь примерами, вы можете работать с оплатами заказа удобным для вас способом.

    Источник

    Bitrix. Интернет магазин. API работы с закаом. Как получить PAY_SYSTEM_ID по Id заказа?

    Здравствуйте.
    Сейчас есть вот такой код:

    То есть получаю объект заказа по id заказа = 71 строчкой $order = Order::load(71);
    Далее предположительно получаю коллекцию оплат строчкой $collection = $order->getPaymentCollection();
    Если вызвать var_dump($collection); то PAY_SYSTEM_ID определяется равный 2, при этом находится в приватном свойстве. Конечно можно выполнить (array)($collection) чтобы получить объект в виде массива, но хотелось бы правильное решение средствами Bitrix, поэтому пожалуйста ответе каким методом добраться до PAY_SYSTEM_ID.

    Мало ли это важно — описанное выше, это подзадача оплаты заказа через API.

    То есть далее я планирую сделать примерно следующее

    $service = \Bitrix\Sale\PaySystem\Manager::getObjectById(2);// Здесь передаётся Id который как раз и требуется определить, то есть PAY_SYSTEM_ID
    $payment = \Bitrix\Sale\Payment::create($collection, $service);

    $payment->setField(‘SUM’, 1000);// Создаём оплату на 1000 рублей к примеру
    $collection->addItem($payment);// Добавляем оплату к коллекции
    __________________________________________________________________________________
    Вопрос решен, считаю нужным добавить следующее:
    __________________________________________________________________________________
    По факту я не совсем корректно из API создавал сам заказ, а именно сумму оплаты необходимо было указывать ещё на стадии формирования заказа, в этом случаи не было необходимости и в моём вопросе, а именно ещё на этапе формирования заказа нужно было сделать следующее:

    $paymentCollection = $order->getPaymentCollection();
    $payment = $paymentCollection->createItem();
    $paySystemService = PaySystem\Manager::getObjectById(2);
    $payment->setFields(array(
    ‘PAY_SYSTEM_ID’ => $paySystemService->getField(«PAY_SYSTEM_ID»),
    ‘PAY_SYSTEM_NAME’ => $paySystemService->getField(«NAME»),
    ‘SUM’ => ($cost + $deliveryCost)// . Именно этой строчки у меня не было, поэтому сумма оплаты была нулевая. То есть здесь указывается сумма оплаты, я указываю как сумма заказа с скидками плюс сумма доставки
    ));

    А уже при проверке факта оплаты например от Яндекс кассы просто выполняется CSaleOrder::PayOrder($orderId, «Y»); Внимание! Метод согласно документации является устаревшим, но как сделать через Order я пока не понял
    После использования данного метода появляется отметка «Да» в оплатах на против информации о оплате, а так же если суммы указанной в SUM достаточно для оплаты всего заказа — появляется информация что заказ оплачен в списке заказов, так же появляется в любом случаи зеленая индикация в заказе напротив метода заказа и оплаченная сумма.

    Источник

    Читайте также:  Наиболее частый способ временной остановки внутреннего паренхиматозного кровотечения
  • Оцените статью
    Разные способы