Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
1 / 1 / 0
Регистрация: 08.05.2017
Сообщений: 53

Система списание счета

11.05.2017, 00:52. Показов 3636. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, помогите реализовать функцию на PHP, у меня на балансе 500р надо сделать так что-бы у пользователя отнимало 5р при клике на кнопку. БД на скрине, как можно это реализовать. У меня реализованная система оплаты товара но мне надо что-бы уже все было записано в коде просто нажал на кнопку и с баланса перевело деньги администратору. И не нужно было создавать товар, указывать цену, название и добавлять в корзину а с корзины уже оплачивать как в данный момент в плагине реализовано.(если надо могу предоставить код, как сделано на данный момент). Пожалуйста помогите.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.05.2017, 00:52
Ответы с готовыми решениями:

Пополнение счета,после каждого обновления страницы добавляются просто так средства без оплаты никакого счета
<?php /// db_payeer_insert if(isset($_POST)){ $sum = round(floatval($_POST),2); if($sum > $mini){ $da =...

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

Система по счёта очков
Всем здрасти!! Делаю игру мач 3 .Возникла задача которую не могу додумать.Может есть у кого идеи. Дело в том что когда лвл уже...

20
35 / 35 / 11
Регистрация: 17.03.2017
Сообщений: 250
11.05.2017, 10:52
user_balance вытаскивайте из базы, и его текущее значение отнимайте от 5 после нажатия кнопки

и потом обновляйте таблицу
1
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
11.05.2017, 11:23
Лучший ответ Сообщение было отмечено dmitrygrinevic как решение

Решение

