手机短信服务接口合作协议原理与分析

时间:2006-11-14 来源: 作者: 点击:
1短信协议 1.1分发中心接口 分发中心接口分为TCP接口和HTTP接口协议,都用的是文本指令方式,也就是说每条指令都是以回程换行结束的,服务端只有接收到回程换行才会进入指令处理。 为了安全,无论TCP或HTTP协议,都要求合作方给出接入的IP地址,没有固定IP地址的合作方
  

1 短信协议
1.1 分发中心接口
分发中心接口分为TCP接口和HTTP接口协议,都用的是文本指令方式,也就是说每条指令都是以回程换行结束的,服务端只有接收到回程换行才会进入指令处理。
 为了安全,无论TCP或HTTP协议,都要求合作方给出接入的IP地址,没有固定IP地址的合作方需向业务申明。
指令规则:
1、 每条指令分为指令名和指令体,指令名和指令体之间以空格分隔,格式如下:
指令名 (空格) 指令体
2、 每个指令体又由很多个参数赋值语句构成,各参数赋值语句间以&符号分隔,格式如下:
参数赋值语句1&参数赋值语句2&参数赋值语句3 ••• •••
3、 每个参数赋值语句由一个参数名和一个参数值组成,中间用=或:=分隔,用:=分隔表示该参数的值是经过加码处理的,格式如下:
参数名=值 或 参数名:=加码后的值
4、 加码解码的规则如下:
加码时将字符串中的所有字符转换成其对应的ASCII值的16进制值,例如:“A”的ASCII码值为65,以16进制值表示为41,故应发送两个字符“41”以代表字符“A”。示例:msg:=41代表msg=A
对于汉字则以其内码的16进制值来表示,如“测试”应为:B2E2CAD4。示例:msg:= B2E2CAD4表示的是msg=测试
参数中只要参数标识与内容之间用“:=”连接的都需要解码后方可使用,解码时将每两位当成其ASCII值的16进制值将其还原。
1.1.1 TCP接口协议
服务端地址1:211.154.164.235 端口号:8020
服务端地址2:211.154.164.236 端口号:8020

Tcp协议适合发送量大,发送和接收比较及时,对于Tcp客户端由于某些原因一段时间内不能连接到分发中心服务器,所有的发向该客户端的MO短信和报告都会被缓存起来,等该客户端一旦连接,便会很快补发。
建议合作方建立一个发送一个接收2个连接,如果业务量很大,可以申请多于2个的连接,但须向业务申请后方可加连接,系统对于连接数是有限制的,每个合作方没有特殊声明时连接数是3,一般可以建2个连接,一个连接用于缓冲在某些情况下断开不能很好识别的情况。还有,对于每条连接,我们目前的速度限制是10条/秒,如果你的业务超过每连接每秒10条的限制,可以向业务申请调高每条连接的最高限速。
服务器端要求每连接每分钟都要能从客户端接收到至少一条指令数据,如果超过一分钟没有收到,服务器会向客户端发送一个测试指令,只要合作方回应该指令,那么就认为连接是处于激活状态,如果3分钟内服务端都无法接收到客户端的测试回应,将主动断开连接。客户端程序也应该设置3分钟内不能收到服务器端任何指令将主动断开连接并重新连接。
为了防止分发中心连接负载太重,我们要求任何一个连接因任何原因在断开后20秒内不得连接,20秒后再尝试连接,否则如果在1分钟内超过我们设定的连接次数,我们将限制其在后续10分钟之内不能连接,并向系统管理员告警,由系统管理员根据情况停止该用户的合作帐户。

1.1.1.1 连接登陆指令
连接登陆指令是在客户端成功连接后首先应当而且只能在此时发送的指令:
格式:
Login Name=【注册名】&Pwd=【注册密码】&Type=【注册类型,0:接收和发送;1:接收;2:发送;3:稳定接收;4:稳定发送;默认为0】(回车换行)
如果所有服务注册成功,服务器返回给客户端字符串:
Pass(回车换行)
否则将断开连接。对于一次未连接成功,应至少在20秒以后再重试连接,禁止连续的重试连接。
稳定接收和稳定发送的模式是为了更好的收发而新加协议,在这2个模式下,要求发送一方方保存发送的commandid,并根据回馈的commandid确定哪些接收到了,如果未回馈指令超过一定数目(分发中心的默认数目为该登陆设定的每秒下发数),将暂停发送,等待回馈。这样可以减少网络故障时丢失数据,减少连接缓存溢出导致的单向阻塞。各合作方可以根据情况选择使用。
1.1.1.2 连接测试指令
  分发中心为了测试服务方是否连接,会在等待1分钟未收到任何数据发送测试指令(该指令也可由服务方主动发起,但没有必要,因为分发中心会定时测试的):
 
 分发中心或服务方==>ActiveTest CommandId=【命令标识,4字节整型,循环使用】(回车换行)
 
 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)
1.1.1.3 接收用户上行指令
  该指令是由分发中心向服务方发送用户的短信请求,格式如下:
 
 分发中心==>Deliver (空格)
 CommandId=【命令标识,4字节整型,循环使用】
 &GateName=【源网关名】
 &ItemId=【节目标识,由服务方申请,业务分配】
 &UserNumber:=【用户号码】
 &UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
 &SpNumber=【服务号码,必须以9160开头】
   &TP_pId=【GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9】
   &TP_udhi=【GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐】
 &MsgCode=【短信编码,0:ASCII串;3:短信写卡操作;4:二进制信息;8:UCS2编码;15:含GB汉字;24:UCS2编码闪电短信(Msg<=69个汉字),124:GBK编码闪电短信(Msg<=69个汉字)】
   &Msg:=【短信内容,经加码处理,需解码】
   &LinkID=【要求对于该MO引起的MT下发时附带该参数】
 &AreaCode=【手机所在地区,格式为:(区号,类型,省份,城市)】
 (回车换行)
 
 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)
