⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ~smgp_message.~h

📁 SMAL是short message abstract library的缩写,是由风起水流软件工作室(www.zealware.com)开发的一个支持短信网关系统开发的C++底层抽象接口库
💻 ~H
📖 第 1 页 / 共 2 页
字号:

	union {
		char								sMsgcontent[252];
		SMGP_STATUS_REPORT	csr;
	} MO_Msg_Content;

	char						sReserve[8+1];

	/*
	主要
		可选参数	字段	数据类型	说明
		LinkID(2,2,20)	TLV	交易标识。SP发送的下行消息(包括点播和定制)必须带有该字段
		SubmitMsgType(2,2,1)	TLV	SP发送的消息类型。(5=包月扣费通知消息; 13=订购(包括点播和定制)关系同步;15=订购关系同步回复。 )
		*/

	SMGP_TLV_LINKID tlvLinkID;

	SMGP_TLV_SubmitMsgType tlvSubmitMsgType;

	SMGP_TLV_SPDealResult tlvSPDealResult;

} SMGP_DELIVER;

/**
SUBMIT消息包体定义 
字段	长度
(字节)	数据类型	说明	参考

必选参数
MsgType	1	Integer	短消息类型	6.4.2.9
NeedReport	1	Integer	SP是否要求返回状态报告	6.4.2.10
Priority	1	Integer	短消息发送优先级	6.4.2.11
ServiceID	10	Octet String	业务代码	6.4.2.12
FeeType	2	Octet String	收费类型	6.4.2.13
FeeCode	6	Octet String	资费代码	6.4.2.14
FixedFee	6	Octet String	包月费/封顶费	6.4.2.15
MsgFormat	1	Integer	短消息格式	6.4.2.16
ValidTime	17	Octet String	短消息有效时间	6.4.2.17
AtTime	17	Octet String	短消息定时发送时间	6.4.2.18
SrcTermID	21	Octet String	短信息发送方号码	6.4.2.19
ChargeTermID	21	Octet String	计费用户号码	6.4.2.20
DestTermIDCount	1	Integer	短消息接收号码总数	6.4.2.21
DestTermID	21*DestTermCount	Octet String*	短消息接收号码	6.4.2.22
MsgLength	1	Integer	短消息长度	6.4.2.23
MsgContent	MsgLength	Octet String	短消息内容	6.4.2.24
Reserve	8	Octet String	保留	6.4.2.28
可选参数	字段	数据类型	说明	参考
TP_pid	TLV	GSM协议类型	6.4.3.2
TP_udhi	TLV	GSM协议类型	6.4.3.3
LinkID	TLV	交易标识	6.4.3.4
MsgSrc	TLV	信息内容的来源	6.4.3.16
ChargeUserType	TLV	计费用户类型	6.4.3.5
ChargeTermType	TLV	计费用户的号码类型	6.4.3.6
ChargeTermPseudo	TLV	计费用户的伪码	6.4.3.7
DestTermType	TLV	短消息接收方号码的类型	6.4.3.8
DestTermPseudo	TLV	短消息接收方的伪码	6.4.3.9
PkTotal	TLV	相同MsgID的消息总条数	6.4.3.10
PkNumber	TLV	相同MsgID的消息序号	6.4.3.11
SubmitMsgType	TLV	SP发送的消息类型	6.4.3.12
SPDealResult	TLV	SP对消息的处理结果	6.4.3.13
MServiceID	TLV	业务代码(用于移动网业务)	6.4.3.17

示例包:
DATA_MSG
	Head 
		Len--/longint : 199
		Cmd_ID--/Hex4 : 0x00000002
		Sequence--/DWORD : 34
	SMGP3.0_Submit 
		MsgType--BYTE : 6
		uNeedReport--BYTE : 1
		uPriority--BYTE : 1
		ServiceID--char : mh
		FeeType--char : 01
		FeeCode--char : 000090
		FixedFee--char : 000090
		uMsgFormat--BYTE : 0
		ValidTime--char : 
		AtTime--char : 
		SrcTermID--char : 1189791
		ChargeTermID--char : 02023333333
		uDestTermIDCount--BYTE : 1
		DestTermID--spchar(21): 02023333333
		uMsgLength--BYTE : 18
		MsgContent--/code : DG dz  02023333333
		Reserve--char : 
		LinkID
			Parameter Tag--/WORD: 0x0003
			Length--/WORD:20
			Value--char(20):08041018000100012315
		Submit_MsgType
			Parameter Tag--/WORD: 0x000B
			Length--/WORD:1
			Value--BYTE: 0x0F
		SPDealResult
			Parameter Tag--/WORD: 0x000C
			Length--/WORD:1
			Value--BYTE: 0x00
*/