PHP
1
2
3
4
5
6
7
8
9
10
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
/*
Plugin Name: Oplati-5-r (osnovano na Rikki's WP Social Icons)
Plugin URI: http://rikkimongoose.ru/projects/rikkis-wp-social-icons/
Description: Insert social icons to your Wordpress posts.
Version: 1.1.1
Author: Rikki Mongoose
Author URI: http://github.com/rikkimongoose/
Example: [oplati5r]8[/oplati5r]
*/
/*  Copyright 2012  Rikki Mongoose  (email : alexander.a.teut@gmail.com)
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/
class oplati5r
{
    var $options = array(
        "zashchita" => "JU69Bni6um"
    );
    function oplati5r(){
        if (!function_exists ('add_shortcode') ) return;
        add_shortcode('oplati5r', array (&$this, 'pay_func') );
    }
    function pay_func($atts, $summa=5) {
        if ($summa<=0)
            return '';
        $user = wp_get_current_user();
        $uid = ( isset( $user->ID ) ? (int) $user->ID : 0 );
        if (isset($_POST['kodovoe_slovo'])) {
            if (!$uid) $html = '<span style="color:red">Вы не авторизованы для оплаты</span>';
            elseif  ($_POST['kodovoe_slovo']!=md5($uid.$summa.$options['zashchita'])) $html = '<span style="color:red">Ошибка отправки формы</span>';
            else {
                global $wpdb;   
                $balans = $wpdb->get_var("SELECT user_balance FROM wp_rmag_users_balance WHERE user_id = '".$uid."' ");
                if ($balans<$summa) $html = '<span style="color:red">У вас недостаточно средств ('.$balans.')</span>';
                else {
                    $wpdb->query("UPDATE wp_rmag_users_balance SET user_balance = ".( floatval($balans)-floatval($summa) )." WHERE user_id = '".$uid."' ");
                    $to = get_bloginfo('admin_email');
                            $subject = 'oplata 5 rubley';
                            $message = "Пользователь с логином " .$user->user_login . " оплатил ".$summa." с баланса ".$balans. 
                            "<br>Код проверки платежа RAzc329mYD";
                            wp_mail( $to, $subject, $message);
                    $html = '<span style="color:green">Оплата принята</span>';
                }
            }
        }
        return $html.'<form action="" method="post">
        <input type="hidden" name="kodovoe_slovo" value="'.md5($uid.$summa.$options['zashchita']).'">
        <input type="submit" value="Оплатить '.$summa.' руб">
        </form>';
    }
}
$oplati5r = new oplati5r();
?>
Выделите код, скопируйте в файл с именем oplati-5-r.php, измените код защиты JU69Bni6um и код проверки платежа RAzc329mYD, упакуйте файл в zip архив, установите полученный плагин
1
1 / 1 / 0
Регистрация: 08.05.2017
Сообщений: 53
11.05.2017, 16:38  [ТС]
А где брать эти кода ?
0
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
11.05.2017, 17:31
Эти коды брать в массиве $options
После установки плагина тоже можно вносить изменения (Админка - Plugins - Editor)
Если придумать код сложно, можно использовать генератор паролей https://addons.mozilla.org/RU/... generator/

PHP
1
2
3
4
5
6
7
8
9
10
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
/*
Plugin Name: Oplati-5-r (osnovano na Rikki's WP Social Icons)
Plugin URI: http://rikkimongoose.ru/projects/rikkis-wp-social-icons/
Description: Insert social icons to your Wordpress posts.
Version: 1.1.1
Author: Rikki Mongoose
Author URI: http://github.com/rikkimongoose/
Example: [oplati5r]8[/oplati5r]
*/
class oplati5r
{
    var $options = array(
        "zashchita" => "JU69Bni6um",
        "kod_proverki_platezha"=>"RAzc329mYD"
    );
    function oplati5r(){
        if (!function_exists ('add_shortcode') ) return;
        add_shortcode('oplati5r', array (&$this, 'pay_func') );
    }
    function pay_func($atts, $summa=5) {
        if ($summa<=0) return '';
        $user = wp_get_current_user();
        $uid = ( isset( $user->ID ) ? (int) $user->ID : 0 );
        if (isset($_POST['kodovoe_slovo'])) {
            if (!$uid) $html = '<span style="color:red">Вы не авторизованы для оплаты</span>';
            elseif  ($_POST['kodovoe_slovo']!=md5($uid.$summa.$this->options['zashchita'])) $html = '<span style="color:red">Ошибка отправки формы</span>';
            else {
                global $wpdb;   
                $balans = $wpdb->get_var("SELECT user_balance FROM wp_rmag_users_balance WHERE user_id = '".$uid."' ");
                if ($balans<$summa) $html = '<span style="color:red">У вас недостаточно средств ('.$balans.')</span>';
                else {
                    $wpdb->query("UPDATE wp_rmag_users_balance SET user_balance = ".( floatval($balans)-floatval($summa) )." WHERE user_id = '".$uid."' ");
                    $to = get_bloginfo('admin_email');
                            $subject = 'oplata 5 rubley';
                            $message = "Пользователь с логином " .$user->user_login . " оплатил ".$summa." с баланса ".$balans. 
                            "<br>Код проверки платежа ".$this->options['kod_proverki_platezha']."";
                            wp_mail( $to, $subject, $message);
                    $html = '<span style="color:green">Оплата принята</span>';
                }
            }
        }
        return $html.'<form action="" method="post">
        <input type="hidden" name="kodovoe_slovo" value="'.md5($uid.$summa.$this->options['zashchita']).'">
        <input type="submit" value="Оплатить '.$summa.' руб">
        </form>';
    }
}
$oplati5r = new oplati5r();
?>
1
1 / 1 / 0
Регистрация: 08.05.2017
Сообщений: 53
11.05.2017, 19:15  [ТС]
А можешь сказать для чего он нужен этот код ?
0
1 / 1 / 0
Регистрация: 08.05.2017
Сообщений: 53
11.05.2017, 20:49  [ТС]
И еще устанавливаю плагин а тут ошибка.
0
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
11.05.2017, 20:56
После списания с баланса отправляется письмо администратору с кодом.
По коду видно, что письмо действительно от скрипта, а не от хакера, желающего получить товар даром.
Архив должен быть в формате zip.
1
1 / 1 / 0
Регистрация: 08.05.2017
Сообщений: 53
11.05.2017, 21:19  [ТС]
Спасибо загрузил, а как теперь использовать его ? Что-то не понял не вижу никакой кнопки или что-то типа того.
0
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
11.05.2017, 21:23
Лучший ответ Сообщение было отмечено dmitrygrinevic как решение

Решение

В любом посте или странице вставить код
HTML5
1
[oplati5r]8[/oplati5r]
число 8 - сумма платежа в данном примере
1
1 / 1 / 0
Регистрация: 08.05.2017
Сообщений: 53
11.05.2017, 21:39  [ТС]
Спасибо, вы очень помогли.
1
0 / 0 / 0
Регистрация: 20.02.2017
Сообщений: 14
14.05.2017, 21:11
Люди добрые, помогите с этой же задачей. Мне нужно эту кнопку-шоркткод встроить в form action. То есть я имею такой код
PHP
1
2
3
4
5
6
<form action="action.php" method="POST">
<br/><input type="radio" name="answer" value="a1">Кнопка один
<br/><input type="radio" name="answer" value="a2">Кнопка два
<br/><input type="text" name="login" style="width:400px;" value="Значение по умолчанию">
<br/><input type="submit" value="OK">
</form>

Если я вместо
PHP
1
<input type="submit" value="OK">
вставляю
PHP
1
<?php echo do_shortcode( '[oplati5r]8[/oplati5r]' ); ?>
то кнопка появляется но она становится "дырявой", то есть не проверяет есть ли на балансе пользователя деньги и сразу начинается исполнение скрипта action.php.
Что делать ? Помогите плиз !
0
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
14.05.2017, 21:29
Можно добавить в плагин дополнительные поля (answer, login)

