[mspYooKassa:1.0.17] - Новая версия SDK 3.8.0 и PHP >= 8.0

[mspYooKassa] — оплата через yookassa.ru


Платежи через ЮKassa— Самыми популярными способами: с банковских карт, электронными деньгами и не только.

Обновлен sdk до версии 3.8.0, работает на версии php >= 8.0

Добрый день. Доступна новая версия пакета оплаты mspYooKassa. Поддерживает актуальную версию sdk 3.8.0 и новые способы оплаты.

Пример по добавлению оплаты электронным сертификатом

Ввод данных банковской карты

Согласно документации необходимо
в объекте payment_method_data передайте код способа оплаты electronic_certificate и массив articles со списком товаров, для оплаты которых можно использовать электронный сертификат;
Создаем плагин на событие mspYooKassaOnCreatePayment
<?php

/* @var modX $modx */
/** @var array $scriptProperties */

/** @var array $payment */
if ($modx->event->name === 'mspYooKassaOnCreatePayment') {
    $metadata = $payment['metadata'] ?? [];
    $msorder = $metadata['msorder'] ?? 0;

    $articles = [];

    /** @var msOrder $order */
    if ($order = $modx->getObject('msOrder', (int)$msorder, false)) {
        if ($tmp = $order->getMany('Products')) {
            $products = [];
            /**  @var  $idx - порядковый номер товара в корзине */
            foreach (array_values($tmp) as $idx => $item) {
                /** @var msOrderProduct $item */

                $kodTru = null;
                if ($product = $item->getOne('Product')) {
                    // код tru_code лежит в опции товара  
                    $kodTru = $product->get('kod-tru');
                    if (is_array($kodTru)) {
                        $kodTru = array_filter($kodTru);
                        $kodTru = reset($kodTru);
                    } else {
                        $kodTru = trim($kodTru);
                    }
                }

                $kodTru = $kodTru ? trim($kodTru) : null;
                if (!empty($kodTru)) {
                    $articles[] = [
                        'article_number' => $idx + 1,
                        'payment_article_number' => $idx + 1,
                        'tru_code' => $kodTru,
                        'quantity' => $item->get('count'),
                        'article_name' => $item->get('name'),
                        'price' => [
                            'value' => $item->get('price'),
                            'currency' => 'RUB',
                        ],
                    ];
                }
            }
        }
    }


    if (!empty($articles)) {
        $payment['payment_method_data'] = [
            'type' => 'electronic_certificate',
            'articles' => $articles,
        ];
        // возвращаем измененный объект платежа
        $modx->event->returnedValues['payment'] = $payment;
    }
}
PS. Новая версия доступна в репозитории. Работает только на php >= 8.0
Володя
10 февраля 2025, 16:00
modx.pro
1 044
+7
Поблагодарить автора Отправить деньги

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

Александр
17 февраля 2025, 17:23
0
Пока новая версия так и не появилась на маркетплейте, или в каком она репозитории?
А как вообще в miniShop2 с поддержкой PHP 8? Попробовал поставить — сразу сотни предупреждений посыпались в лог, даже от простой перезагрузки лога.
    Артур Шевченко
    17 февраля 2025, 17:31
    0
    А как вообще в miniShop2 с поддержкой PHP 8?
    Нет там поддержки php 8 и, скорее всего, не будет, так как есть альфа релиз minishop3 и там поддержка есть.
      Александр
      17 февраля 2025, 17:33
      0
      Да, но miniShop3 только для MODx 3
        Артур Шевченко
        17 февраля 2025, 17:36
        0
        99% компонентов для Modx 2 не поддерживают php 8, отсюда вопрос зачем тебе php 8 если ты делаешь проект на Modx 2 или зачем ты делаешь проект на Modx 2 если тебе нужен php 8?
          Александр
          17 февраля 2025, 17:38
          0
          У меня скорее вопрос зачем компонент с поддержкой PHP 8+ для MODx 2 с поддержкой только PHP < 8, при этом в «репозитории» его по-прежнему нет.
            Артур Шевченко
            17 февраля 2025, 17:41
            0
            зачем компонент с поддержкой PHP 8+ для MODx 2
            А кто сказал, что компонент для Modx 2? Автор просто адаптировал компонент под новую версию php.
              Александр
              17 февраля 2025, 17:43
              0
              А кто говорил обратное? Пока это всё лишь предположения.
      Володя
      18 февраля 2025, 08:50
      +2
      Так ребята — «не бузите» !)
      По порядку поясняю:
      — Новая версия пакета для PHP 8 разработана, потому что SDK Юманей поддерживает только PHP 8. И только новая версия SDK поддерживает новые методы оплаты. Что были необходимы клиенту.
      — В репозитории модсторе новую версию был вынужден отключить, так как покупатели пакета жаловались что им недоступна старая версия под PHP < 8.
      — Пакет под MODX2 и на PHP8 все работает.

      PS. Кому необходимы новые методы оплаты и у кого сайт работает на PHP8 пишите в ТП — временно активирую пакет для скачивания. Пока только так.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      8