1.1.1.4 下发短信给用户
  服务方向分发中心提交发送的短信内容,格式如下:
 
  服务方==>Submit (空格)
 CommandId=【命令标识,4字节整型,循环使用】
 &GateName=【目的网关名,该参数为空时默认由分发中心根据手机号码决定目的网关名】
   &ItemId=【节目标识,由服务方申请,业务分配】
   &SpNumber=【服务号码,以9160开头】
   &UserNumber:=【目的用户号码,如果是群发将个号码之间用“,”隔开,注意最多只能有255个群发号码,联通禁止群发】
 &UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
   &FeeNumber:=【计费号码,短信产生的费用由该号码承担,不填时默认向目的用户号码收费】
 &FeeNumberType=【0:计费号码为真实号码,1:计费号码为伪码】
   &FeeType=【计费类型,1:免费,2:按条计费,3:定制包月计费(FeeType=3目前只针对联通有效)。默认:2】
   &ScheduleTime=【定时发送时间,默认立即发送,格式举例:2002年09月10日20:08:00为:020910200800】。
   &ExpireTime=【短信寿命中止时间,格式举例:021201090508,默认为移动或联通(24小时后)中止时间】
   &MtFlag=【*引起MT消息的原因,仅当向联通用户发短信时需要该参数,0-MO点播引起的第一条MT消息;1-MO点播引起的非第一条MT消息; 2-非MO点播引起的MT消息。默认为0】
   &ReportFlag=【状态报告标志,0:不需要状态报告;1:无论成功与否都返回状态报告;2:联通或小灵通包月收费(当FeeType=3时,要求该字段值必须是2);3:只有最后出错时要返回状态报告(联通有效,移动同1),默认:0】
   &MsgCode=【短信编码,0:ASCII串;3:短信写卡操作;524:二进制信息;8:UCS2编码;15:含GB汉字;24:UCS2编码闪电短信(Msg<=69个汉字),124:GBK编码闪电短信(Msg<=69个汉字)
   &MsgId=【用户自定义消息标识,推荐格式:月日时分秒+6位自递增码,例如:9月23日10:00:03发出的序号为1记录可定义为923100003000001。自定义格式最大不超过20个字符且不能有需加码解码的特殊字符】,如果不需要回馈报告可以不写该参数和ExtData参数。
   &ExtData:=【短信扩展数据,服务方短信发送的附加信息,在有报告反馈时会连带该扩展数据反馈给服务方,需加码处理,但加码后不能超过120个字节长度。默认为空串】
   &OverIp=【从网页定制时用户的IP地址,要求在初次包月或点播定制时带有该字段,点播一定在初次收费下发时带有该字段】
   &TP_pId=【GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9】
   &TP_udhi=【GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐】
   &Msg:=【短信内容,需加码处理】
   &LinkID=【短信匹配码,附带引起该MT的MO的匹配码,如果是网上点播,引用网上的匹配码,如果是用户定制信息免费下发,可以不用匹配码】
   &ItemType=【指令类别,0:点播类指令,1:定制类指令(只要是定制节目,无论是下发包月还是下发免费信息,都要求选择值1),2:取消定制指令(只真对联通),3:失败指令(只真对联通,例如定制失败和退订失败),4:联通、小灵通首次点播包月指令(只在首次建立定制关系时使用,之后按值1发送即可),默认为0】
 &MsgCount=【信息发送条目,最终的发送条目为该计数和实际发送条目(Msg和MsgId下脚编号+1)的最小值,例如,实际发送条目是5,而该计数是3,则只会发送前3条,如果实际发送条目是2,而该计数是4,则只会发送2条,对于只有一条发送,可以不写后面这些参数,另外,如果下发超过系统限定的计数,该值也会被系统调整】
   &MsgId1=【用户自定义消息标识,推荐格式:月日时分秒+6位自递增码,例如:9月23日10:00:03发出的序号为1记录可定义为923100003000001。自定义格式最大不超过20个字符且不能有需加码解码的特殊字符】,如果不需要回馈报告可以不写该参数和ExtData参数。
   &Msg1:=【短信内容,需加码处理】
... ...
   &MsgIdn=【用户自定义消息标识,推荐格式:月日时分秒+6位自递增码,例如:9月23日10:00:03发出的序号为1记录可定义为923100003000001。自定义格式最大不超过20个字符且不能有需加码解码的特殊字符,最后的n为数字计数】,如果不需要回馈报告可以不写该参数和ExtData参数。
   &Msgn:=【短信内容,需加码处理,最后的n为数字计数】,注意,Msg1~n必须连续,不能中间跳过某个数字。
 
   (回车换行)
   
 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)

关于最新版本《协议3》的submit指令的变更说明:
  以往如果对一个用户一次下发多条收费,只能采用下发多条submit指令的方式,而每一个submit指令系统都要做一次键权,例如发10条,将经过10次键权,导致下发速度收到限制,为了提高下发速度,现在可以一条submit指令带[msgid,msg],[msgid1,msg1],[msgid2,msg2]...[msgidn,msgn]多条msgid和msg指令对,两两对应,例如msg2的报告将以msgid2来标识并反馈,这样大家也可以分别收到各内容的报告反馈。这样下发的指令在管理网站上看到的将是n+1(n为msg下角标)条记录,移动的收费也是n+1条。也就是说只是在键权时是一次键权,键权完成后就又分成n+1条短信下发了,和大家原来下发n+1条短信是一样的,但这样下发可以提高效率。
1.1.1.5 接收发送报告
指令在发送过程中出现各种成功、错误等状态变化,以及移动在短信提交给用户后的状态反馈都以报告方式发送给源发送方。分发中心向服务方发送报告,格式如下:
 
   分发中心==>Report (空格)
 CommandId=【命令标识,4字节整型,循环使用】
 &GateName=【源网关名】
   &MsgId=【服务方在Submit时写在MsgId参数中的值】
 &ExtData:=【服务方在Submit时写在ExtData参数中的值】
 &State=【发送状态,0:向网关提交成功(中间状态,后续还会有报告反馈),1:向网关提交失败,2:发送成功,3:等待发送(中间状态,后续还会有报告反馈),4:发送失败,5:Submit参数错误,6:定制被拒绝[该用户已经订制了该费率的服务,或当月已收取该用户的费用,不能再下发包月收费,故被拒绝。],7:黑名单用户,8:该手机单日流量超限,9:限制发送】
 &StateMsg=【附加状态信息,对于State的解释文字】
   &UserNumber:=【目的用户号码】
 &UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
 &FeeNumber:=【该包月对应的计费号码,对于移动的报告反馈可能会没有该字段,只有UserNumber】
 &FeeNumberType=【0:计费号码为真实号码,1:计费号码为伪码】
 &FeeType=【报告对应指令的计费类型,1:免费,2:按条计费,3:定制包月计费】
 &ItemId= 【报告对应指令节目标识】
 (回车换行)

 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)

 注:只要是报告发送失败请先找原因,不要再重发,只要有错无论重发多少次都是失败。
1.1.1.6 接收定制状态变更
分发中心向服务方通报定制状态变化,格式如下:
   分发中心==>Orderchg (空格)
 CommandId=【命令标识,4字节整型,循环使用】
   &ItemId=【节目标识】
   &UserNumber:=【取消定制的手机号码】
 &UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
   &OrderState=【变更状态,0:用户取消定制,1:用户定制节目,2:暂停节目,3:激活节目,默认:0】
 &Reason:=【原因,最多40个字节】
 &Msg:=【表示当移动用户通过MO方式建立定制时所发送的定制指令的内容】
 &AreaCode=【手机所在地区,格式为:(区号,类型,省份,城市)】
 (回车换行)

 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)
1.1.1.7 主动变更定制状态
服务方主动建立或取消定制关系
   服务方==>Ordersub (空格)
 CommandId=【命令标识,4字节整型,循环使用】
 &GateName=【取消手机所属网关名】,默认由分发中心根据手机号码决定目的网关名】
   &ItemId=【节目标识】
   &UserNumber:=【取消定制的手机号码】
 &UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码,默认:0】
 &OrderType=【提交类型,0:仅执行变更操作,1:执行变更操作向其他节目通知(需要特定权限2),2:不执行变更操作仅向其他节目通知(需要特定权限2),默认:0】
   &OrderState=【变更状态,0:用户取消定制,1:用户建立定制,2:取消其他节目的定制(需要特定权限2),3:已建立其他节目的定制(需要特定权限3),4:暂停其他节目的定制(需要特定权限2),5:激活其他节目的定制(需要特定权限3),默认:0】
    &OrderSure=【变更确认(该参数对合作方没有意义,如果置位将被忽略,是系统服务用的,在特定权限2或3时有效),0:服务状态变更,1:仅业务状态变更】
   &MonthType=【建立定制时的包月类型,0:定制包月,1:点播包月,默认:0】
   &OverIp=【从网页定制时用户的IP地址,要求在初次包月或点播定制时带有该字段,点播一定在初次收费下发时带有该字段】
 &Reason:=【状态变更原因,最多40个字节】
 &Msg:=【移动用户在发送定制时发送的定制指令内容】
   &MsgId=【用户自定义消息标识,推荐格式:月日时分秒+6位自递增码,例如:9月23日10:00:03发出的序号为1记录可定义为923100003000001。自定义格式最大不超过20个字符且不能有需加码解码的特殊字符】,如果不需要回馈报告可以不写该参数。
   &ExtData:=【短信扩展数据,服务方短信发送的附加信息,在有报告反馈时会连带该扩展数据反馈给服务方,需加码处理,但加码后不能超过120个字节长度。默认为空串】
 (回车换行)

 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)

注意:参数中注明需要特定权限的参数值是为系统的特殊需要建立的,合作方是不能发送这些参数的,如果发送,会立即报错的。

1.1.1.8 上报可疑手机
游戏代收费服务方上报可疑手机,分发中心将限制该手机针对游戏代收费节目的服务
   服务方==>BkPhoneSub (空格)
 CommandId=【命令标识,4字节整型,循环使用】
 &GateName=【取消手机所属网关名】,默认由分发中心根据手机号码决定目的网关名】
   &ItemId=【对应的游戏节目的标识】
   &UserNumber:=【可疑手机号码】
 (回车换行)

 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)
1.1.2 TCP接口协议流程示例
下面示例中的一些参数要根据实际情况做变化的,例如commandid、msgid等要根据协议的生成方式生成。
1.1.2.1 点播流程
假如业务给合作方分配的长号码是9160123,节目itemid为66601,那么用户(假定为13999999999),发送“测试”到9160123,那么合作方将收到下述指令(部分参数在实际中的值有可能不同,例如如果是130~133开头的手机号码,gatename=unicom):
deliver  gatename=mobile&usernumber=13999999999&usernumbertype=0&msgcode=15&tp_pid=0&tp_udhi=0&linkid=15462
421398357240097&spnumber=9160123&itemid=66601&commandid=3b3de5&msg:= B2E2CAD4
 合作方接收到该指令后如果想给用户下发信息为“测试成功”,则如下:
 submit gatename=mobile&itemid=66601&spnumber=9160123&usernumber=13999999999&msgcode=15&feetype=2&linkid
=15462421398357240097&itemtype=0&msg:=B2E2CAD4B3C9B9A6&msgid=092215544200724
 注意:Submit指令中的linkid必须和Deliver指令中的linkid的值一样,目前小灵通的协议中没有linkid,发送小灵通短信可以不带linkid
1.1.2.2 移动定制取消流程
(1)由用户主动发送定制指令短信为主动定制,假如用户发送DE到9160123是定制某新闻节目的指令,合作方真对该节目的itemid=66602,那么当用户发送DEXW到9160123时,移动提示用户定制新闻成功,并通过下述指令通知服务方:
Orderchg CommandId=12345678&ItemId=66602&UserNumber=13999999999&UserNumberType=0&OrderState=1&Reason:= D6F7B6AFB6A8D6C6&Msg:= 44455857
(2)由服务方主动发起的定制叫反向定制, 移动的反向定制需要向移动申请后方可实现,如果该节目的itemid=66602已经申请了反向定制,那么合作方可以发送下述指令:
Ordersub CommandId=1234567&GateName=mobile&ItemId=66602&UserNumber=13999999999&OrderType=0&OrderState=1
&MonthT
ype=0&msgid=092215544200724
注意,如果申请的反向定制是点播定制时,需要&MonthType=1。
如果反向定制成功,系统会通过下述指令通知合作方(和1中指令一样,只是没有了msg):
Orderchg CommandId=12345678&ItemId=66602&UserNumber=13999999999&UserNumberType=0&OrderState=1&Reason:= D6F7B6AFB6A8D6C6
(3)用户主动取消定制、移动收费失败要求暂停用户、移动多次尝试收费都失败要求取消定制都以下列方式下发:
Orderchg CommandId=12345678&ItemId=66602&UserNumber=13999999999&UserNumberType=0&OrderState=0&Reason:= D3C3BBA7C8A1CFFB
注意,OrderState和Reason会因为状态不同而变化。
(4)合作方主动取消定制,指令如下例:
Ordersub CommandId=1234567&GateName=mobile&ItemId=66602&UserNumber=13999999999&OrderType=0&OrderState=
0&MonthType=0&msgid=092215544200724
注意,如果是点播定制时,需要&MonthType=1。

1.1.2.3 联通定制取消流程
(1)联通由用户主动发起的定制短信都会首先被联通拦截,并向用户二次确认用户是否要定制该节目,确认方式是再次发该定制指令到该节目,用户的二次确认指令会以Deliver指令方式送达合作方,如下例,用户发送TPBY到9160实现图片包月:
deliver  gatename=unicom&usernumber=13099999999&msgcode=15&tp_pid=0&tp_udhi=0&linkid= 32200004&spnumber=9160&itemid=66602&commandid=3b3de5&msg:= 54504259
注意,联通无法实现长号码定制,因此如果以用户主动定制方式,我们都需要向联通专门申请
合作方接收到该条MO指令后下发:
submit gatename=unicom&itemid=66602&spnumber=9160123&usernumber=13099999999&msgcode=15&feetype=1&linkid=
32200004&itemtype=1&msg:=B6A8D6C6B3C9B9A6&msgid=092215544200724
注意,Submit指令的Linkid必须和接收到的Deliver指令的Usernumber 和Linkid一致,另外,该条下发短信只是通知联通定制成功,是不会下发给用户的。该条下发后,联通会反馈一个报告:
Report CommandId=1234&GateName=unicom&MsgId=092215544200724&State=4&StateMsg=44&UserNumber=13099999999
&FeeType=1&ItemId=66602
只要反馈报告中&StateMsg=44表示定制成功,否则表示失败。
在成功收到&StateMsg=44后就可以认为用户已经定制成功了,并可以给用户下发信息,如下例:
submit gatename=unicom&itemid=66602&spnumber=9160123&usernumber=13099999999&msgcode=15&feetype=1&itemtype
=1&msg:= C4FAB5C4C3D8C3DCCEAAA3BA31323334&msgid=092215544200725
注意,定制成功后给用户下发信息不用带Linkid,包月定制下发信息用FeeType=1(即免费)方式下发,点播包月下发信息用FeeType=2(按条)方式。
在向用户下发上条定制成功的通知信息的同时,可以下发首次包月收费包,如下例:
submit gatename=mobile&itemid=66602&spnumber=9160123&usernumber=13099999999&msgcode=15&feetype=3 &ReportFlag=2&itemtype=1&msg:= B0FCD4C2&msgid=092215544200726
对于首次收费,收费包会在分发中心滞留72小时后向联通网关发起收费,以后合作方定时下发包月收费包以收取用户费用,也可以向业务申请除首次收费后的后续收费由分发中心自动完成。

(2)由服务方主动发起的定制叫反向定制,联通的反向定制无需申请,如果该节目的itemid=66602,那么合作方可以发送下述指令:
Ordersub CommandId=1234567&GateName=mobile&ItemId=66602&UserNumber=13099999999&OrderType=0&OrderState=1&
MonthType=0&msgid=092215544200724
注意,如果申请的反向定制是点播定制时,需要&MonthType=1。
联通反向定制是由联通的中心系统向用户发一条短信,内容大概是告诉用户如果需要定制某节目,例如发TPBY到9160定制图片包月节目,然后如果用户发送TPBY到9160,那么将同(1)的步骤一样,收到一条Deliver指令,下面的步骤请查阅(1)。
(3)用户主动取消定制、收费失败要求取消定制都以下列方式下发:
Orderchg CommandId=12345678&ItemId=66602&UserNumber=13099999999&OrderState=0&Reason:= D3C3BBA7C8A1CFFB
注意,OrderState和Reason会因为状态不同而变化。
(4)合作方主动取消定制,指令如下例:
Ordersub CommandId=1234567&GateName=mobile&ItemId=66602&UserNumber=13099999999&OrderType=0&OrderState=0
&MonthType=0&msgid=092215544200726
注意,如果是点播定制时,需要&MonthType=1。

1.1.2.4 小灵通定制取消流程
(1)小灵通由用户主动发起的定制短信会以MO方式提交给合作方,小灵通目前没有限定具体的定制指令,哪些是定制指令由合作方自己指定:
deliver  gatename=xlt&usernumber=02266666666&msgcode=15&spnumber=91600&itemid=66602&commandid=3b3de5&msg:
= 54504259
合作方接收到该MO后可下发一条包月收费话单进行收费和一条免费短信告诉用户定制成功。
收费短信,以后每月合作方必须发送一次才能收取用户费用,如果要求我们在每月自动代发需向业务说明:
submit gatename=mobile&itemid=66602&spnumber=91600123&usernumber=02266666666&msgcode=15&feetype=
3 &ReportFlag=2&itemtype=1&msg:= B0FCD4C2&msgid=092215544200727
通知用户定制成功的短信,以后给用户发信息的免费短信也同此格式:
submit gatename=mobile&itemid=66602&spnumber=91600123&usernumber=02266666666&msgcode=15&feetype=1&itemtype=
1&msg:= [具体内容根据节目制定]&msgid=092215544200728
小灵通目前没有72小时问题,应该是及时收费。

(2)用户主动取消定制、收费失败要求取消定制都以下列方式下发:
Orderchg CommandId=12345678&ItemId=66602&UserNumber=02266666666&OrderState=0&Reason:= D3C3BBA7C8A1CFFB
注意,OrderState和Reason会因为状态不同而变化。
(3)合作方主动取消定制,指令如下例:
Ordersub CommandId=1234567&GateName=mobile&ItemId=66602&UserNumber=02266666666&OrderType=0&OrderState=
0&MonthType=0&msgid=092215544200726
注意,如果是点播定制时,需要&MonthType=1。
(4)小灵通点播定制的节目,要求在第一次下发时itemtype=4先建立定制关系,否则我们将限制后续下发,例如:
submit gatename=mobile&itemid=66602&spnumber=91600123&usernumber=02266666666&msgcode=15&feetype=2&itemtype
=4&msg:= B0FCD4C2&msgid=092215544200727
此处,如果第一条暂不收用户费用,feetype=1&itemtype=4也可以建立定制关系。

1.1.3 HTTP接口协议
服务端地址:211.154.164.235 端口号:8030
服务端地址:211.154.164.236  端口号:8030

Http协议适合发送量不大但开发相对简单。使用Http协议还想接收MO和报告的合作方,需要向业务申明自己的接收地址,我们会向合作方制定链接网页发送MO和报告,而参数格式参照我们给的协议说明。
Http协议和Tcp协议的区别除了端口不一样、多了“&Name=【注册名】&Pwd=【注册密码】”外,其他都是一致的,所以解释和内容如果出现与Tcp协议的某些不一致,以Tcp协议为准。
1.1.3.1 接收用户上行指令
该指令是由分发中心向服务方发送用户的短信请求,格式如下:
 
 分发中心==>【服务方HTTP链接地址】?
 Command=deliver【该指令表示接收到用户短信】 
&CommandId=【命令标识,4字节整型,循环使用】
 &GateName=【源网关名】
 &ItemId=【节目标识,由服务方申请,业务分配】
 &UserNumber:=【用户号码】
 &UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
 &SpNumber=【服务号码,必须以9160开头】
   &TP_pId=【GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9】
   &TP_udhi=【GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐】
 &MsgCode=【短信编码,0:ASCII串;3:短信写卡操作;4:二进制信息;8:UCS2编码;15:含GB汉字;24:UCS2编码闪电短信(Msg<=69个汉字),124:GBK编码闪电短信(Msg<=69个汉字)】
   &Msg:=【短信内容,经加码处理,需解码】
   &LinkID=【要求对于该MO引起的MT下发时附带该参数】
 (回车换行)
 
 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)

1.1.3.2 下发短信给用户
 服务方==>http://211.154.164.235:8030/Submit (空格)
 CommandId=【命令标识,4字节整型,循环使用】
 &Name=【注册名】
 &Pwd=【注册密码】
 &GateName=【目的网关名,该参数为空时默认由分发中心根据手机号码决定目的网关名】
   &ItemId=【节目标识,由服务方申请,业务分配】
   &SpNumber=【服务号码,以9160开头】
   &UserNumber:=【目的用户号码,如果是群发将个号码之间用“,”隔开,注意最多只能有255个群发号码,联通禁止群发】
 &UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
   &FeeNumber:=【计费号码,短信产生的费用由该号码承担,不填时默认向目的用户号码收费】
 &FeeNumberType=【0:计费号码为真实号码,1:计费号码为伪码】
   &FeeType=【计费类型,1:免费,2:按条计费,3:定制包月计费(FeeType=3目前只针对联通有效)。默认:2】
   &ScheduleTime=【定时发送时间,默认立即发送,格式举例:2002年09月10日20:08:00为:020910200800】。
   &ExpireTime=【短信寿命中止时间,格式举例:021201090508,默认为移动或联通(24小时后)中止时间】
   &MtFlag=【*引起MT消息的原因,仅当向联通用户发短信时需要该参数,0-MO点播引起的第一条MT消息;1-MO点播引起的非第一条MT消息; 2-非MO点播引起的MT消息。默认为0】
   &ReportFlag=【状态报告标志,0:不需要状态报告;1:无论成功与否都返回状态报告;3:只有最后出错时要返回状态报告(联通有效,移动同1),默认:0】
   &MsgCode=【短信编码,0:ASCII串;3:短信写卡操作;524:二进制信息;8:UCS2编码;15:含GB汉字;24:UCS2编码闪电短信(Msg<=69个汉字),124:GBK编码闪电短信(Msg<=69个汉字)
   &MsgId=【用户自定义消息标识,推荐格式:月日时分秒+6位自递增码,例如:9月23日10:00:03发出的序号为1记录可定义为923100003000001。自定义格式最大不超过20个字符且不能有需加码解码的特殊字符】,如果不需要回馈报告可以不写该参数和ExtData参数。
   &ExtData:=【短信扩展数据,服务方短信发送的附加信息,在有报告反馈时会连带该扩展数据反馈给服务方,需加码处理,但加码后不能超过120个字节长度。默认为空串】
   &OverIp=【从网页定制时用户的IP地址,要求在初次包月或点播定制时带有该字段,点播一定在初次收费下发时带有该字段】
   &TP_pId=【GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9】
   &TP_udhi=【GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐】
   &Msg:=【短信内容,需加码处理】
   &LinkID=【短信匹配码,附带引起该MT的MO的匹配码,如果是网上点播,引用网上的匹配码,如果是用户定制信息免费下发,可以不用匹配码】
   &ItemType=【指令类别,0:点播类指令,1:定制类指令(只要是定制节目,无论是下发包月还是下发免费信息,都要求选择值1),2:取消定制指令(只真对联通),3:失败指令(只真对联通,例如定制失败和退订失败),4:联通或小灵通首次点播包月指令(只在首次建立定制关系时使用,之后按值1发送即可),默认为0】
&MsgCount=【信息发送条目,最终的发送条目为该计数和实际发送条目(Msg和MsgId下脚编号+1)的最小值,例如,实际发送条目是5,而该计数是3,则只会发送前3条,如果实际发送条目是2,而该计数是4,则只会发送2条,对于只有一条发送,可以不写后面这些参数,另外,如果下发超过系统限定的计数,该值也会被系统调整】
   &MsgId1=【用户自定义消息标识,推荐格式:月日时分秒+6位自递增码,例如:9月23日10:00:03发出的序号为1记录可定义为923100003000001。自定义格式最大不超过20个字符且不能有需加码解码的特殊字符】,如果不需要回馈报告可以不写该参数和ExtData参数。
   &Msg1:=【短信内容,需加码处理】
... ...
   &MsgIdn=【用户自定义消息标识,推荐格式:月日时分秒+6位自递增码,例如:9月23日10:00:03发出的序号为1记录可定义为923100003000001。自定义格式最大不超过20个字符且不能有需加码解码的特殊字符,最后的n为数字计数】,如果不需要回馈报告可以不写该参数和ExtData参数。
   &Msgn:=【短信内容,需加码处理,最后的n为数字计数】,注意,Msg1~n必须连续,不能中间跳过某个数字。
   (回车换行)
   
 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)

1.1.3.3 接收发送报告
 分发中心==>【服务方HTTP链接地址】?
 Command=report
 &CommandId=【命令标识,4字节整型,循环使用】
 &GateName=【源网关名】
   &MsgId=【服务方在Submit时写在MsgId参数中的值】
 &ExtData:=【服务方在Submit时写在ExtData参数中的值】
 &State=【发送状态,0:向网关提交成功(中间状态,后续还会有报告反馈),1:向网关提交失败,2:发送成功,3:等待发送(中间状态,后续还会有报告反馈),4:发送失败,5:Submit参数错误,6:定制被拒绝[该用户已经订制了该费率的服务,或当月已收取该用户的费用,不能再下发包月收费,故被拒绝。],7:黑名单用户,8:该手机单日流量超限,9:限制发送】
 &StateMsg=【附加状态信息,对于State的解释文字】
   &UserNumber:=【目的用户号码】
 &UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
 &FeeNumber:=【该包月对应的计费号码,对于移动的报告反馈可能会没有该字段,只有UserNumber】
 &FeeNumberType=【0:计费号码为真实号码,1:计费号码为伪码】
 &FeeType=【报告对应指令的计费类型,1:免费,2:按条计费,3:定制包月计费】
 &ItemId= 【报告对应指令节目标识】
 (回车换行)

 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)

 注:只要是报告发送失败请先找原因,不要再重发,只要有错无论重发多少次都是失败。

1.1.3.4 接收定制状态变更
 分发中心==>【服务方HTTP链接地址】?
 Command=Orderchg
 &CommandId=【命令标识,4字节整型,循环使用】
   &ItemId=【节目标识】
   &UserNumber:=【取消定制的手机号码】
 &UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
   &OrderState=【变更状态,0:用户取消定制,1:用户定制节目,2:暂停节目,3:激活节目,默认:0】
 &Reason:=【原因,最多40个字节】
 &Msg:=【表示当移动用户通过MO方式建立定制时所发送的定制指令的内容】
 &AreaCode=【手机所在地区,格式为:(区号,类型,省份,城市)】
 (回车换行)

 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)

 
1.1.3.5 主动变更定制状态
 服务方==>http://211.154.164.235:8030/Ordersub (空格)
 CommandId=【命令标识,4字节整型,循环使用】
 &Name=【注册名】
 &Pwd=【注册密码】
 &GateName=【取消手机所属网关名】,默认由分发中心根据手机号码决定目的网关名】
   &ItemId=【节目标识】
   &UserNumber:=【取消定制的手机号码】
 &UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码,默认:0】
 &OrderType=【提交类型,0:仅执行变更操作,1:执行变更操作向其他节目通知(需要特定权限2),2:不执行变更操作仅向其他节目通知(需要特定权限2),默认:0】
   &OrderState=【变更状态,0:用户取消定制,1:用户建立定制,2:取消其他节目的定制(需要特定权限2),3:已建立其他节目的定制(需要特定权限3),4:暂停其他节目的定制(需要特定权限2),5:激活其他节目的定制(需要特定权限3),默认:0】
    &OrderSure=【变更确认(该参数对合作方没有意义,如果置位将被忽略,是系统服务用的,在特定权限2或3时有效),0:服务状态变更,1:仅业务状态变更】
   &MonthType=【建立定制时的包月类型,0:定制包月,1:点播包月,默认:0】
   &OverIp=【从网页定制时用户的IP地址,要求在初次包月或点播定制时带有该字段,点播一定在初次收费下发时带有该字段】
 &Reason:=【状态变更原因,最多40个字节】
 &Msg:=【移动用户在发送定制时发送的定制指令内容】
   &MsgId=【用户自定义消息标识,推荐格式:月日时分秒+6位自递增码,例如:9月23日10:00:03发出的序号为1记录可定义为923100003000001。自定义格式最大不超过20个字符且不能有需加码解码的特殊字符】,如果不需要回馈报告可以不写该参数。
   &ExtData:=【短信扩展数据,服务方短信发送的附加信息,在有报告反馈时会连带该扩展数据反馈给服务方,需加码处理,但加码后不能超过120个字节长度。默认为空串】
 (回车换行)

 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)

注意:参数中注明需要特定权限的参数值是为系统的特殊需要建立的,合作方是不能发送这些参数的,如果发送,会立即报错的。
1.1.3.6 查询用户是否在开机状态
  服务方==> http://211.154.164.235:8030/QueryUserinfo(空格)
 CommandId=【命令标识,4字节整型,循环使用】
&Name=【注册名】
 &Pwd=【注册密码】
   &ItemId=【节目标识,必须为免费业务】
   &UserNumber:=【需要查询的手机号码】
   &MsgId=【用户自定义消息标识,推荐格式:月日时分秒+6位自递增码,例如:9月23日10:00:03发出的序号为1记录可定义为923100003000001。自定义格式最大不超过20个字符且不能有需加码解码的特殊字符】,必需,系统返回查询结果(ReturnUserinfo)将带入此参数
&ExpireTime=【查询过期时间,格式举例:021201090508,范围:发送后1~24小时之间,默认为(24小时后)】

(回车换行)

 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)
    注意:仅支持移动用户
1.1.3.7 返回用户开关机状态
分发中心==>【服务方HTTP链接地址】?
    Command= ReturnUserinfo
 &CommandId=【命令标识,4字节整型,循环使用】
   &ItemId=【节目标识】
   &UserNumber:=【查询的手机号码】
&MsgId=【服务方在QueryUserinfo时写在MsgId参数中的值】
   &State=【开关机状态,2:表示查询到结果为开机,此次查询中止;1:表示查询到结果为已关机,查询未中止,如果在过期时间之前用户开机,返回2,如果在过期时间之前用户没有开机,则中止此次查询,不再返回结果;5:无效参数itemid;4:用户号码问题,详情查看参数StateMsg】
 &StateMsg:=【查询结果的中文说明,最多40个字节】
 (回车换行)

 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)
1.1.3.8 上报可疑手机
游戏代收费服务方上报可疑手机,分发中心将限制该手机针对游戏代收费节目的服务
  服务方==> http://211.154.164.235:8030/ BkPhoneSub(空格)
 CommandId=【命令标识,4字节整型,循环使用】
&Name=【注册名】
 &Pwd=【注册密码】
 &GateName=【取消手机所属网关名】,默认由分发中心根据手机号码决定目的网关名】
   &ItemId=【对应的游戏节目的标识】
   &UserNumber:=【可疑手机号码】
 (回车换行)

 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)

1.1.4 Http接口协议流程示例
Http协议的点播、定制的流程和Tcp协议是一致的,参数只是每条语句多了用户名和密码,我们举一个点播的示例,其他例子参照Tcp协议示例(假定合作方申请的接收地址为:http://202.202.202.202/rec.asp?):
假如业务给合作方分配的长号码是9160123,节目itemid为66601,那么用户(假定为13999999999),发送“测试”到9160123,那么合作方将收到下述指令(部分参数在实际中的值有可能不同,例如如果是130~133开头的手机号码,gatename=unicom):
http://202.202.202.202/rec.asp?Command=deliver  gatename=mobile&usernumber=13999999999&usernumbertype=0&msgcode=15&tp_pid=0&tp_udhi=0&linkid=
15462421398357240097&spnumber=9160123&itemid=66601&commandid=3b3de5&msg:= B2E2CAD4
 合作方接收到该指令后如果想给用户下发信息为“测试成功”,则如下:
 http://211.154.164.235:8030/Submit  CommandId=1234&Name=test&Pwd=test123&gatename=mobile&itemid=66601&spnumber=9160123&usernumber=
13999999999&msgcode=15&feetype=2&linkid=15462421398357240097&itemtype=0&msg:=B2E2CAD4B3C9B9A6&msgid=
092215544200724
 注意:Submit指令中的linkid必须和Deliver指令中的linkid的值一样,Http指令中必须每条指令都带“&Name=用户名&Pwd=密码”,以识别合作方身份。
1.1.5 接口API
下载地址:
http://211.148.189.137/tcpface3.exe   
1.1.6 移动SSO接口
服务端地址:211.148.189.137 端口号:8070
移动SSO接口适合网上定制、点播,不需要用户上行的合作方。本接口通过Http转接到移动梦网中心,通过移动梦网机制对用户进行相关点播和定制,然后根据点播及定制关系通过Tcp/Http 接口协议对用户进行按条收费或下发信息。

本SSO接口的使用可采用<a>标签连接 或Get/Post 传递。遵守Http网络传送协议。
1.1.6.1 连接指令
服务方主动建立==>Http://211.148.189.137:8070/order ?
CommandId  = 【服务产生的业务处理标识】
CPKeys: = 【注册名 需要做 ASCII 十六进制加码】
&Itemid = 【 分配的节目标识】
&FeeNumber = 【计费号码,短信产生的费用由该号码承担】
&Feetype =【收费操作类型 2 点播 (按条) 类 3 定制类 包括包月定制,按条定制】
&CTtag  = 【点播的节目名称标签 区分所点播的内容,在点播DeliverUrl 里跟有此值,点播(FeeType=2)可用。定制类(FeeType=3)不带此参数】
&backUrl = 【用户操作成功后 返回的主页面地址,必须为文件名结尾,如:http://123.com/index.jsp 】
&deliverurl= 【用户点播成功后,为用户下行短信处理的页面地址,必须为文件名结尾,如:http://123.com/deliver.jsp(点播必须) 】
   &OverIP =【用户的登陆IP地址 定制包月时必须带有此参数 】
1.1.6.2 返回BackUrl页面指令
SSO中心 ==> backUrl ?
CommandID= 【服务产生的业务处理标识】
&ResultID= 【业务处理状态:0表示成功 其他表示失败】
&ResultString =【此业务处理结果,ResultID =0时,为OK 成功,其他为错误类型】
&sessionID= 【业务处理临时Session, 扩展 可以不处理(可选)】
1.1.6.3 返回DeliverUrl页面指令
SSO中心 ==> deliverUrl ?
        CommandID= 【服务点播产生的业务处理标识】
       &ItemID= 【节目标识】
        &UserNumberType=【接受方类型0真实码 1伪码】        
      &UserNumber= 【接受方手机号码,多个号码之间以","分开 】
      &FeeNumberType= 【计费方类型 0真实码 1伪码】
      &FeeNumber= 【计费号码,产生的费用由该号码承担 】
&LinkID=  【对应接受方手机号的鉴全标识,下发短信时带上此标识,多个之间以","分开】
      &CTtag= 【 针对点播的 内容标签 对应Order 里CTtag 】
      
      回应:OK  回车换行  
1.1.6.4 用户登陆【移动梦网窗口】
将此下<iframe>镶套在短信主页的左上角。
<iframe width=180 height=153 name=sp_login src=http://sso.monternet.com/sp_logon.jsp?ICPCode=902160# border=0 frameborder=0></iframe>

1.1.6.5 SSO 点播/定制下发短信格式
注:下发短信格式见“短信接口协议”    
点播:
如:
http://211.154.164.235:8030/Submit%20CommandId=1&Name=testname&Pwd=88888&ItemId=1234&SpNumber=9160&UserNumbertype=0&UserNumber=
13999999999&FeeNumberType=0&FeeNumber=13999999999&FeeType=2&LinkID=1234567890&MsgCode=15&Msg:=
54455354

定制:
如:
http://211.154.164.235:8030/Submit%20CommandId=1&Name=testname&Pwd=88888&ItemId=1234&SpNumber=9160&UserNumbertype=0&UserNumber=
13999999999&FeeType=1&ItemType=1&MsgCode=15&Msg:=54455354
   
1.1.7 网站联盟
根据【SSO接口协议】扩展使用!
(正在整理中)
2 彩信协议
2.1 分发中心接口
参照短信协议
2.1.1 TCP接口协议
参照短信协议
2.1.1.1 连接登陆指令
参照短信协议
2.1.1.2 接收用户上行指令
  该指令是由分发中心向服务方发送用户的短信请求,格式如下:
 
 分发中心==>Deliver (空格)
 CommandId=【命令标识,4字节整型,循环使用】
 &GateName=【源网关名】
 &ItemId=【节目标识,由服务方申请,业务分配】
 &UserNumber:=【用户号码】
 & toNumber:= 【下发用户号码群,不同号码用逗号隔开】
 & ccNumber:= 【抄送用户号码群,不同号码用逗号隔开】
 & bccNumber:= 【密送用户号码群,不同号码用逗号隔开】
 &SpNumber=【服务号码,必须以9160开头】
 &MsgCode=【短信编码,0:ASCII串;3:短信写卡操作;4:二进制信息;8:UCS2编码;15:含GB汉字;24:UCS2编码闪电短信(Msg<=69个汉字),124:GBK编码闪电短信(Msg<=69个汉字)】
   &Msg:=【短信内容,经加码处理,需解码】
   &ContentID:=【内容标识,需加码处理】
   &ContentType=【内容类型】
   &Content:=【内容,需加码处理】
   &ContentID1:=【内容1标识,需加码处理】
   &ContentType1=【内容1类型】
   &Content1:=【内容1,需加码处理】
 ... …
   &ContentID(n):=【内容n标识,需加码处理】
   &ContentType(n)=【内容n类型】
   &Content(n):=【内容n,需加码处理】
 &LinkID=【要求对于该MO引起的MT下发时附带该参数】

 (回车换行)
 
 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)
 注:ContentID(n)、,ContentType(n)、Content(n)的n代表实际的序列号,例如第5个内容ID应该为ContentID5。Msg的内容一般被设置成遇到的第一个类型为文本类型的内容,而且后面的内容参数中也会出现该参数,设置Msg是为了获取用户指令方便,并向短信兼容。
2.1.1.3 下发彩信给用户
  服务方向分发中心提交发送的短信内容,格式如下:
 
  服务方==>Submit (空格)
 CommandId=【命令标识,4字节整型,循环使用】
 &GateName=【目的网关名,彩信的网关必须设置成“mms”,否则会作为短信下发】
   &ItemId=【节目标识,由服务方申请,业务分配】
   &SpNumber=【服务号码,以9160or8833开头】
   &UserNumber:=【目的用户号码,如果是群发将个号码之间用“,”隔开,注意最多只能有255个群发号码,彩信中将以To的方式下发】
 & MContentType =【彩信类型,可以不设置,不设置时被定为“application/vnd.wap.multipart.mixed”】
   &FeeNumber:=【计费号码,短信产生的费用由该号码承担,不填时默认向目的用户号码收费】
   &FeeType=【计费类型,免费1收费2】
   &ScheduleTime=【定时发送时间,默认立即发送,格式举例:2002年09月10日20:08:00为:020910200800】。
   &ExpireTime=【短信寿命中止时间,格式举例:021201090508,默认为移动或联通(24小时后)中止时间】
   &ReportFlag=【状态报告标志,0:不需要状态报告;1:无论成功与否都返回状态报告;3:只有最后出错时要返回状态报告(联通有效,移动同1),默认:0】
   &MsgId=【用户自定义消息标识,推荐格式:月日时分秒+6位自递增码,例如:9月23日10:00:03发出的序号为1记录可定义为923100003000001。自定义格式最大不超过20个字符且不能有需加码解码的特殊字符】,如果不需要回馈报告可以不写该参数和ExtData参数。
   &ExtData:=【短信扩展数据,服务方短信发送的附加信息,在有报告反馈时会连带该扩展数据反馈给服务方,需加码处理,但加码后不能超过120个字节长度。默认为空串】
   &OverIp=【从网页定制时用户的IP地址,要求在初次包月或点播定制时带有该字段,点播一定在初次收费下发时带有该字段】
   &Msg:=【彩信标题,需加码处理】
&ItemType=【指令类别,0:点播类指令,1:定制类指令(只要是定制节目,无论是下发包月还是下发免费信息,都要求选择值1),2:取消定制指令(只真对联通),3:失败指令(只真对联通,例如定制失败和退订失败),4:移动、联通首次点播包月指令(只在首次建立定制关系时使用,之后按值1发送即可),默认为0】
&MContentType:=【彩信全局格式,默认为:application/vnd.wap.multipart.mixed,需要加码,一般Smil格式应该是:application/smil】
   &ContentID:=【内容标识,需加码处理】
   &ContentType:=【内容类型,对于Smil格式,类型设置为text/plain等】
   &Content:=【内容,需加码处理,对于Smil格式,为smil文件内容,对于后续的ContentID1、ContentType1、Content1…,一般为smil文件中对象的描述】
   &ContentID1:=【内容1标识,需加码处理】
   &ContentType1:=【内容1类型】
   &Content1:=【内容1,需加码处理】
 ... …
   &ContentID(n):=【内容n标识,需加码处理】
   &ContentType(n):=【内容n类型】
   &Content(n):=【内容n,需加码处理】
 &LinkID=【要求对于该MO引起的MT下发时附带该参数】 

   (回车换行)
   
 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)
 注:ContentID(n)、,ContentType(n)、Content(n)的n代表实际的序列号,例如第5个内容ID应该为ContentID5。Msg的内容在这里被作为标题用了,因此只能是文本。彩信的网关&GateName必须设置成“mms”,否则会作为短信下发
以后发送定制包月时要求:FeeType=1,ItemType=1
以后发送点播包月时要求:FeeType=2,ItemType=1

2.1.1.4 接收发送报告
指令在发送过程中出现各种成功、错误等状态变化,以及移动在彩信提交给用户后的状态反馈都以报告方式发送给源发送方。分发中心向服务方发送报告,格式如下:
 
   分发中心==>Report (空格)
 CommandId=【命令标识,4字节整型,循环使用】
 &GateName=【源网关名】
   &MsgId=【服务方在Submit时写在MsgId参数中的值】
 &ExtData:=【服务方在Submit时写在ExtData参数中的值】
 &State=【发送状态,0:向网关提交成功(中间状态,后续还会有报告反馈),1:向网关提交失败,2:发送成功,3:等待发送(中间状态,后续还会有报告反馈),4:发送失败,5:Submit参数错误,6:定制被拒绝[该用户已经订制了该费率的服务,或当月已收取该用户的费用,不能再下发包月收费,故被拒绝。],7:黑名单用户,8:该手机单日流量超限,9:限制发送】
 &StateMsg=【附加状态信息,对于State的解释文字】
   &UserNumber:=【目的用户号码】
 &FeeNumber:=【该包月对应的计费号码,对于移动的报告反馈可能会没有该字段,只有UserNumber】
 &FeeType=【报告对应指令的计费类型,1:免费,2:按条计费,3:定制包月计费】
 &ItemId= 【报告对应指令节目标识】
 (回车换行)

 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)

 注:只要是报告发送失败请先找原因,不要再重发,只要有错无论重发多少次都是失败。

2.1.1.5 接收定制状态变更
分发中心向服务方通报定制状态变化,格式如下:
   分发中心==>Orderchg (空格)
 CommandId=【命令标识,4字节整型,循环使用】
   &ItemId=【节目标识】
   &UserNumber:=【取消/定制的手机号码】
 &UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
 &DestNumber:=【取消/定制的第三方赠送手机号码】
 &DestNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
   &OrderState=【变更状态,0:用户取消定制,1:用户定制节目,2:暂停节目,3:激活节目,默认:0】
 &Reason:=【原因,最多40个字节】
 &Msg:=【表示当移动用户通过MO方式建立定制时所发送的定制指令的内容】
 (回车换行)

 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)
2.1.1.6 主动变更定制状态
服务方主动建立或取消定制关系
   服务方==>Ordersub (空格)
 CommandId=【命令标识,4字节整型,循环使用】
 &GateName=【取消手机所属网关名】,默认由分发中心根据手机号码决定目的网关名】
   &ItemId=【节目标识】
   &UserNumber:=【取消定制的手机号码】
 &UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码,默认:0】
 &DestNumber:=【取消定制的第三方赠送手机号码】
 &DestNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
 &OrderType=【提交类型,0:仅执行变更操作,1:执行变更操作向其他节目通知(需要特定权限2),2:不执行变更操作仅向其他节目通知(需要特定权限2),默认:0】
   &OrderState=【变更状态,0:用户取消定制,1:用户建立定制,2:取消其他节目的定制(需要特定权限2),3:已建立其他节目的定制(需要特定权限3),4:暂停其他节目的定制(需要特定权限2),5:激活其他节目的定制(需要特定权限3),默认:0】
   &MonthType=【建立定制时的包月类型,0:定制包月,1:点播包月,默认:0】
   &OverIp=【从网页定制时用户的IP地址,要求在初次包月或点播定制时带有该字段,点播一定在初次收费下发时带有该字段】
 &Reason:=【状态变更原因,最多40个字节】
 &Msg:=【移动用户在发送定制时发送的定制指令内容】
   &MsgId=【用户自定义消息标识,推荐格式:月日时分秒+6位自递增码,例如:9月23日10:00:03发出的序号为1记录可定义为923100003000001。自定义格式最大不超过20个字符且不能有需加码解码的特殊字符】,如果不需要回馈报告可以不写该参数。
   &ExtData:=【短信扩展数据,服务方短信发送的附加信息,在有报告反馈时会连带该扩展数据反馈给服务方,需加码处理,但加码后不能超过120个字节长度。默认为空串】
 (回车换行)

 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)

注意:参数中注明需要特定权限的参数值是为系统的特殊需要建立的,合作方是不能发送这些参数的,如果发送,会立即报错的。

2.1.1.7 附录部分彩信内容的格式,供参考,具体要自己做测试:
MIME Type
目前主要使用的消息内容体格式
可以参见WAP-203-WSP (WAP Forum)文档相关部分下面是目前彩信手机支持的主要格式
audio/mid
audio/midi
audio/sp-midi
audio/mpeg
image/vnd.wap.wbmp
image/jpeg
image/gif
image/bmp
image/vnd.nok-oplogo-color
image/png
image/vnd-nok-camera-snsp
image/vnd.nok-wallpaper
text/vnd.wap.wml
text/vnd.wap.wmlscript
text/x-co-desc
text/x-vCalendar
text/x-vCard
text/plain
text/x-eMelody
text/x-iMelody

3 联盟协议
3.1 协议说明
联盟协议针对部分特殊类型业务的协议,这部分业务的特征是:
1、 用户初次定制需要的咨费下发和定制说明是有系统来下发的,由合作方提起请求,系统自动根据业务规定的格式要求下发咨费和定制说明。
2、 定制过程以及咨费下发不成功后重试都是在系统部分完成,合作方不用去了解,但对于定制成功和收费成功或失败会给合作方反馈状态报告,供合作方核对用。用户取消也会通知合作方。系统此时还会自动针对该手机号码生成登陆密码下发给用户,同时传给合作方。
3、 合作方需要根据定制成功和取消状态的变化来决定是否给用户服务。

3.2 请求发起定制
  由合作方向分发中心提起发起定制,分发中心将根据该请求向用户发送一条免费咨费和定制说明,对于已经建立定制的用户,将回馈“重复定制”的失败报告,格式如下:
 
  服务方==>OrderReq (空格)
 CommandId=【命令标识,4字节整型,循环使用】
 &GateName=【目的网关名,该参数为空时默认由分发中心根据手机号码决定目的网关名】
   &ItemId=【节目标识,由服务方申请,业务分配】
   &UserNumber:=【目的用户号码】
 &UserNumberType=【0:用户号码为真实号码,1:用户号码为伪码】
   &OverIp=【从网页定制时用户的IP地址,要求在初次包月或点播定制时带有该字段,点播一定在初次收费下发时带有该字段】
(回车换行)

 回应:Received CommandId=【对应于发送时的命令标识】(回车换行)

3.3 请求给用户下发定制密码
  由合作方向分发中心请求给用户下发定制密码,分发中心将根据该请求向用户发送一条免费的密码,格式如下:
 
  服务方==>PwdReq (空格)
 CommandId=【命令标识,4字节整型,循环使用】
 &GateName=【目的网关名,该参数为空时默认由分发中心根据手机号码决定目的网关名】

------分隔线----------------------------
顶一下
(2)
66.7%
踩一下
(1)
33.3%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容