KEY SHOP WEB

Алиса

Участник
Сообщения
17
Реакции
2
У меня вышесказанная проблема. Все сделала по инструкции, оплачивала через интеркассу и через Я.Деньги. Письмо на почту не приходит, а сам ключ создается. Все перепроверила и делала неск.раз, ничего не приходит. При оплате через интеркассу выходит ошибка, что платеж уже оплачен или не сущ. А при оплате через Я.Деньги ошибку не выдает.
 

Вложения

  • InkedcJeUkWgN7IQ_LI.jpg
    InkedcJeUkWgN7IQ_LI.jpg
    22.4 КБ · Просмотры: 96

SAPSAN 隼

Не было б печали, если бы ключи мне дали!
Сообщения
820
Реакции
776
  • Автор ресурса
  • #44
У меня вышесказанная проблема. Все сделала по инструкции, оплачивала через интеркассу и через Я.Деньги. Письмо на почту не приходит, а сам ключ создается. Все перепроверила и делала неск.раз, ничего не приходит. При оплате через интеркассу выходит ошибка, что платеж уже оплачен или не сущ. А при оплате через Я.Деньги ошибку не выдает.
Ребят я сейчас в отъезде! как приеду всем помогу!
 

Алиса

Участник
Сообщения
17
Реакции
2
Может у кого была такая проблема, кто-то смог решить уже ее?
 

Svoboda

Помощь по CSS v92
Сообщения
393
Реакции
56
как добавить свою группу ? например мне надо добавить продажу RPG кредитов и уровней, как это сделать?
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
как добавить свою группу ? например мне надо добавить продажу RPG кредитов и уровней, как это сделать?
Сегодня могу написать мини туториал, того как это сделал.
@сапсан, в будующем будет добавлена возможность создавать свои типы без вмешательства в php,js,html код?
 

SAPSAN 隼

Не было б печали, если бы ключи мне дали!
Сообщения
820
Реакции
776
  • Автор ресурса
  • #48
Сегодня могу написать мини туториал, того как это сделал.
@сапсан, в будующем будет добавлена возможность создавать свои типы без вмешательства в php,js,html код?
Возможно, но не все понимают что куда вставлять Даже смотря уже видео инструкцию!
--- Добавлено позже ---
как добавить свою группу ? например мне надо добавить продажу RPG кредитов и уровней, как это сделать?
В обновлении добавлю все возможные ключи WCS и тд
 

Саша Шеин

Кому костылей?
Сообщения
1,697
Реакции
621
И так, обещал, пишу.

Задача:
- Добавить новые типы ключей на серверную часть;
- Добавить новые типы ключей в web-часть.

План:
- Написать небольшой модуль для Ядро плагина - [Keys] Core
- Понять как реализованы имеющиеся типы ключей в web-части
- Добавить необходимые части кода, для отображения и обработки новых типов ключей

От плана к действиям:
0) Для начала был сделан модуль для Ядро плагина - [Keys] Core , за основу просто взял готовый и переделал под свои нужды.
1) С первого взгляда все было плохо, но как оказалось не все так плохо :)
- Найти где прописаны имеющиеся типы ключей (Продажа привилегии, Продление привилегии, Продажа кредитов Shop) было не сложно. Они прописаны в файле:
/app/view/admin/vips.php - строки 142-144
PHP:
<option value="1" >Продажа привилегии</option>
<option value="2" >Продление привилегии</option>
<option value="3" >Продажа кредитов Shop</option>
- Стоит обратить внимание на value, т.к. его значение должно быть уникальным и числовым, в дальнейшем оно понадобится
- Далее необходимо найти обработку выбора типа ключа, чтобы не нужные поля скрывались, а другие переименовывались. Она находится в этом же файле, чуть ниже на строках 193-209:
PHP:
<script type="text/javascript">
function setTypуKey(){
 var typKey = $('#typeKey').val();
 if(typKey == 1){
  $('#idGr').attr({style:'display:block;'});
  $('#lable').html('Срок');
 }
 else if(typKey == 2){
  $('#idGr').attr({style:'display:none;'});
  $('#lable').html('На сколько продлить дней');
 }
 else if(typKey == 3){
  $('#idGr').attr({style:'display:none;'});
  $('#lable').html('Количество кредитов');
 }
}
</script>
- Остается найти где обрабатывается значение этого поля в PHP коде. Нужный код имеется в файлах:
/app/mod/Admin.php - строки 409, 457, 517-556
/app/mod/Main.php - строки 87-90,92-94

