billing:configuration:mfisoft

СОРМ MFI SOFT

Переходим в меню системных опций, выбираем СОРМ MFI SOFT

Включаем "Разрешить", придумываем пароль в поле Секрет (в дальнейшем в скриптах API_KEY)

При желании можно настроить фильтр выгрузок по тарифам если необходимо выгружать данные частично

Редактируем под себя данные для справочников: regions, doc_type, radius.

{
"regions": [
{
"ID": "1",
"BEGIN_TIME": "2012-12-31 21:59:59",
"DESCRIPTION": "ООО \"Пупкин\" г. Москва"
}
],
"doc_type": [
{
"DOC_TYPE_ID": "1",
"BEGIN_TIME": "2012-12-31 21:59:59",
"DESCRIPTION": "Паспорт",
"REGION_ID": "1"
}
],
"radius": [
{
"BEGIN_TIME": "2012-12-31 21:59:59",
"END_TIME": "2024-12-31 21:59:59",
"REGION_ID": "1",
"GATE_TYPE": "7",
"ADDRESS_TYPE_ID": "1",
"ADDRESS_TYPE": "3",
"UNSTRUCT_INFO": "г.Москва, ул Ленина, 47А, офис 1",
"DESCRIPTION": "AAA Сервер (Авторизация)",
"IP_TYPE": "0",
"IPV4": "C0A801F7",
"IP_PORT": "0714"
},
{
"BEGIN_TIME": "2012-12-31 21:59:59",
"END_TIME": "2024-12-31 21:59:59",
"REGION_ID": "1",
"GATE_TYPE": "7",
"ADDRESS_TYPE_ID": "1",
"ADDRESS_TYPE": "3",
"UNSTRUCT_INFO": "г.Москва, ул Ленина, 47А, офис 1",
"DESCRIPTION": "AAA Сервер (Аккаунтинг)",
"IP_TYPE": "0",
"IPV4": "C0A801F7",
"IP_PORT": "0715"
}
]
}

Затем проверяем отредактированные данные на сайте https://jsonformatter.curiousconcept.com/ . Если все ок то должны получить - зеленую надпись VALID.

Сохраняем полученнное содержимое в файл config.json. Данный файл ложим на сервере с админкой по пути ../modules/mfi/config.json относительно admin/index.php. т.е. рядом с папкой admin/ надо создать (если еще нет) modules/mfi/.

Если все верно сделали то в СОРМЕ должны подтягиваться данные из конфига при выгрузке указанных справочников.

Скрипты дорабатываются и могут изменяться!

В данном скрипте необходимо подставить свои данные в переменные:
ADMIN_URL, API_KEY, FTP_ADDRESS.
Так же, по требованиям MFISoft, необходимо несколько аккаунтов ftp под каждый тип выгрузки (cdr, dict, abon, pay),
в скрипте необходимо заменить пароль FTP_PASS под каждый такой аккаунт.

Скрипт запуска unloading.sh

#!/bin/bash
 
WORK_DIR="/root/"
ADMIN_URL="https://admin.isp.demo"
API="mfisoft"
API_KEY="0123456789"
EXTENSION="txt"
EXTRA=""
 
FTP_ENABLED=1
FTP_ADDRESS="192.168.0.1"
FTP_DIR="/"
 
WGET=$(which wget)
PHP=$(which php)
FTP=$(which ftp)
 
ftpupload() {
$FTP -n $FTP_ADDRESS <<END_SCRIPT
quote USER $FTP_USER
quote PASS $FTP_PASS
binary
put $FILE
quit
END_SCRIPT
}
 
if [ "$#" -gt 0 ]; then
	# особые параметры
	if [ "$1" == "ACTIVATE" ]; then
		REQUESTS=(
			PAYMENT
		)
		EXTRA="&full=true"	
	else
		REQUESTS=$1
	fi
else
	# обычный запуск
	REQUESTS=(
		ABONENT
		ABONENT_SRV
		ABONENT_ADDR
		ABONENT_ID
		DOC_TYPE
		REGIONS
		PAY_TYPE
		PAYMENT
		IP_PLAN
		COMMUTATORS
		GATEWAYS
		SUPPLEMENTARY_SERVICE
		IP_GATEWAY
	)
fi
 
cdr="CONNECTION_AAA"
dict="REGIONS DOC_TYPE PAY_TYPE IP_DATA_POINTS IP_PLAN COMMUTATORS GATEWAYS SUPPLEMENTARY_SERVICE IP_GATEWAY"
abon="ABONENT ABONENT_ADDR ABONENT_ID ABONENT_SRV"
pay="PAYMENT"
 
if [ ! -z $WGET ]; then
	cd $WORK_DIR
	for REQUEST in ${REQUESTS[*]}
	do
		URL="$ADMIN_URL/ajax/index/$API/?key=$API_KEY&request=$REQUEST&file=true$EXTRA"
		RESULT=$($PHP downloader.php $URL)
		echo "$RESULT"
		if [ "$RESULT" == "1" ]; then
			echo "error"
			exit 1
		else
			FILE="$RESULT"
		fi
 
		if [ "$FTP_ENABLED" -eq 1 ]; then
			work=0
			if echo $cdr | grep -w $REQUEST > /dev/null; then
				work=1
				FTP_USER="cdr"
				FTP_PASS="1234567890"
			fi
 
			if echo $dict | grep -w $REQUEST > /dev/null; then
				work=1
				FTP_USER="dict"
				FTP_PASS="1234567890"
			fi
 
			if echo $abon | grep -w $REQUEST > /dev/null; then
				work=1
				FTP_USER="abon"
				FTP_PASS="1234567890"
			fi
 
			if echo $pay | grep -w $REQUEST > /dev/null; then
				work=1
				FTP_USER="pay"
				FTP_PASS="1234567890"
			fi
 
			if [ "$work" -eq "1" ]; then
				if [ ! -z $FILE ]; then
					echo "`date` $FTP_ADDRESS $FTP_USER, SEND FILE: $FILE"
					ftpupload
				fi
			fi
		fi
		if [ ! -z $FILE ]; then
			rm -f $FILE
		fi
	done
else
	echo "command 'wget' not found!"
fi
 
exit 0

downloader.php

<?php
 
if( isset($argv[1]) AND count($argv) == 2 ) {
	$URL=$argv[1];
 
	$ch = curl_init($URL);
	curl_setopt($ch, CURLOPT_HEADER, 1);
	curl_setopt($ch, CURLOPT_POST, 0);
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	$data = curl_exec($ch);
 
	$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
	$header = substr($data, 0, $header_size);
	$body = substr($data, $header_size);
 
	curl_close($ch);
 
	$filename = explode ("filename=", $header);
 
	if( isset($filename[1]) ) {
			$name = str_replace('"', "", $filename[1]);
			$name = str_replace(array("\n", "\r"), '', $name);
			file_put_contents($name, $body);
			echo "{$name}";
	}
} else {
	echo 0;
}
# ежедневная выгрузка
00 06 * * *	root	/root/unloading.sh
# выгрузка сессий каждые 15 мин.
*/15 * * * *	root	/root/unloading.sh CONNECTION_AAA

Так как при первом запуске необходима полная выгрузка платежей (далее ежедневная),
необходимо вручную запустить скрипт с параметром ACTIVATE:

/root/unloading.sh ACTIVATE

Для запуска режима чекера данных запустить в браузере:

https://admin.isp.demo/ajax/index/mfisoft/?key=$API_KEY&request=ABONENT&debug=true
  • billing/configuration/mfisoft.txt
  • Последнее изменение: 9 мес. назад
  • Максим Ступаков