162 lines
6.3 KiB
C#
162 lines
6.3 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Net;
|
|
using System.Xml.Serialization;
|
|
using WX.CRM.CRMServices.SMS.InterfaceModel;
|
|
|
|
namespace WX.CRM.CRMServices.SMS.InterfaceExec
|
|
{
|
|
internal class QiXinTong : IMsgSend
|
|
{
|
|
string Url = "";
|
|
string cpid = "";
|
|
string signature = "";
|
|
int mid = 0;
|
|
string port = "";
|
|
string keyCode = "";
|
|
|
|
public QiXinTong()
|
|
{
|
|
QiXinTongConfig config = new QiXinTongConfig();
|
|
Url = config.Url;
|
|
cpid = config.cpid;
|
|
signature = config.signature;
|
|
mid = config.mid;
|
|
port = config.port;
|
|
keyCode = config.keyCode;
|
|
}
|
|
public InterfaceModel.ReturnResult Execute(string[] mobiles, string msg)
|
|
{
|
|
return sendPkg(mobiles, msg);
|
|
}
|
|
|
|
public decimal queryAmt()
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
#region
|
|
InterfaceModel.ReturnResult sendPkg(string[] mobiles, string msg)
|
|
{
|
|
string timestamp = DateTime.Now.ToString("yyMMddHHmm");
|
|
InterfaceModel.ReturnResult result = new InterfaceModel.ReturnResult();
|
|
string _Url = Url;
|
|
MtPacket msgPkg = new MtPacket();
|
|
msgPkg.cpid = cpid;
|
|
msgPkg.mid = mid;
|
|
msgPkg.port = port;
|
|
msgPkg.timestamp = timestamp;
|
|
msgPkg.cpmid = System.DateTime.Now.ToString("MMddHHmmssfff"); ; //至少保证1个月内不重复
|
|
msgPkg.msg = msg; // System.Web.HttpUtility.UrlEncode(msg, Encoding.UTF8);
|
|
msgPkg.signature = WX.CRM.Common.Utility.EncryptMD5(keyCode + timestamp);
|
|
msgPkg.mobile = string.Join(",", mobiles);
|
|
msgPkg.validtime = "";
|
|
msgPkg.reserve = "";
|
|
|
|
try
|
|
{
|
|
string xmlStr = WX.CRM.Common.Utility.Serialize<MtPacket>(msgPkg);
|
|
result.SendStr = xmlStr;
|
|
var serializer = new XmlSerializer(typeof(MtPacket));
|
|
MemoryStream s = new MemoryStream();
|
|
XmlSerializerNamespaces xsn = new XmlSerializerNamespaces();
|
|
xsn.Add("", "");
|
|
serializer.Serialize(s, msgPkg, xsn);
|
|
var bs = s.ToArray();
|
|
s.Read(bs, 0, bs.Length);
|
|
s.Close();
|
|
result.ReturnStr = Request(_Url, bs);
|
|
|
|
#region 发送方式1
|
|
//Encoding myEncoding = Encoding.UTF8;
|
|
//String sResult = "";
|
|
//string param = string.Format("MtPacket={0}", result.SendStr);
|
|
//byte[] postBytes = Encoding.ASCII.GetBytes(param);
|
|
//HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(_Url);
|
|
//req.Method = "POST";
|
|
//req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
|
|
//req.ContentLength = postBytes.Length;
|
|
//Stream webStream = req.GetRequestStream();
|
|
//webStream.Write(postBytes, 0, postBytes.Length);
|
|
//webStream.Close();
|
|
//HttpWebResponse webResponse = (HttpWebResponse)req.GetResponse();
|
|
//StreamReader reader = new StreamReader(webResponse.GetResponseStream(), myEncoding);
|
|
//sResult = reader.ReadToEnd();
|
|
//reader.Close();
|
|
//sResult.Trim();
|
|
//result.ReturnStr = sResult;
|
|
#endregion
|
|
|
|
#region 发送方式样
|
|
//string xmlStr = UP.Interface.Common.Utility.Serialize<MtPacket>(msgPkg);
|
|
//result.SendStr = xmlStr;
|
|
//WebClient webClient = new WebClient();
|
|
//webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
|
|
//NameValueCollection postValues = new NameValueCollection();
|
|
//webClient.Encoding = Encoding.UTF8;
|
|
//postValues.Add("", result.SendStr);
|
|
//byte[] responseArray = webClient.UploadValues(_Url, postValues);
|
|
//result.ReturnStr = Encoding.UTF8.GetString(responseArray);
|
|
#endregion
|
|
|
|
MtResponse info = WX.CRM.Common.Utility.XMLToObject<SMS.InterfaceModel.MtResponse>(result.ReturnStr);
|
|
if (info != null)
|
|
{
|
|
result.submitStatus = info.result == "0" ? SMS.InterfaceModel.SubmitStatus.success : SMS.InterfaceModel.SubmitStatus.fail;
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("反序列化异常,返回值:" + result.ReturnStr);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
result.submitStatus = SMS.InterfaceModel.SubmitStatus.fail;
|
|
WX.CRM.Common.LogHelper.Error("QiXinTong.sendPkg:" + ex.Message);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 发送消息
|
|
/// </summary>
|
|
/// <param name="url"> </param>
|
|
/// <param name="parameters"></param>
|
|
/// <param name="param"> </param>
|
|
public string Request(string url, byte[] parameters)
|
|
{
|
|
try
|
|
{
|
|
var request = WebRequest.Create(url) as HttpWebRequest;
|
|
request.Method = "POST";
|
|
request.ContentType = "application/x-www-form-urlencoded";
|
|
//需要POST数据
|
|
BinaryWriter bw = new BinaryWriter(request.GetRequestStream());
|
|
bw.Write(parameters);
|
|
var response = request.GetResponse();
|
|
var v = response.GetResponseStream();
|
|
StreamReader reader = new StreamReader(v);
|
|
return reader.ReadToEnd();
|
|
}
|
|
catch
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
public class MtPacket
|
|
{
|
|
public string cpid { get; set; }
|
|
public int mid { get; set; }
|
|
public string cpmid { get; set; }
|
|
public string mobile { get; set; }
|
|
public string port { get; set; }
|
|
public string msg { get; set; }
|
|
public string signature { get; set; }
|
|
public string timestamp { get; set; }
|
|
public string validtime { get; set; }
|
|
public string reserve { get; set; }
|
|
}
|
|
}
|