typedef struct smgp_submit {
	/**
	3.0
	短消息类型,用来表示短消息的消息流向。
	0=MO消息(终端发给SP);
	6=MT消息(SP发给终端);
	其它保留。
	对于SP接入点发送给SP的消息,如果是普通短消息,则MsgType=0,如果是回执,则MsgType无效。对于SP发送给SP接入点的消息,MsgType=6。
	
	2.0
	短消息类型
	(1=取消订阅,2=订阅请求,3=点播,4=订阅,5=交互式操作,6=查询,其他保留)

	(下行消息用“6”表示)
	*/
	unsigned char		uchMsgType;

	/**
	SP是否要求SP接入点返回状态报告。
	0=SP不要求返回状态报告;
	1=SP要求返回状态报告;
	其它保留。
	SP接入点根据NeedReport字段记录SP是否要求状态报告,并在收到状态报告后决定是否转发SP。
	*/
	unsigned char		uchRegisteredDelivery;

	/**
	短消息发送优先级。
	0=低优先级;
	1=普通优先级;
	2=较高优先级;
	3=高优先级;
	其他保留。
	*/
	unsigned char		uchMsgLevel;

	/**
	业务代码,表示该条短消息所属的业务类别,是数字、字母和符号的组合。
	对于从WEB上发送的点对点短消息,固定业务代码为 “PC2P”,其它业务代码由SP自定义。
	*/
	char						sServiceId[10+1];

	/**
	对计费用户采取的收费类型。
	00=免费,此时FixedFee和FeeCode无效;
	01=按条计信息费,此时FeeCode表示每条费用,FixedFee无效;
	02=按包月收取信息费,此时FeeCode无效,FixedFee表示包月费用;
	03=按封顶收取信息费,若按条收费的费用总和达到或超过封顶费后,则按照封顶费用收取费用;若按条收费的费用总和没有达到封顶费用,则按照每条费用总和收取费用。FeeCode表示每条费用,FixedFee表示封顶费用。
	其它保留。

	(0免费,1按条,2包月,3封顶,到了封顶费以后的就不收费了)
	*/
	char						sFeeType[2+1];

	/**
	每条短消息费率,单位为“分”。
	具体使用方法参见6.4.2.13节。
	*/
	char						sFeeCode[6+1];

	/**
	短消息的包月费/封顶费,单位为“分”。
	具体使用方法参见6.4.2.13节。
	*/
	char						sFixedFee[6+1];

	/**
	表示短消息内容体的编码格式。
	0=ASCII编码;
	3=短消息写卡操作;
	4=二进制短消息;
	8=UCS2编码;
	15=GB18030编码;
	其它保留。
	对于SP与SP接入点之间的普通短消息,要求MsgFormat=15。对于SP接入点发送给SP的回执消息,要求MsgFormat=0。

	(此处应为15)
	*/
	unsigned char		uchMsgFmt;

	/**
  短消息有效时间,格式遵循SMPP3.3及以上版本协议。	

	(此处填为空,因此短信平台不支持有效时间)
	*/
	char						sValidTime[17+1];

	/**
	短消息定时发送时间,格式遵循SMPP 3.3及以上版本协议。	

	(此处填为空,因此短信平台不支持定时发送)
	*/
	char						sAtTime[17+1];

	/**
	短消息发送方号码。
	对于SP发起的消息,SrcTermID格式为“118+SP服务代码+其它(可选)”,例如SP服务代码为1234时,SrcTermID可以为1181234或118123456等。
	对于终端发起的消息,固定网中SrcTermID格式为“区号+号码(区号前添零)”,例如02087310323,07558780808,移动网中SrcTermID格式为MSISDN号码格式。

	(对于MT消息,SrcTermID格式为“118+SP服务代码+其它(可选)”)
	*/
	char						sSrcId[21+1];

	/**
	计费用户号码。
	ChargeTermID为空时,如果是MT消息,则默认为对被叫用户号码计费;如果是MO或点对点消息,则默认为对主叫用户号码计费。
	ChargeTermID为非空时,表示对计费用户号码计费。

(定阅信息的用户手机号码)
*/
	char						sFeeTerminalId[21+1];

	/**
  短消息接收号码总数(≤100),用于SP实现群发短消息。	

	(SP发送的Submit消息中,DestTermIDCount必须为“1”,DestTermID只能填写一个用户号码,ChargeTermID必须填写,不得为空。) 
	*/
	unsigned char		uchDstUsrTl;

	/**
	短消息接收号码。
	对于接收方为终端的消息,DestTermID连续存储DestTermIDCount个号码,每一个接收方号码为21位,固定网中DestTermID格式为“区号+号码(区号前添零)”,移动网中DestTermID格式为MSISDN号码格式,不足21位时应左对齐,右补0x00。
	对于接收方为SP的消息,DestTermID格式为“118+SP服务代码+其它(可选)”。
	
	(只能是1个号码)
	*/
	char						sDstTerminalId[21+1];

	/**
	短消息长度。指MsgContent域的长度,取值大于或等于0。
	对于SP发起的消息,MsgFormat=0时,MsgLength取值应小于或等于160;其它情况下,MsgLength取值应小于或等于140。

	(取值应小于或等于140) 
*/
	unsigned char		uchMsgLength;

	/**
	短消息内容。
	当IsReport=1时,MsgContent中内容为状态报告,其格式遵循6.4.2.29节描述。

	(对应于用户的订阅/取消订阅请求,SP在此填写“订阅/取消订阅关系同步”)
	*/
	char						sMsgContent[140];

	/**
	保留
	*/
	char						sReserve[8+1];

	/*
	主要
	可选参数	字段	数据类型	说明
	LinkID(2,2,20)	TLV	交易标识。SP发送的下行消息(包括点播和定制)必须带有该字段
	SubmitMsgType(2,2,1)	TLV	SP发送的消息类型。0=普通短消息; 5=包月扣费通知消息; 13=订购(包括点播和定制)关系同步;15=订购关系同步回复。 (以终端方式发起的点播,13是发给SP的,SP回复15;如果以WEB方式发起的,13是SP发给,15是回复SP的;
	SPDealResult(2,2,1)	TLV	SP对消息的处理结果(0=成功;1=失败;
	其它保留。该字段在SubmitMsgType为0、5、6、7、8、9、10、11、14时无效。 )
	*/

	//SMGP_TLV_LINKID tlvLinkID;

	//SMGP_TLV_SubmitMsgType tlvSubmitMsgType;

	//SMGP_TLV_SPDealResult tlvSPDealResult;
	char tlvLinkID[20+1];
	unsigned char tlvSubmitMsgType;
	unsigned char tlvSPDealResult;

	/**自定义的非标准消息
	*/
	NonStandardInfo	nonStdMessage;
} SMGP_SUBMIT;

typedef struct smgp_submit_v2 {
	/**
	3.0
	短消息类型,用来表示短消息的消息流向。
	0=MO消息(终端发给SP);
	6=MT消息(SP发给终端);
	其它保留。
	对于SP接入点发送给SP的消息,如果是普通短消息,则MsgType=0,如果是回执,则MsgType无效。对于SP发送给SP接入点的消息,MsgType=6。

	2.0
	短消息类型
	(1=取消订阅,2=订阅请求,3=点播,4=订阅,5=交互式操作,6=查询,其他保留)
	*/
	unsigned char		uchMsgType;

	/**
	SP是否要求SP接入点返回状态报告。
	0=SP不要求返回状态报告;
	1=SP要求返回状态报告;
	其它保留。
	SP接入点根据NeedReport字段记录SP是否要求状态报告,并在收到状态报告后决定是否转发SP。
	*/
	unsigned char		uchRegisteredDelivery;

	/**
	短消息发送优先级。
	0=低优先级;
	1=普通优先级;
	2=较高优先级;
	3=高优先级;
	其他保留。
	*/
	unsigned char		uchMsgLevel;

	/**
	业务代码,表示该条短消息所属的业务类别,是数字、字母和符号的组合。
	对于从WEB上发送的点对点短消息,固定业务代码为 “PC2P”,其它业务代码由SP自定义。
	*/
	char						sServiceId[10];

	/**
	对计费用户采取的收费类型。
	00=免费,此时FixedFee和FeeCode无效;
	01=按条计信息费,此时FeeCode表示每条费用,FixedFee无效;
	02=按包月收取信息费,此时FeeCode无效,FixedFee表示包月费用;
	03=按封顶收取信息费,若按条收费的费用总和达到或超过封顶费后,则按照封顶费用收取费用;若按条收费的费用总和没有达到封顶费用,则按照每条费用总和收取费用。FeeCode表示每条费用,FixedFee表示封顶费用。
	其它保留。
	*/
	char						sFeeType[2];

	/**包月费/封顶费(单位为分)
	*/
	char						sFixedFee[6];

	/**资费代码(单位为分)
	*/
	char						sFeeCode[6];

	/**短消息格式(参见6.1节短消息格式代码表)
	*/
	unsigned char		uchMsgFmt;

	/**有效时间
	*/
	char						sValidTime[17];

	/**定时发送时间
	*/
	char						sAtTime[17];

	/**短消息发送用户号码
	(118+cp代码)
	*/
	char						sSrcId[21];

	/**计费用户代码
	*/
	char						sFeeTerminalId[21];

	/**短消息接收号码总数(<=100)
	*/
	unsigned char		uchDstUsrTl;

	/**短消息接收号码
	*/
	char						sDstTerminalId[21*100];

	/**短消息长度
	*/
	unsigned char		uchMsgLength;

	/**短消息内容
	*/
	char						sMsgContent[252];

	/**保留
	*/
	char						sReserve[8];

	/**自定义的非标准消息
	*/
	NonStandardInfo	nonStdMessage;
} SMGP_SUBMIT_V2;

/**
SP端收到的消息结构定义 
*/
typedef struct smgp_smgtosp {
	SMGP_HEAD	pk_head;

	union {
		SMGP_CONNECT_RESP			pk_connectresp;
		SMGP_SUBMIT_RESP			pk_submitresp;
		SMGP_DELIVER					pk_deliver;
	} pk_body;
} SMGP_SMGTOSP;

/**
SMG端收到的消息结构定义 
*/
typedef struct smgp_sptosmg {
	SMGP_HEAD	pk_head;

	union {
		SMGP_CONNECT      pk_connect;
		SMGP_SUBMIT       pk_submi;
		SMGP_DELIVER_RESP pk_deliverresp;
	} pk_body;
} SMGP_SPTOSMG;

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -