9ответ(ов) в теме
icedesign
не в сети 4 года
На сайте с 05.05.2020
Участник
Тем 10
Сообщения 34
1
17:07
Версия WP-Recall: 16.22.12
Версия дополнения: 1.1.0

У меня вылетело много ошибок при активации дополнения, посмотрел по сравнению с робокасса он вообще написан старым методом.

Скину чего добился уже в переделке его.

<?php

add_action( 'init', 'rcl_add_enot_gateway' );
function rcl_add_enot_gateway() {
    $pm = new Rcl_Enot_Payment();
    $pm->register_payment( 'Rcl_Enot_Payment' );
}
class Rcl_Enot_Payment extends Rcl_Payment {

    public $form_pay_id;

    function register_payment( $form_pay_id ) {

        $this->form_pay_id = $form_pay_id;
        parent::add_payment( $this->form_pay_id, array(
            'class'		 => get_class( $this ),
            'request'	 => 'enot-request',
            'name'		 => 'Оплатить через Enot',
            'image'		 => rcl_addon_url( 'icon.jpg', __FILE__ )
        ) );
        if ( is_admin() )
            $this->add_options();
    }

    function add_options() {
        add_filter( 'rcl_pay_option', (array( $this, 'options' ) ) );
        add_filter( 'rcl_pay_child_option', (array( $this, 'child_options' ) ) );
    }

    function options( $options ) {
        $options[$this->form_pay_id] = __( 'Оплатить через Enot', 'enot-request' );
        return $options;
    }

	function child_options($child) {

        $opt = new Rcl_Options();

            $options = array(
                $opt->title( __( 'Оплатить через Enot', 'rcl-robokassa' ) ),
                $opt->label( __( 'Наименование платежной системы', 'rcl-robokassa' ) ),
                $opt->option( 'text', array( 'name' => 'enot_custom_name' ) ),
                $opt->label( __( 'ID магазина', 'rcl-robokassa' ) ),
                $opt->option( 'number', array( 'name' => 'enot_id' ) ),
                $opt->label( __( 'Секретный пароль', 'rcl-robokassa' ) ),
                $opt->option( 'password', array( 'name' => 'enot_secret_key' ) ),
                $opt->label( __( 'Дополнительный ключ', 'rcl-robokassa' ) ),
                $opt->option( 'password', array( 'name' => 'enot_other_key' ) ),
			);

        $child .= $opt->child(
            array(
                'name'	 => 'connect_sale',
                'value'	 => $this->form_pay_id
            ), $options
        );

        return $child;
	}

	function pay_form( $data ) {

		return parent::construct_form( [
				'action' => "https://enot.io/pay",
				'method' => 'get',
				'fields' => array(
					'm'				 => rcl_get_commerce_option( 'enot_id' ),
					'oa'			 => $data->pay_summ,
					'o'				 => $data->pay_id,
					's'				 => md5( implode( ':', [
						rcl_get_commerce_option( 'enot_id' ),
						$data->pay_summ,
						rcl_get_commerce_option( 'enot_secret_key' ),
						$data->pay_id
					] ) ),
					'cr'			 => $data->currency,
					'c'				 => $data->description,
					'success_url'	 => get_permalink( $data->page_successfully ),
					'fail_url'		 => get_permalink( $data->page_fail ),
					'cf[user_id]'	 => $data->user_id,
					'cf[pay_type]'	 => $data->pay_type,
					'cf[baggage]'	 => $data->baggage_data,
				)
			] );
	}

	function result( $data ) {

		$sign = md5( implode( ':', [
			$_REQUEST['merchant'],
			$_REQUEST['amount'],
			rcl_get_commerce_option( 'enot_other_key' ),
			$_REQUEST["merchant_id"]
			] ) );

		if ( $sign != $_REQUEST['sign_2'] ) {
			rcl_add_log( 'enot-sign-error', $_REQUEST, 1 );
			rcl_mail_payment_error( $sign );
			exit;
		}

		if ( ! parent::get_payment( $_REQUEST['merchant_id'] ) ) {
			parent::insert_payment( array(
				'pay_id'	 => $_REQUEST['merchant_id'],
				'pay_summ'	 => $_REQUEST['amount'],
				'user_id'	 => $_REQUEST["custom_field"]['user_id'],
				'pay_type'	 => $_REQUEST["custom_field"]['pay_type']
			) );
		}

		echo "Good";
		exit;
	}

}

Редакции сообщения
24.09.2020 17:08icedesignПричина: не указано
0
Вова (Otshelnik-Fm)
не в сети 8 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
2
17:28

Здравствуйте.

Напишите текст ошибок

0
Андрей CS
не в сети 1 час
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16937
3
17:50

Я не уверен, что вы используете последнюю версию дополнения, тк версия 1.1.0 может работать только на версии wp-recall не ниже 16.24.0
Кроме того, версия 1.1.0 кардинально отличается того кода, что вы скинули и я не понял, зачем было вообще это делать.

0
icedesign
не в сети 4 года
На сайте с 05.05.2020
Участник
Тем 10
Сообщения 34
4
18:04

Хорошо, если я не хочу и не буду обновлять версию своего WP-Recall так как я очень много изменил в ядре и меня все устраивает, как мне получить версию Enot Gateway до обновления на версию 16.24.0? У вас остаются плагины на старые версии или выходит что всем нужно обновляться и вносить свои изменения заново?

0
icedesign
не в сети 4 года
На сайте с 05.05.2020
Участник
Тем 10
Сообщения 34
5
18:09

Uncaught Error: Class 'Rcl_Gateway_Core' not found in /home/i53617/public_html/-site-/wp-content/plugins/wp-recall/add-on/enot-gateway/index.php:8 Stack trace: #0 /home/i53617/public_html/-site-/wp-content/plugins/wp-recall/functions/addons.php(92): include_once() #1 /home/i53617/public_html/-site-/wp-content/plugins/wp-recall/admin/add-on-manager.php(290): rcl_activate_addon('enot-gateway') #2 /home/i53617/public_html/-site-/wp-includes/class-wp-hook.php(287): rcl_update_status_addon('') #3 /home/i53617/public_html/-site-/wp-includes/class-wp-hook.php(311): WP_Hook->apply_filters('', Array) #4 /home/i53617/public_html/-site-/wp-includes/plugin.php(478): WP_Hook->do_action(Array) #5 /home/i53617/public_html/-site-/wp-content/plugins/wp-recall/admin/admin-menu.php(86): do_action('rcl_init_addons...') #6 /home/i53617/public_html/-site-/wp-includes/class-wp-hook.php(287): rcl_add_options_addons in /home/i53617/public_html/-site-/wp-content/plugins/wp-recall/add-on/enot-gateway/index.php on line 8

А вот и сами ошибки

0
Вова (Otshelnik-Fm)
не в сети 8 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
6
18:15

Всё движется вперёд - старые версии уходят в историю. Мы не храним старые версии.

Техподдержка осуществляется при условии что:
- Вы не изменяли ядро
- Вы обновились до актуальных версий.
- Все кастомизации (фильтры, css) должны быть, при обращению в техподдержку, отключены.

Мы не можем нести ответственности за ваши действия и тратить время на решение, возможно уже решенных в обновлении, проблем.

icedesign сказал(а)
А вот и сами ошибки

Я не заметил что у вас версия реколл старая. Обновите плагин.
Сейчас ошибки, что у вас возникают, нам получается не нужны т.к. и так понятно от чего они возникают. Обновляйтесь.
И не правьте ядро плагина. Это ущербная практика и несет только проблемы и никто из разработчиков так не делает.

0
icedesign
не в сети 4 года
На сайте с 05.05.2020
Участник
Тем 10
Сообщения 34
7
19:25

Понял принял.. я пользуюсь вашим плагином с 9 сентября, а обновления такие частые и глобальные. Как будто год, что все дополнения у людей полетят. Вот бы WP так делало, чтоб все плагины через каждый месяц надо было переписывать из-за переименовывания класса.

Нашел на просторах слитый плагин, кому надо может пользоваться. Если нельзя выставлять удалите. Тему можно закрывать.
del

Редакции сообщения
24.09.2020 19:34Владимир (Otshelnik-Fm)Причина: не стоит весь код писать
0
Вова (Otshelnik-Fm)
не в сети 8 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
8
19:41

Не стоит делать поспешные выводы. И в новостях всё есть - почему пошло, необратимое с старым, движение вперед

Вы не можете просматривать опубликованные ссылки

Жизненный цикл разработки требует переписывания апи. Последний раз глобально все менялось более 3х лет назад

Вы не можете просматривать опубликованные ссылки

И тянуть старое - даже вордпресс отбрасывает поддержку старого. Не нужно некорректное сравнение делать.

Всё движется вперед - но если лезть в ядро - вы всегда будете позади и мало того - у вас не будет доступа к исправленным уязвимостям - т.к. отказываетесь от обновлений

Редакции сообщения
24.09.2020 19:42Владимир (Otshelnik-Fm)Причина: не указано
0
Андрей CS
не в сети 1 час
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16937
9
20:14

а что поломалось и где? платежные дополнения написанные на старом АПИ сохраняют свою работоспособность и на новом АПИ

icedesign сказал(а)
А вот и сами ошибки: Uncaught Error: Class 'Rcl_Gateway_Core' not found

Это означает, что вы пытались использовать класс из нового АПИ на старой версии, где он не определен, ваша ошибка вызвана только вашими действиями, больше винить некого, пытались приспособить последнюю версию дополнения на старое АПИ, да видимо не учли некоторые нюансы.
Закрыто.

0
Тема закрыта. Публикация новых сообщений запрещена.