Здравствуйте, есть сайт написанный на Java, необходимо внести ряд доработок, таких как изменение плеера с возможностью выбора качества изображения и прочих, обсудим с исполнителем.
Разбор текста на параметры PHP
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.
У нас реализована отправка смс на наш сервер где мы получаем содержимое СМС
Нужно отфильтровать смс на содержимое и если оно соответствует то выполнять к примеру 1+1
Вот пример текста: Пополнение, счет RUB. 1000 RUB. Ирина К. Доступно 1000.00 RUB
Цель того что необходимо:
У нас есть таблица invoice
В ней есть 2 важных колонки это ammout - (сумма) и operation_id - (номер транзакции)
В смс есть сумма - ammout и комментарий - operation_id если есть соответствие то выполняем код (к примеру 1+1) код мы сами укажем какой выполнять.
Вот пример статьи и ее содержимое https://htmlweb.ru/php/example/priem_oplati.php
Вам остается разобрать с помощью регулярного выражения полученные сообщения и произвести начисления:
if($_REQUEST['from']=='900' && $_REQUEST['type']==9 && preg_match('/Сбербанк Онлайн.* перевел(а) Вам ([\d\.]+) RUB. Сообщение: "([^\"]*)"/i',$_REQUEST['message'],$ar)){ // начисляете $ar[1] рублей пользователю по его идентификатору $ar[2] }
Для безопасности используйте подпись запросов. Для этого в профиле укажите некую случайную последовательность. Если она задана то в callBackUrl будет добавлен параметр sign, в конце всех отсортированных параметров от которых формируется md5.
define('HTMLWEB_SIGN','ВАША_СЕКРЕТНАЯ_СТРОКА');
if(empty($_REQUEST['sign']))die('Не переданна подпись, - это хакер!');
$param=$_REQUEST;
unset($param['sign']);
ksort($param);
if($_REQUEST['sign']!=md5(implode('',$param).HTMLWEB_SIGN))die('Ошибка подписи, - это хакер!');
Регулярные выражения для разбора сообщений от Сбербанка:
К сожалению, Сбербанк достаточно часто меняет формат своих СМС сообщений. Список актуальных шаблонов:
<?php
// Перевод 350р от ВИКТОРИЯ ЕВГЕНЬЕВНА Ф.\nСообщение: "5629"
define('SB_PARSE_TEMPLATE_1', '/(?:перевел|Перевод)[^\d]+([\d\.]+)[^\d]+ от .+Сообщение:\s*(?:\"|\”|")(.+)(?:\"|\”|")/iu');
// VISA6385: 22:30 зачисление 30р от отправителя ЮЛИЯ ЮРЬЕВНА Г. Сообщение: ”38638”
define('SB_PARSE_TEMPLATE_2', '/(VISA|ECMC|MAES)(\d{4})\:?\s+.*(?:перевод|зачисление|перевел)\s+([\d\.]+).+Сообщение:\s*(?:\"|\”|")(.+)(?:\"|\”|")$/ui');
//VISA9213 12.02.18 08:47 зачисление 450р Баланс: 17809.50р
define('SB_PARSE_TEMPLATE_3', '/(VISA|ECMC|MAES)(\d{4})\:?\s+.*(?:перевод|зачисление|перевел)\s+([\d\.]+)[^\d].*(?:Баланс|Остаток)\:?\s+([\d\.]+)[^d]/ui');
//VISA9699 09:06 перевод 350.00р от АЛЛА ВАЛЕРЬЕВНА Т.\\nБаланс: 50335.39р\\nСообщение: "29462"
define('SB_PARSE_TEMPLATE_4', '/(VISA|ECMC|MAES)(\d{4})\:?\s+.*(?:перевод|зачисление|перевел)\s+([\d\.]+).+(?:Баланс|Остаток)\:\s+([\d\.]+).+Сообщение:\s*(?:\"|\”|")(.+)(?:\"|\”|")$/ui');
//Перевод 700р от ЕЛЕНА АЛЕКСЕЕВНА Ш.\\nБаланс VISA9699: 22989.39р\\nСообщение: "239196"
//Перевод 1р от МИХАИЛ АЛЕКСАНДРОВИЧ П.\\nБаланс VISA9699: 27357.39р\\nСообщение: "3"
define('SB_PARSE_TEMPLATE_5', '/Перевод\s+([\d\.]+).+(?:Баланс|Остаток)\s+(VISA|ECMC|MAES)(\d{4})\:\s*([\d\.]+).+Сообщение:\s*(?:\"|\”|")(.+)(?:\"|\”|")$/ui');
// Перевод 1015р от АНАСТАСИЯ СЕРГЕЕВНА Ш.\nБаланс VISA9699: 11642.04р
define('SB_PARSE_TEMPLATE_6', '/Перевод\s+[^\d]+([\d\.]+).*Баланс\s+(VISA|ECMC|MAES)(\d{4})\:\s*([\d\.]+)[^\d]/iu');
// ECMC1374: 19:57:45 зачисление 193р. от отправителя ВЕРА СЕРГЕЕВНА Р.
define('SB_PARSE_TEMPLATE_7', '/(VISA|ECMC|MAES)(\d{4})\:.*(?:перевел|Перевод|зачисление)[^\d]+([\d\.]+)[^\d]/iu');
// ГАЛИНА ГЕННАДЬЕВНА Г. перевел(а) вам 78.00р
define('SB_PARSE_TEMPLATE_8', '/(?:перевел|Перевод|зачисление)[^\d]+([\d\.]+)[^\d]/iu');
// Перевод 350р от ВЕРОНИКА ВЛАДИМИРОВНА К.\nБаланс VISA9699: 11658.04р
define('SB_PARSE_TEMPLATE_9', '/Перевод\s+([\d\.]+)[^\d] от .*(?:Баланс|Остаток) (VISA|ECMC|MAES)(\d{4})\:?\s+([\d\.]+)[^d]/ui');
/* Шаблоны списания средств с карты
ECMC1374 11:27 перевод 6650р Баланс: 1191.13р
ECMC1374 19:36 Выдача 20000р ATM 60000976 Баланс: 7106.13р
ECMC1374 18.12.19 мобильный банк за 18.12-17.01 60р Баланс: 10738.13р
ECMC1374 02:45 Покупка 209.50р FACEBK *VGSHAQSXJ2 Баланс: 29974.71р
С Вашей карты **** 1374 произведен перевод на карту № **** 3314 на сумму 29875,00 RUB.
*/
define('SB_PARSE_TEMPLATE_99', '/(VISA|ECMC|MAES|MIR\-|С Вашей карты \*\*\*\* )(\d{4})\:?\s+.*(?:перевод|Выдача|мобильный банк|Покупка)\s+.*(?:Баланс|Остаток)\:?\s+([\d\.]+)[^d]/ui');
if (preg_match(SB_PARSE_TEMPLATE_4, $sms, $res)){
$rub = $res[3];
$cardType = $res[1];
$cardID = $res[2];
$CardBalance = $res[4];
$Mes = $res[5];
}elseif(preg_match(SB_PARSE_TEMPLATE_3, $sms, $res)){
$cardType = $res[1];
$cardID = $res[2];
$rub = $res[3];
$CardBalance = $res[4];
} elseif(preg_match(SB_PARSE_TEMPLATE_5, $sms, $res)){
$rub = $res[1];
$cardType = $res[2];
$cardID = $res[3];
$CardBalance = $res[4];
$Mes = $res[5];
} elseif(preg_match(SB_PARSE_TEMPLATE_2, $sms, $res)){
$rub = $res[3];
$Mes = $res[4];
$cardType = $res[1];
$cardID = $res[2];
} elseif (preg_match(SB_PARSE_TEMPLATE_1, $sms, $res)){
$rub = $res[1];
$Mes = $res[2];
} elseif (preg_match(SB_PARSE_TEMPLATE_6, $sms, $res)){
$rub = $res[1];
$cardType = $res[2];
$cardID = $res[3];
$CardBalance = $res[4];
} elseif (preg_match(SB_PARSE_TEMPLATE_7, $sms, $res)){
$rub = $res[3];
$cardType = $res[1];
$cardID = $res[2];
} elseif (preg_match(SB_PARSE_TEMPLATE_8, $sms, $res)){
$rub = $res[1];
} elseif (preg_match(SB_PARSE_TEMPLATE_9, $sms, $res)){
$rub = $res[1];
$cardType = $res[2];
$cardID = $res[3];
$CardBalance = $res[4];
} elseif( preg_match(SB_PARSE_TEMPLATE_99, $sms, $res)){ // списание с карты
if(strlen($res[1])==4)$cardType = $res[1];
$cardID = $res[2];
$CardBalance = $res[3];
$rub = 0;
echo "Сбербанк списание";
} else {
// Сбербанк опять поменял формат СМС сообщений!
}
?>
- Похожие заказы
- Веб-программирование1 заявкаЗакрыт6 месяцев назад
Используя аккаунт в amoCRM, Создать доп.поле "Город" (текстовое) в Контакте. Создать доп.поле "Услуга" (списковое - Диагностика, Ремонт) в Сделке. Создать веб-странчку (html+js), с формой, содержащей поля: имя, телефон, ...
Веб-программирование3 заявкиЗакрыт5 месяцев назад- $50
Есть сайт, на котором размещена табличка с данными (цифры). Вход на сайт по логину/паролю. Сам сайт имеет структуру html с использованием iframe, Java скрипты и встречалось упоминание Ajax. содержимое динамически меняется ...
Веб-программирование6 заявокЗакрыт6 месяцев назад - $4
Есть файлик .py он подключается к БД и вебсокету. Надо чтобы данные из вебсокета записывались в БД По отдельности, БД и вебсокет работают. Вместе нет. Ошибок никаких не показывает. Но при этом никакой реакции ...
Веб-программирование1 исполнительЗавершен6 месяцев назад - $3
Необходимо сделать таймер на странице https://swing-krsk.ru/pay/card/?id=53 Стартовая дата для отсчета 30 минут в таком формате в БД - 2024-Jan-13 16:47:04 Пример таймера https://linepay.fun/pay?m_id=3&amount=1000&order_id=1&sign=38abbfa2a8ea17fa14b01bea7ec90fef
Веб-программирование3 заявкиЗакрыт6 месяцев назад У нас уже сделан P2P шлюз, но работает в полуавтоматическом режиме. Необходимо сделать так что бы при поступлении смс, смс распознавалась на переменные а именно комментарий из 6 цифр и ответ отправлялся в бд ...
Веб-программированиенет заявокЗакрыт6 месяцев назад- $35
Добавить новый реестр в кабинет модератора. Условие выборки записей из таблицы1 для модерации и условие сохранения изменений (модерации) в таблицу 3. В кабинете модератора записи из таблицы 2 (ops_tag) подгружаются для всех реестров. ...
Веб-программирование1 исполнительЗакрыт6 месяцев назад - $10
Есть скрипт, необходимо дописать несколько функций. Получать ответ в https://site.ru/pay/script/1 без перезагрузки (скорее всего будет реализация ajax) Переписать скрипт таймера на JS. (В бд дата записана так 2024-Jan-13 16:02:34) ...
Веб-программирование4 заявкиЗакрыт6 месяцев назад Свести в Гугл таблицы все лиды через apimonster (аналог albato, apix, integromat, make.com): - заявки с нескольких сайтов (wp) - звонки из телефонии с расшифровкой - отправка заявок партнерам через вебхук или апи
Веб-программированиенет заявокЗакрыт6 месяцев назадРазработка веб-платформы для управления заказами на парсинг данных. Я, буду отвечать за сбор данных и он уже организован (база на картинке уже работает), в то время как разработчик должен создать систему для эффективного представления этих ...
Веб-программирование11 заявокЗакрыт5 месяцев назад