TG.WXCRM.V4/CRMServices/PkgSms/InterfaceExec/ZQZXSms.cs

151 lines
5.1 KiB
C#

using System;
using System.Collections.Specialized;
using System.Net;
using System.Text;
using WX.CRM.Common;
using WX.CRM.CRMServices.SMS.InterfaceModel;
namespace WX.CRM.CRMServices.SMS.InterfaceExec
{
internal class ZQZXSms : IMsgSend
{
string account = "";
string pwd = "";
string url = "";
public ZQZXSms(string _account = "", string _password = "")
{
ZQZXSmsConfig config = new ZQZXSmsConfig();
account = config.account;
pwd = config.pwd;
url = config.url;
if (!string.IsNullOrEmpty(_account) && !string.IsNullOrEmpty(_password))
{
pwd = _password;
account = _account;
}
}
public InterfaceModel.ReturnResult Execute(string[] mobiles, string msg)
{
return Send(mobiles, msg);
}
public decimal queryAmt()
{
throw new NotImplementedException();
}
#region
InterfaceModel.ReturnResult Send(string[] mobiles, string msg)
{
string mobilesStr = string.Join(",", mobiles);
InterfaceModel.ReturnResult result = new InterfaceModel.ReturnResult();
result.SendStr = mobilesStr;
try
{
WebClient webClient = new WebClient();
webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
NameValueCollection postValues = new NameValueCollection();
webClient.Encoding = Encoding.UTF8;
//postValues.Add("command", "MT_REQ");
postValues.Add("user", account);
postValues.Add("pass", pwd);
postValues.Add("mobile", mobilesStr);//15112168561,13416115228
msg = "【证券之星】" + msg;
postValues.Add("content", msg);
postValues.Add("encode", "UTF8");
byte[] responseArray = webClient.UploadValues(url, postValues);
result.ReturnStr = Encoding.UTF8.GetString(responseArray);
//command=MO_RES&userid=abc&mostat=ACCEPTD 成功
if (result.ReturnStr == "0")
result.submitStatus = SubmitStatus.success;
else
result.submitStatus = SubmitStatus.fail;
}
catch (Exception ex)
{
result.submitStatus = SubmitStatus.fail;
WX.CRM.Common.LogHelper.Error("EntSms.Send:" + ex.Message + ex.StackTrace);
}
return result;
}
public static string ToHex(string s, string charset, bool fenge)
{
if ((s.Length % 2) != 0)
{
s += "";//空格
}
Encoding chs = Encoding.GetEncoding(charset);
byte[] bytes = chs.GetBytes(s);
string str = "";
for (int i = 0; i < bytes.Length; i++)
{
str += string.Format("{0:X}", bytes[i]);
if (fenge && (i != bytes.Length - 1))
{
str += string.Format("{0}", ",");
}
}
return str.ToLower();
}
#endregion
public static String encodeHexStr(String realStr, int dataCoding = 15)
{
string strhex = "";
try
{
Byte[] bytSource = null;
if (dataCoding == 15)
{
bytSource = Encoding.GetEncoding("GBK").GetBytes(realStr);
}
else if (dataCoding == 8)
{
bytSource = Encoding.BigEndianUnicode.GetBytes(realStr);
}
else
{
bytSource = Encoding.ASCII.GetBytes(realStr);
}
for (int i = 0; i < bytSource.Length; i++)
{
strhex = strhex + bytSource[i].ToString("X2");
}
}
catch (Exception ex) { LogHelper.Error(ex.ToString()); }
return strhex;
}
//hex编码还原成字符
public static String decodeHexStr(String hexStr, int dataCoding = 15)
{
String strReturn = "";
try
{
int len = hexStr.Length / 2;
byte[] bytSrc = new byte[len];
for (int i = 0; i < len; i++)
{
string s = hexStr.Substring(i * 2, 2);
bytSrc[i] = Byte.Parse(s, System.Globalization.NumberStyles.AllowHexSpecifier);
}
if (dataCoding == 15)
{
strReturn = Encoding.GetEncoding("GBK").GetString(bytSrc);
}
else if (dataCoding == 8)
{
strReturn = Encoding.BigEndianUnicode.GetString(bytSrc);
}
else
{
strReturn = System.Text.ASCIIEncoding.ASCII.GetString(bytSrc);
}
}
catch { }
return strReturn;
}
}
}