/app/mod/Admin.php:
PHP:
if(empty($post['editcfgNameGroup']) && $group[0]['key_type'] != 3 && $group[0]['key_type'] != 2)
 $this->message('Укажите наименование привилегии как в groups.ini.','err');
PHP:
if(empty($post['editcfgNameGroup']) && $group[0]['key_type'] != 3 && $group[0]['key_type'] != 2)
 $this->message('Укажите наименование привилегии как в groups.ini.','err');
PHP:
case 1:
if(!empty($post['time'])){
    if(!preg_match('/^[\d-;]+$/i', $post['time']))
        $this->message('Не верно введен срок.Если несколько то через ";". Пример: 7;30;0','err');
    $this->time = $post['time'];
}else $this->time = 0;
if(empty($post['price']))
    $this->message('Укажите стоимость. Если несколько то через ";". Пример: 10;20;100;1000','err');
$CountTime = COUNT(explode(';',$this->time));
$CountPrice = COUNT(explode(';',$post['price']));
if($CountTime != $CountPrice)
    $this->message('Указанное количество срока не равно указанному количеству суммы!','err');
$this->type = 'vip_add';
break;
case 2:
if(!empty($post['time'])){
    if(!preg_match('/^[\d-;]+$/i', $post['time']))
        $this->message('Не верно введен срок.Если несколько то через ";". Пример: 7;30;0','err');
    $this->time = $post['time'];
}else $this->time = 0;
if(empty($post['price']))
    $this->message('Укажите стоимость. Если несколько то через ";". Пример: 10;20;100;1000','err');
$CountTime = COUNT(explode(';',$this->time));
$CountPrice = COUNT(explode(';',$post['price']));
if($CountTime != $CountPrice)
    $this->message('Указанное количество срока не равно указанному количеству суммы!','err');
$this->type = 'vip_exp';
break;
case 3:
if(empty($post['time']))
    $this->message('Укажите количество кредитов. Если несколько то через ";". Пример: 100;1000;5000;100000','err');
$this->time = $post['time'];
if(empty($post['price']))
    $this->message('Укажите стоимость кредитов. Если несколько то через ";". Пример: 1;10;50;100','err');
$CountTime = COUNT(explode(';',$this->time));
$CountPrice = COUNT(explode(';',$post['price']));
if($CountTime != $CountPrice)
    $this->message('Указанное количество срока не равно указанному количеству суммы!','err');
$this->type = 'shop_credits';
break;

/app/mod/Main.php:
PHP:
if($name[0]['key_type'] == 3)
    $pr2[] = '<option value="'.$skey.'">'.$this->Credits($time).'  <b style="float:right">[ цена: '.$summ.' ]</b></option>';
else
    $pr2[] = '<option value="'.$skey.'">'.$this->getTime($time).' <b style="float:right">[ цена: '.$summ.' ]</b></option>';
PHP:
if($name[0]['key_type'] == 3)
    $pr4 = '<option disabled selected>Выберите количество кредитов</option>';
