Jump to content

Lafko

Пользователи
  • Регистрация

  • В сети

Posts posted by Lafko

  1. 11 часов назад, Respected сказал:

    Тема не актуальная, написано же

    Что значит не актуальная? Я создал тему у себя на форуме, и пытаюсь оставить сообщение в этой же теме, но вот такое сообщение получаю, но в тоже время другой пользователь может оставить сообщение без этой ошибки. Подозреваю что это связано с объединением двух сообщений в один пост. Та же ошибка была после того как второй администратор попытался отредактировать моё сообщение. Я в разных местах получаю похожую ошибку, например в виджете когда пытаюсь добавить рекомендуемый продукт. Это началаось именно с 4.4.1 версии в 4.4.0 такого не было...

    Screenshot_1.thumb.png.26eee3bccf70e087e526bede7390fbd9.png

  2. Posted

    Подскажите как сломать счета продления? Чтобы их нельзя было продлевать даже если доступна кнопка продления.
    Дело в том что IPS не генерирует лицензионный ключ если не включена функция продления счета
    Screenshot_2.thumb.png.e0414afc4f27437a816ead1d7edf5c1d.png
    Дело в том что у меня на форуме при покупке данный ключ используется для доступа к программе и если пользователь случайно оплатит счет продления то новый ключ ему не придет. Новый ключ приходит только при новой покупке. Я думал что поможет указать счет продления через пару лет, но кривой IPS формирует его сразу

    Screenshot_3.thumb.png.50fc70cb300461376b5774a9f1a9f111.png

    Мне надо убрать эту кнопку

  3. Если у кого-то из способов оплаты пропали методы оплаты то вам надо в файл по пути /applications/nexus/sources/Gateway/Gateway.php добавить в функцию gateways() ваш метод оплаты. Пример ниже.

    public static function gateways()
    	{
    		$return = array(
    			'Stripe'		=> 'IPS\nexus\Gateway\Stripe',
    			'Braintree'		=> 'IPS\nexus\Gateway\Braintree',
    			'PayPal'		=> 'IPS\nexus\Gateway\PayPal',
    			'AuthorizeNet'	=> 'IPS\nexus\Gateway\AuthorizeNet',
    			'TwoCheckout'	=> 'IPS\nexus\Gateway\TwoCheckout',
    			'Manual'		=> 'IPS\nexus\Gateway\Manual',
    			'Robokassa'		=> 'IPS\nexus\Gateway\Robokassa',
    			'Payeer'		=> 'IPS\nexus\Gateway\Payeer',
    		);
    		
    		if ( \IPS\NEXUS_TEST_GATEWAYS )
    		{
    			$return['Test'] = 'IPS\nexus\Gateway\Test';
    		}
    		
    		return $return;
    	}

     

  4. 2 часа назад, Lafko сказал:

    У меня слдетели модули оплаты после обновления до 4.4.1 подскажите как восстановить?
    Screenshot_2.thumb.png.f503258ea7f0345f1dd1fad427e81924.png
    Или может быть у кого-то есть
    https://invisioncommunity.com/files/file/7658-robokassa-payment-gateway/ ?

    Посмотрел изменения в 4.4.1

    Commerce

    • Removed Braintree option for new payment gateways.

      Что это значит?
  5. 3 минуты назад, WaNted сказал:

    $this->purchase->expire возвращает объект \IPS\DateTime. Попробуйте использовать $this->purchase->expire->getTimestamp().

    К сожалению не работает

    если expire получает значение после метода save то скорее всего надо в другой метод вставлять код, только я вот без понятия в какой

  6. 1 час назад, WaNted сказал:

    Вы можете нормально описать что в итоге Вам нужно? Зачем Вы трогаете запрос который относится к \IPS\nexus\Purchase::tree()? Покажите весь Ваш код (именно Ваш, а не весь класс целиком). Если все Ваши изменения находятся в классе IPS\nexus\Purchase\LicenseKey, то не нужно посылать никакие запросы, информация о покупке текущего ключа находится в переменной $this->purchase. Нужное Вам значение (ps_expire - ps_start) можно получить так: $this->purchase->expire - $this->purchase->start.

    Вот что мне надо "Из таблицы _nexus_purchases взять значение ps_expire - ps_start где в таблице xxxxxxx_nexus_licensekeys.lkey_purchase как xxxxxxx_nexus_purchases.ps_id"

    Выше я привел пример нужного мне запроса т.к. я не знаю как его составить.
    $this->purchase->expire - $this->purchase->start - не работают, а точнее в них пустые значения если я пытаюсь их использовать из метода save

    Я не понимаю какой именно код вы хотите увидеть.
     

    	public function save()
    	{
    		if ( !$this->key )
    	{
    		do
    		{
    			$this->key = $this->generate();
    		}
    		while ( \count( \IPS\Db::i()->select( '*', 'nexus_licensekeys', array( 'lkey_key=?', $this->key ) ) ) );
    
    
    
    		/* create external connect */
    		\IPS\Db::i(
    			'xxxxxxx_nexus_purchases', 
    			array(
    				'sql_host'      => '***',
    				'sql_user'      => '***',
    				'sql_pass'      => '***',
    				'sql_database'  => '***',
    			) 
    		);
    		$purchase = $this->get_purchase();
    
    		\IPS\Db::i('_nexus_purchases')->insert('_nexus_purchases', array( 
    	'ps_k' => $this->key,
    	'ps_a' => '1',
    	'Res' => $purchase->member->member_id,
    	'ps_time_k' => $this->purchase->expire, /* вот сюда не передаеться нужное мне значение */
    ));
    
    	}
    		return parent::save();
    	}

     

  7. Помогите пожалуйста переделать запрос так чтобы он брал 2 нужных мне значения из другой таблицы делал вычитание и присваивал результат в переменную

    \IPS\Db::i()->select( '*', 'nexus_purchases', $where, 'ps_start DESC', $limit ), 'IPS\nexus\Purchase' ) as $purchase )

    Из таблицы _nexus_purchases взять значение ps_expire - ps_start где в таблице xxxxxxx_nexus_licensekeys.lkey_purchase как xxxxxxx_nexus_purchases.ps_id

  8. 10 часов назад, siv1987 сказал:

    Да не в коде, а в переменной.  Где вы хотите получить, там и смотрите.

    $purchase->expire

    Если в том же месте где находится код для вставки в другую бд, то скорее всего так

    
    $purchase = $this->get_purchase();
    $purchase->expire;

     

     

    9 часов назад, WaNted сказал:

    Если так же в методе save(), то $this->purchase->expire

    Нет, не работает

  9. 15 минут назад, siv1987 сказал:

    В таблицу?

    
    \IPS\Db::i('remote_database_name')->insert('your_table', array( 
    	'license_key' => $this->key,
    	'field2' => 'value2', 
    	'field3' => 'value2', 
    ));

     

    И второй вопрос, как мне получить из другой таблицы форума количество оставшихся дней подписки?

    SELECT * FROM `_nexus_purchases`.`ps_expire` WHERE `ps_member` LIKE '$purchase->member->member_id'

    Только вот $purchase->member->member_id - не получает id пользователя

  10. 3 минуты назад, siv1987 сказал:

    Нет.
     

    
    	if ( !$this->key )
    	{
    		do
    		{
    			$this->key = $this->generate();
    		}
    		while ( \count( \IPS\Db::i()->select( '*', 'nexus_licensekeys', array( 'lkey_key=?', $this->key ) ) ) );
    
    		/* create external connect */
    		\IPS\Db::i(
    			'remote_database_name', 
    			array(
    				'sql_host'      => 'host',
    				'sql_user'      => 'user',
    				'sql_pass'      => 'pass',
    				'sql_database'  => 'database',
    			) 
    		);
    
    		\IPS\Db::i('remote_database_name')->insert('your_table', array('license_key' => $this->key));
    	}

     

    Великолепно, работает. Огромное спасибо!

  11. 3 минуты назад, siv1987 сказал:

    Выполнить запрос SHOW DATABASES в админцентр форума > Support > SQL Toolbox
    Или посмотреть в phpmyadmin
    image.thumb.png.7816a96761d34ce0b622623edf9b411d.png

    Screenshot_1.thumb.png.6e3f011769b0ea537f1150fcc53b939d.png
     

    Есть ли доступ у форума к базе данных в которую мне надо внести ключ? Нет нету. Соединение надо создать заново

    Вот так работать будет?
     

    public function save()
    	{
    	\IPS\Db::i(
        'remote_database_name', 
        array(
            'sql_host'      => 'host',
            'sql_user'      => 'user',
            'sql_pass'      => 'pass',
            'sql_database'      => 'database',
        ) 
    );
    		if ( !$this->key )
    		{
    			do
    			{
    				$this->key = $this->generate();
    			}
    			while ( \count( \IPS\Db::i()->select( '*', 'nexus_licensekeys', array( 'lkey_key=?', $this->key ) ) ) );
    			while ( \count( \IPS\Db::i('remote_database_name')->insert('you_table', array('license_key' => $this->key) ) ) );
    		}
    		return parent::save();
    	}