PHP
1
2
3
4
5
6
7
8
9
10
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
/*
Plugin Name: Oplati-5-r (osnovano na Rikki's WP Social Icons)
Plugin URI: http://rikkimongoose.ru/projects/rikkis-wp-social-icons/
Description: Insert social icons to your Wordpress posts.
Version: 1.1.1
Author: Rikki Mongoose
Author URI: http://github.com/rikkimongoose/
Example: [oplati5r]8[/oplati5r]
*/
class oplati5r
{
    var $options = array(
        "zashchita" => "JU69Bni6um",
        "kod_proverki_platezha"=>"RAzc329mYD"
    );
    function oplati5r(){
        if (!function_exists ('add_shortcode') ) return;
        add_shortcode('oplati5r', array (&$this, 'pay_func') );
    }
    function pay_func($atts, $summa=5) {
        if ($summa<=0) return '';
        $user = wp_get_current_user();
        $uid = ( isset( $user->ID ) ? (int) $user->ID : 0 );
        if (isset($_POST['kodovoe_slovo'])) {
            if (!$uid) $html = '<span style="color:red">Вы не авторизованы для оплаты</span>';
            elseif  ($_POST['kodovoe_slovo']!=md5($uid.$summa.$this->options['zashchita'])) $html = '<span style="color:red">Ошибка отправки формы</span>';
            else {
                global $wpdb;   
                $balans = $wpdb->get_var("SELECT user_balance FROM wp_rmag_users_balance WHERE user_id = '".$uid."' ");
                if ($balans<$summa) $html = '<span style="color:red">У вас недостаточно средств ('.$balans.')</span>';
                else {
                    $wpdb->query("UPDATE wp_rmag_users_balance SET user_balance = ".( floatval($balans)-floatval($summa) )." WHERE user_id = '".$uid."' ");
                    $to = get_bloginfo('admin_email');
                            $subject = 'oplata 5 rubley (answer = '.$_POST['answer'].', login='.$_POST['login'].')';
                            $message = "Пользователь с логином " .$user->user_login . " оплатил ".$summa." с баланса ".$balans. 
                            "<br>Код проверки платежа ".$this->options['kod_proverki_platezha']."";
                            wp_mail( $to, $subject, $message);
                    $html = '<span style="color:green">Оплата принята</span>';
                }
            }
        }
        return $html.'<form action="" method="post">
        <input type="hidden" name="kodovoe_slovo" value="'.md5($uid.$summa.$this->options['zashchita']).'">
        <br/><input type="radio" name="answer" value="a1">Кнопка один
        <br/><input type="radio" name="answer" value="a2">Кнопка два
        <br/><input type="text" name="login" style="width:400px;" value="Значение по умолчанию">
        <input type="submit" value="Оплатить '.$summa.' руб">
        </form>';
    }
}
$oplati5r = new oplati5r();
?>
0
0 / 0 / 0
Регистрация: 20.02.2017
Сообщений: 14
14.05.2017, 21:48
Так а что эти поля дадут ? Ведь получается что отправка скрипта работает этой кнопкой но сама оплата уже не происходит. Хотя кнопка сама "подтягивается из плагина" но ничего уже не списывет и не проверяет наличие баланса у пользователя
0
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
15.05.2017, 07:14
Можно не использовать плагин, а добавить обработчик в имеющуюся форму
HTML5
1
2
3
4
5
6
<form action="action.php" method="POST">
<br/><input type="radio" name="answer" value="a1">Кнопка один
<br/><input type="radio" name="answer" value="a2">Кнопка два
<br/><input type="text" name="login" style="width:400px;" value="Значение по умолчанию">
<br/><input type="submit" value="Оплатить 8 рублей">
</form>
затем добавить приём платежа в имеющийся обработчик формы
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$user = wp_get_current_user();
        $uid = ( isset( $user->ID ) ? (int) $user->ID : 0 );
         if (!$uid) $html = '<span style="color:red">Вы не авторизованы для оплаты</span>';
         else {
                global $wpdb;   
                $balans = $wpdb->get_var("SELECT user_balance FROM wp_rmag_users_balance WHERE user_id = '".$uid."' ");
                if ($balans<$summa) $html = '<span style="color:red">У вас недостаточно средств ('.$balans.')</span>';
                else {
                    $wpdb->query("UPDATE wp_rmag_users_balance SET user_balance = ".( floatval($balans)-floatval($summa) )." WHERE user_id = '".$uid."' ");
                    $to = get_bloginfo('admin_email');
                            $subject = 'oplata 5 rubley';
                            $message = "Пользователь с логином " .$user->user_login . " оплатил ".$summa." с баланса ".$balans. 
                            "<br>Код проверки платежа ".$this->options['kod_proverki_platezha']."";
                            wp_mail( $to, $subject, $message);
                    $html = '<span style="color:green">Оплата принята</span>';
/* здесь обработка формы */
                }
            }
