//***********************************************************************************************
//-------------------------------------- смс ----------------------------------------------------
//***********************************************************************************************
//***********************************************************************************************
//передача параметров смс сообщения содержащее логин, пороль, имя отправителя, номер, текст смс**
//***********************************************************************************************
//***********************************************************************************************
//передача смс сообщения в зависимости от выбора смс оператора***********************************
//***********************************************************************************************
function Switchsms(smessage, SMS: string): boolean;
var
ini : TInifile;
ClickatellCom :TClickatellCom;
TurboSmsUa :TTurboSmsUa;
s, sResult, sLog, SMSPhone, SMSMessage,r,INFO: string;
url: string;
begin
ini :=TIniFile.Create(ExtractFilePath (ParamStr (0))+'setting\sms.ini');
SMSLogin:=ini.ReadString('senderlog','SMSLogin',''); // получаем логин
SMSPassword:=ini.ReadString('senderlog','SMSPassword',''); // получаем пароль
SMSAPI_ID:=ini.ReadString('senderlog','SMSAPI_ID',''); // получаем required
SMSSender:=ini.ReadString('senderlog','SMSSender',''); // получаем подпись отправителя
SMSPhone:=SQLEXecute('SELECT telephonClient FROM servise WHERE id=' +frmServiceCen.tgList.sqlValue); // получаем номер
SMSMessage:= smessage; // получаем сообщение
smst:= SMSPhone;
stdId:= SQLEXecute('SELECT id FROM servise WHERE id=' +frmServiceCen.tgList.sqlValue);
try
//если выбран смс оператор epochta
if SMS = 'epochta' then
begin
url:='http://api.myatompark.com/members/sms/xml.php';
if not ping('mail.ru')then ShowMessage('нет соединения ') else begin
smsquestion:=createoleobject('WinHttp.WinHttpRequest.5.1');
smsquestion.open('POST', url, true);
smsquestion.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
smsquestion.send('<SMS>'+
'<operations>'+
'<operation>SEND</operation>'+
'</operations>'+
'<authentification>'+
'<username>'+SMSLogin+'</username>'+
'<password>'+SMSPassword+'</password>'+
'</authentification>'+
'<message>'+
'<sender>'+SMSSender+'</sender>'+
'<text>'+SMSMessage+' [UTF-8]</text>'+
'</message>'+
'<numbers>'+
'<number>'+SMSPhone+'</number>'+
'</numbers>'+
'</SMS>');
smsAn:= 'epochta';
smsTimer:=Ttimer.create(frmServiceCen);
smsTimer.Enabled:=True;
smsTimer.Interval:=1000;
smsTimer.OnTimer:=@smsAnswer;
end;
end;
//если выбран смс оператор SMS.RU
if SMS = 'SMS.RU' then
begin
url:='https://sms.ru/sms/send';
if not ping(url)then ShowMessage('нет соединения ') else begin
smsquestion:=createoleobject('WinHttp.WinHttpRequest.5.1');
smsquestion.open('POST', url, true);
smsquestion.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
smsquestion.send('api_id='+SMSAPI_ID+'&to='+SMSPhone+'&from='+SMSSender+'&msg='+SMSMessage+'&partner_id=265885&json=1');
smsAn:= 'SMS.RU';
smsTimer:=Ttimer.create(frmServiceCen);
smsTimer.Enabled:=True;
smsTimer.Interval:=1000;
smsTimer.OnTimer:=@smsAnswer;
end;
end;
//если выбран смс оператор smsc
if SMS = 'smsc' then
begin
url:='https://smsc.ru/sys/send.php';
if not ping(url)then ShowMessage('нет соединения ') else begin
smsquestion:=createoleobject('WinHttp.WinHttpRequest.5.1');
smsquestion.open('POST', url, true);
smsquestion.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
smsquestion.send('login='+HttpEncode(SMSLogin)+'&psw='+HttpEncode(SMSPassword)+'&phones='+HttpEncode(SMSPhone)+'&sender='+SMSSender+'&mes='+SMSMessage);
smsAn:= 'smsc';
smsTimer:=Ttimer.create(frmServiceCen);
smsTimer.Enabled:=True;
smsTimer.Interval:=1000;
smsTimer.OnTimer:=@smsAnswer;
end;
end;
finally
ini.Free;
end;
end;
function smsAnswer(sdata:string):string;
var
JSONObject, JSONObjProp, JSONObjProp2: TJSONObject;
JSONString: TJSONString;
sD: string = ReplaceStr(smst, '+', '');
begin
try
if smsquestion.Status() = 200 then
begin
if smsAn = 'epochta' then begin
if Pos('<status>1</status>', smsquestion.responsetext) then SQLEXecute('UPDATE servise SET smsout="1" WHERE id='+stdId) ;
if Pos('<status>-1</status>', smsquestion.responsetext) then ShowMessage(langIniG.ReadString('message','00x75', 'Неправильный логин и/или пароль'));
if Pos('<status>-2</status>', smsquestion.responsetext) then ShowMessage(langIniG.ReadString('message','00x76', 'Неправильный формат XML')) ;
if Pos('<status>-3</status>', smsquestion.responsetext) then ShowMessage(langIniG.ReadString('message','00x77', 'Недостаточно кредитов на аккаунте пользователя ')) ;
if Pos('<status>-4</status>', smsquestion.responsetext) then ShowMessage(langIniG.ReadString('message','00x78', 'Нет верных номеров получателей')) ;
if Pos('<status>-5</status>', smsquestion.responsetext) then ShowMessage(langIniG.ReadString('message','00x79', 'Неверный текст')) ;
if Pos('<status>-7</status>', smsquestion.responsetext) then ShowMessage(langIniG.ReadString('message','00x80', 'Ошибка в имени отправителя ')) ;
end;
if smsAn = 'SMS.RU' then begin
JSONObject := nil;
JSONObject:=TJSONObject(TJSONObject.ParseJSONValue(smsquestion.responsetext));
if JSONObject <> nil then
begin
JSONString := TJSONString(JSONObject.GetPairByName('status_code').JsonValue);
if Pos('100',JSONString.Value) then begin
JSONObjProp := TJSONObject(JSONObject.GetPairByName('sms').JsonValue);
JSONObjProp2 := TJSONObject( JSONObjProp.GetPairByName(sD).JsonValue);
JSONString := TJSONString(JSONObjProp2.GetPairByName('status_code').JsonValue);
end;
if Pos('100',JSONString.Value) then SQLEXecute('UPDATE servise SET smsout="1" WHERE id='+stdId);
if Pos('232',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x80', 'Превышен лимит одинаковых сообщений на этот номер в день'));
if Pos('-1',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x81', 'Сообщение не найдено'));
if Pos('107',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x82', 'Не может быть доставлено: неизвестная причина'));
if Pos('108',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x83', 'Не может быть доставлено: отклонено'));
if Pos('200',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x84', 'Неправильный api_id'));
if Pos('201',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x85', 'Не хватает средств на лицевом счету'));
if Pos('202',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x86', 'Неправильно указан номер телефона получателя, либо на него нет маршрута'));
if Pos('203',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x87', 'Нет текста сообщения '));
if Pos('204',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x88', 'Имя отправителя не согласовано с администрацией'));
if Pos('209',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x89', 'Вы добавили этот номер (или один из номеров) в стоп-лист'));
if Pos('220',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x90', 'Сервис временно недоступен, попробуйте чуть позже'));
if Pos('230',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x91', 'Превышен общий лимит количества сообщений на этот номер в день'));
if Pos('231',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x92', 'Превышен лимит одинаковых сообщений на этот номер в минуту'));
if Pos('233',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x93', 'Превышен лимит отправки повторных сообщений с кодом на этот номер за короткий промежуток времени ("защита от мошенников"), можно отключить в разделе "Настройки")'));
if Pos('301',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x94', 'Неправильный api_id, либо логин/пароль'));
if Pos('205',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x95', 'Сообщение слишком длинное (превышает 8 СМС)'));
if Pos('206',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x96', 'Будет превышен или уже превышен дневной лимит на отправку сообщений '));
if Pos('207',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x97', 'На этот номер нет маршрута для доставки сообщений'));
if Pos('302',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x98', 'Пользователь авторизован, но аккаунт не подтвержден (пользователь не ввел код, присланный в регистрационной смс)'));
if Pos('500',JSONString.Value) then ShowMessage(langIniG.ReadString('message','00x99', 'Ошибка на сервере. Повторите запрос'));
end;
end;
if smsAn = 'smsc' then begin
if Pos('OK', smsquestion.responsetext) then SQLEXecute('UPDATE servise SET smsout="1" WHERE id='+stdId) ;
if Pos('ERROR = 1 ', smsquestion.responsetext) then ShowMessage(langIniG.ReadString('message','00x100', 'Ошибка в параметрах')) ;
if Pos('ERROR = 2 ', smsquestion.responsetext) then ShowMessage(langIniG.ReadString('message','00x101', 'Неверный логин или пароль')) ;
if Pos('ERROR = 3 ', smsquestion.responsetext) then ShowMessage(langIniG.ReadString('message','00x102', 'Недостаточно средств на счете Клиента')) ;
if Pos('ERROR = 4 ', smsquestion.responsetext) then ShowMessage(langIniG.ReadString('message','00x103', 'IP-адрес временно заблокирован из-за частых ошибок в запросах')) ;
if Pos('ERROR = 5 ', smsquestion.responsetext) then ShowMessage(langIniG.ReadString('message','00x104', 'Неверный формат даты')) ;
if Pos('ERROR = 6 ', smsquestion.responsetext) then ShowMessage(langIniG.ReadString('message','00x105', 'Сообщение запрещено (по тексту или по имени отправителя)')) ;
if Pos('ERROR = 7 ', smsquestion.responsetext) then ShowMessage(langIniG.ReadString('message','00x106', 'Неверный формат номера телефона')) ;
if Pos('ERROR = 8 ', smsquestion.responsetext) then ShowMessage(langIniG.ReadString('message','00x107', 'Сообщение на указанный номер не может быть доставлено')) ;
if Pos('ERROR = 9 ', smsquestion.responsetext) then ShowMessage(langIniG.ReadString('message','00x108', 'Отправка более одного одинакового запроса на передачу SMS-сообщения в течение минуты')) ;
end;
end;
except
FrmServiceCen.lLogUser.Caption:='Передача СМС сообщения ';
end;
frmServiceCen.tgList.dbUpdate;
smsTimer.Enabled:=False;
end;
нет времени вырезать из проекта...