else $pr4 = '<option disabled selected>Выберите срок</option>';
В /app/mod/Main.php мне еще понадобилось добавить новую функцию, по типу Credits:
PHP:
protected function Credits($count){
    $abs = abs($count) % 100;
    if ($abs > 19) {
        $abs = $count % 10;
    }
    switch ($abs) {
        case 1: {
            return($count.' кредит');
        }
        case 2: case 3: case 4: {
            return($count.' кредита');
        }
        default: {
            return($count.' кредитов');
        }
    }
}
2) Все, все необходимые части кода нашлись, теперь необходимо добавить свое.
- Начнем с файла vips.php (Оффтоп). Дублируем необходимое количество строк, мне необходимо еще 2 типа. Вот что получается:
PHP:
<option value="1" >Продажа привилегии</option>
<option value="2" >Продление привилегии</option>
<option value="3" >Продажа кредитов Shop</option>
<option value="4" >Продажа кредитов rpg</option>
<option value="5" >Продажа уровней rpg</option>
Стоит заметить, что value у всех свой, это важно!
- Еще необходимо скрыть не нужное и переименовать нужное поле, это делает js код. И вот уже здесь необходим тот самый value. И так, я добавил 2 поля Кредитов и уровней, поэтому поле "Наименование группы из group.ini" мне не нужно, а поле "Срок" должно иметь другое название. Вот что получилось:
PHP:
<script type="text/javascript">
function setTypуKey(){
 var typKey = $('#typeKey').val();
 if(typKey == 1){
  $('#idGr').attr({style:'display:block;'});
  $('#lable').html('Срок');
 }
 else if(typKey == 2){
  $('#idGr').attr({style:'display:none;'});
  $('#lable').html('На сколько продлить дней');
 }
 else if(typKey == 3){
  $('#idGr').attr({style:'display:none;'});
  $('#lable').html('Количество кредитов');
 }
 else if(typKey == 4){ /* RPG Кредиты, value="4" */
  $('#idGr').attr({style:'display:none;'});// Скрываем поле "Наименование группы из group.ini"
  $('#lable').html('Количество кредитов'); // Меняем текст в поле "Срок"
 }
 else if(typKey == 5){ /* RPG Уровни, value="5" */
  $('#idGr').attr({style:'display:none;'});// Скрываем поле "Наименование группы из group.ini"
  $('#lable').html('Количество уровней');  // Меняем текст в поле "Срок"
 }
}
</script>
- Теперь можно посмотреть результат:
upload_2018-8-15_14-4-35.pngupload_2018-8-15_14-5-13.png

3) Все работает отлично, переходим к PHP коду, тут сложнее.
- Начнем с файла Admins.php. В нем есть два блока, которые необходимо отредактировать.
Первый, т.к. я добавил 2 новых типа, и в них мне не нужно поле с названием группы VIP, то мне необходимо отключить его проверку и в PHP коде, это уже сделано для типов 2 и 3. Вот что у меня получилось:
PHP:
elseif(empty($post['cfgNameGroup']) && $post['typeKey'] == 1) // Строки 409 и 457
 $this->message('Укажите наименование привилегии как в groups.ini.','err');
Я сделал так, т.к. это нужно только для типа 1.

- Теперь более сложная часть этого файла, необходимо добавить обработку новых типов в функцию typePrivige($post) . Находим блок case 3: .... break; На его примере будут сделаны блоки для двух новых типов, стоит обратить внимание на строку
$this->type = 'shop_credits';
Вместо shop_credits должно быть wcs_gold / wcs_bank_lvl или другой тип указанный в при создании модуля. У меня это rpg_credits и rpg_levels. Просто продублировав блок case 3: .. break; и изменив shop_credits на свое значение, мы завершаем работу с этим файлом. Значение после case необходимо изменить на указанное ранее в value.
upload_2018-8-15_14-26-41.png
Вот код, который я получил при изменении функции typePrivige($post):
PHP:
protected function typePrivige($post){
 switch ($post['typeKey']){
 case 1:
  if(!empty($post['time'])){
   if(!preg_match('/^[\d-;]+$/i', $post['time']))
   $this->message('Не верно введен срок.Если несколько то через ";". Пример: 7;30;0','err');
   $this->time = $post['time'];
  }else $this->time = 0;
  if(empty($post['price']))
   $this->message('Укажите стоимость. Если несколько то через ";". Пример: 10;20;100;1000','err');
  $CountTime = COUNT(explode(';',$this->time));
  $CountPrice = COUNT(explode(';',$post['price']));
  if($CountTime != $CountPrice)
   $this->message('Указанное количество срока не равно указанному количеству суммы!','err');
  $this->type = 'vip_add';
  break;
 case 2:
  if(!empty($post['time'])){
   if(!preg_match('/^[\d-;]+$/i', $post['time']))
    $this->message('Не верно введен срок.Если несколько то через ";". Пример: 7;30;0','err');
    $this->time = $post['time'];
   }else $this->time = 0;
   if(empty($post['price']))
    $this->message('Укажите стоимость. Если несколько то через ";". Пример: 10;20;100;1000','err');
   $CountTime = COUNT(explode(';',$this->time));
   $CountPrice = COUNT(explode(';',$post['price']));
   if($CountTime != $CountPrice)
    $this->message('Указанное количество срока не равно указанному количеству суммы!','err');
   $this->type = 'vip_exp';
  break;
 case 3:
  if(empty($post['time']))
   $this->message('Укажите количество кредитов. Если несколько то через ";". Пример: 100;1000;5000;100000','err');
  $this->time = $post['time'];
  if(empty($post['price']))
   $this->message('Укажите стоимость кредитов. Если несколько то через ";". Пример: 1;10;50;100','err');
  $CountTime = COUNT(explode(';',$this->time));
  $CountPrice = COUNT(explode(';',$post['price']));
  if($CountTime != $CountPrice)
   $this->message('Указанное количество срока не равно указанному количеству суммы!','err');
  $this->type = 'shop_credits';
  break;
 case 4: /* rpg_credits */
  if(empty($post['time']))
   $this->message('Укажите количество кредитов. Если несколько то через ";". Пример: 100;1000;5000;100000','err');
  $this->time = $post['time'];
  if(empty($post['price']))
   $this->message('Укажите стоимость кредитов. Если несколько то через ";". Пример: 1;10;50;100','err');
  $CountTime = COUNT(explode(';',$this->time));
  $CountPrice = COUNT(explode(';',$post['price']));
  if($CountTime != $CountPrice)
   $this->message('Указанное количество срока не равно указанному количеству суммы!','err');
  $this->type = 'rpg_credits'; // Изменен на свое значение!
  break;
 case 5: /* rpg_levels */
  if(empty($post['time']))
   $this->message('Укажите количество уровней. Если несколько то через ";". Пример: 100;1000;5000;100000','err');
  $this->time = $post['time'];
  if(empty($post['price']))
   $this->message('Укажите стоимость уровней. Если несколько то через ";". Пример: 1;10;50;100','err');
  $CountTime = COUNT(explode(';',$this->time));
  $CountPrice = COUNT(explode(';',$post['price']));
  if($CountTime != $CountPrice)
   $this->message('Указанное количество срока не равно указанному количеству суммы!','err');
  $this->type = 'rpg_levels'; // Изменен на свое значение!
  break;
 default: $this->message('Ошибка', 'err');break;
 }
}

4) Остался последний файл - Main.php. В нем необходимо изменить всего пару строк.
- Т.к. я добавлял 2 типа, это кредиты и уровни, то мне необходимо сделать чтобы тип 4 при покупке выводился как кредиты, для этого необходимо изменить условие на 87 и 92 строках, чтобы было так:
PHP:
if($name[0]['key_type'] == 3 or $name[0]['key_type'] == 4)
Остается тип 5 - уровни. Для них придется добавить новое условие:
PHP:
else if($name[0]['key_type'] == 5)
 $pr2[] = '<option value="'.$skey.'">'.$this->Levels($time).'  <b style="float:right">[ цена: '.$summ.' ]</b></option>';
И новую функцию Levels($time). Функцию Levels можно сделать на основе функции Credits, поэтому дублируем функции Credits, меняем название и текст, получаем такой код:
PHP:
protected function Levels($count){
 $abs = abs($count) % 100;
 if ($abs > 19) {
  $abs = $count % 10;
 }
 switch ($abs) {
  case 1: {
   return($count.' уровоень');
  }
  case 2: case 3: case 4: {
   return($count.' уровня');
  }
  default: {
   return($count.' уровней');
  }
 }
}

5) На этом все, можно идти проверять.
upload_2018-8-15_14-50-1.png

Первый раз взаимодействовал с данным web, возможно что-то упустил, думаю автор меня поправит, если что-то не так.

Всем удачи, и хорошего онлайна!:ab:
--- Добавлено позже ---
Так же прикреплю получившиеся файлы.
 

Вложения

  • app.zip
    12.6 КБ · Просмотры: 24
Последнее редактирование:

Алиса

Участник
Сообщения
17
Реакции
2
У кого-нибудь получилось решить эту проблемку?
 

Вложения

  • InkedcJeUkWgN7IQ_LI.jpg
    InkedcJeUkWgN7IQ_LI.jpg
    22.4 КБ · Просмотры: 132

Алиса

Участник
Сообщения
17
Реакции
2
@сапсан, ты указал в требования версию php 5.4, а с этой версией сообщения на почту не отправляются, только с версией выше (от 5.5). Можно как-то исправить эту проблему?
 

Munoon

Участник
Сообщения
200
Реакции
26
Привет! Отличный веб модуль, только хотелось бы заменить логотип "KeyShop". Попробовал поменять картинку в pub/img/logo; logo1, но по какой-то причине лого не меняется. Подскажешь что с этим делать?
 

Planes

Потерявшиеся точка с запятой
Сообщения
356
Реакции
97
@Munoon, Вероятно браузер просто не сбросил кэш. Это самая бесячая проблема) Попробуй нажать CTRL+F5 для обновления страницы со сбросом кэша
 

rustaveli

Участник
Сообщения
155
Реакции
26
@сапсан, добрый день,вы сказали что поможете решить проблему тем у кого версия php 5.4 (при покупке не отправляются письма на указанный мэил) от вас ждать вестей ?
 

Туник

Участник
Сообщения
1,281
Реакции
263
@сапсан, ты поможешь решить проблему с робокассой?
--- Добавлено позже ---
Люди поделитесь таблицей по генерации ключей, у меня её вообще нет, написали сами но не правильно!
 
Последнее редактирование:

SAPSAN 隼

Не было б печали, если бы ключи мне дали!
Сообщения
820
Реакции
776
  • Автор ресурса
  • #58
Пользователь сапсан обновил ресурс KeyShop WEB новой записью:

Небольшие корректировки

Небольшие корректировки
Смена класса SMTP отправки почты.

Узнать больше об этом обновлении...
--- Добавлено позже ---
@сапсан, добрый день,вы сказали что поможете решить проблему тем у кого версия php 5.4 (при покупке не отправляются письма на указанный мэил) от вас ждать вестей ?
up
--- Добавлено позже ---
Я думаю нужно выбрать способы оплаты и включить их в самой интеркассе!А возможно получить одобрение от сервиса!
 

rustaveli

Участник
Сообщения
155
Реакции
26
Пользователь сапсан обновил ресурс KeyShop WEB новой записью:

Небольшие корректировки



Узнать больше об этом обновлении...
--- Добавлено позже ---

up
--- Добавлено позже ---

Я думаю нужно выбрать способы оплаты и включить их в самой интеркассе!А возможно получить одобрение от сервиса!
добрый день,в админ панели в настройках нужно что то менять ,обновил все файлы,но письмо на почту так и не идёт ,зараза,и нужно ли по новой импортировать sql запрос в базу данных ?
 
Последнее редактирование:

SAPSAN 隼

Не было б печали, если бы ключи мне дали!
Сообщения
820
Реакции
776
  • Автор ресурса
  • #60
добрый день,в админ панели в настройках нужно что то менять ,обновил все файлы,но письмо на почту так и не идёт ,зараза,и нужно ли по новой импортировать sql запрос в базу данных ?
нет ни чего не нужно менять сменился только класс на оправку почты! Смотрите логи что пишет
 
Сверху Снизу