0
0 / 0 / 0
Регистрация: 20.02.2017
Сообщений: 14
15.05.2017, 08:48
Но тогда оно выбивает ошибку в коде "Ошибка синтаксиса"
http://gifok.net/images/2017/05/15/121.png
0
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
15.05.2017, 09:00
Сначала нужно найти обработчик формы, это php код, который получает данные $_POST['answer'], $_POST['login']

HTML код приведёный выше не является обработчиком формы
0
0 / 0 / 0
Регистрация: 20.02.2017
Сообщений: 14
15.05.2017, 09:23
Это для меня будет сложновато и я решил пойти более простым путём. Я добавил проверку баланса на страницу с кнопкой оплаты
PHP
1
2
3
4
5
6
7
8
<?php 
$balance = rcl_get_user_balance($user_id);
if($balance>100){
    echo $balance.' USD на вашем счету. Можете генерировать ниже форму и оплачивать'; 
} else {
     echo '<meta http-equiv="refresh" content="0;URL=/oplata">';    
}
 ?>

Но как теперь списать с пользователя сумму ?
0
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
15.05.2017, 10:07
PHP
1
2
3
4
5
6
7
<?php
$balance = rcl_get_user_balance($user_id);
if($balance>100){
global $wpdb;
$wpdb->query("UPDATE wp_rmag_users_balance SET user_balance = ".( floatval($balance)-100 )." WHERE user_id = '".$user_id."' ");
}
?>
0
0 / 0 / 0
Регистрация: 20.02.2017
Сообщений: 14
15.05.2017, 10:52
Большое спасибо за ответы, НО у меня вылетает HTTP ERROR 500
Я вставляю списание с баланса в начало своего action.php который начинает выглядеть так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
$balance = rcl_get_user_balance($user_id);
if($balance>100){
global $wpdb;
$wpdb->query("UPDATE wp_rmag_users_balance SET user_balance = ".( floatval($balance)-100 )." WHERE user_id = '".$user_id."' ");
}
 
require 'vendor/autoload.php';
 
foreach($_POST as $val){
    if($val == 'on'){
        $str[]='x';
    } else {
     $str[]=filter_var($val,FILTER_SANITIZE_STRING);
    }
}
 
$file = "pdf/".uniqid().".pdf";
 
$pdf = ZendPdf\PdfDocument::load('hello.pdf');
$page = $pdf->pages[0];
$font = ZendPdf\Font::FontWithPath('times.ttf');
$page->setFont($font, 12);
$page->drawText($str[0], 50, 625.5,'UTF-8');
$page->drawText($str[1], 387, 625.5,'UTF-8');
$page->drawText($str[2], 50, 595.5,'UTF-8');
$page->drawText($str[3], 287, 595.5,'UTF-8');
$page->drawText($str[4], 452, 595.5,'UTF-8');
$page->drawText($str[5], 88.7, 360,'UTF-8');
$page->drawText($str[6], 243, 490,'UTF-8');
 
$pdf->save($file);
header("Location: $file");
Ошибок синтаксиса вроде нет но почему тогда вылетает при попытке выполнить action.php
"Страница недоступна

Сайт cv86736.tmweb.ru пока не может обработать этот запрос.
HTTP ERROR 500"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.05.2017, 10:52
Помогаю со студенческими работами здесь

Октальная и Хексадецимальная система счёта
Здравствуйте, у меня есть задание, которое я бы хотел попросить помочь зделать. Задание: Написать программу, каторая печатает числа от...

Система быстрого счета Трахтенберга
Нужна помощь в освоении системы быстрого счета Трахтенберга. Сам принцип мне понятен вплоть до чисел ниже 20 Есть число 15 987*78 ...

Система пополнения счета, проверка номера на корректность
Уважаемые пользователи сайта!!! Прошу вашей помощи. У нас по Visual Basic лабораторная, у меня предметная область-система пополнения...

Система для пополнения счета/вывода средств
Доброе время суток! Вкратце: Пользователь пополняет личный счет на сайте через банковскую карту или через кредитную. За определенные...

Интерфейс: Реализовать операции с банковским счетом (баланс счета, снятие средств, пополнение счета)...
Здравствуйте! Подскажите, как доделать код :-| Задача такая: дан интерфейс, необходимо сделать так, чтобы можно было получить информацию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru