PHP彩信接口开发经验及具体开发实现

来源:互联网 发布:北大青鸟java培训 编辑:程序博客网 时间:2024/05/22 06:11

一、查询账户余额balance()

参数名称

说明

备注

Sn

软件序列号

格式XXX-XXX-XXX-XXXXX

Pwd

密码

md5(sn+password) 32位大写 密文 +表示连接

函数返回值:String(余额)

接口地址:http://sdk3.entinfo.cn:8060/webservice.asmx?op=balance

示例:序列号SDK-SSD-010-00001 密码 xxxxxx

参数输入:

SN= SDK-SSD-010-00001

PWD= 3B5D3C427365F40C1D27682D78BB31E0

示例返回结果: 余额79109条短信

XML格式:

具体函数PHP实现:

<?PHP //该demo的功能是查余额$flag = 0;         //要post的数据 $argv = array(          'sn'=>'SDK-SSD-010-xxxxx', //替换成您自己的序列号 'pwd'=>'xxxxxx',//替换成您自己的密码 ); //构造要post的字符串 foreach ($argv as $key=>$value) {           if ($flag!=0) {                          $params .= "&";                          $flag = 1;           }          $params.= $key."="; $params.= urlencode($value);          $flag = 1;           }          $length = strlen($params);                  //创建socket连接         $fp = fsockopen("sdk2.entinfo.cn",8060,$errno,$errstr,10) or exit($errstr."--->".$errno);          //构造post请求的头          $header = "POST /webservice.asmx/GetBalance HTTP/1.1\r\n";          $header .= "Host:sdk2.entinfo.cn\r\n";          $header .= "Content-Type: application/x-www-form-urlencoded\r\n";          $header .= "Content-Length: ".$length."\r\n";          $header .= "Connection: Close\r\n\r\n";          //添加post的字符串          $header .= $params."\r\n";          //发送post的数据          fputs($fp,$header);          $inheader = 1;           while (!feof($fp)) {                          $line = fgets($fp,1024); //去除请求包的头只显示页面的返回数据                          if ($inheader && ($line == "\n" || $line == "\r\n")) {                                  $inheader = 0;                           }                           if ($inheader == 0) {                                 // echo $line;                           }           }   //<string xmlns="http://tempuri.org/">-5</string>       $line=str_replace("<string xmlns=\"http://tempuri.org/\">","",$line);       $line=str_replace("</string>","",$line);   $result=explode("-",$line);    if(count($result)>1)echo '发送失败返回值为:'.$line;elseecho '余额为:'.$line;?>


二、群发彩信

参数名称

说明

是否必须   

备注

Sn

软件序列号

格式XXX-XXX-XXX-XXXXX

Pwd

密码

md5(sn+password) 32位大写密文

title
彩信主题

限制在30字符以内

Mobile

手机号

手机号码多个以英文逗号隔开

Content

内容

base64编码(文件名1,文件base64编码串;文件名2,文件base64编码串);实际发送文件小于等于50*1024 字节

stime

定时时间

例如:2010-12-29 16:27:03(非定时置空)

函数返回值:String。

content是您发送的彩信的内容:包含图片和声音及文本;

1.文件类型: 文本是.txt 图片是.jpg或者.gif 声音是.mid或者.amr

2.内容格式:

帧数_文件类型.扩展名 + 英文逗号 + 文件的base64编码字符串 + 分号 ;

例如:“1_1.txt,” + 文件base64编码字符串 + “;” + “1_2.jpg,” + 文件base64编码字符串+”;”+”1_3.mid”+文件base64编码字符串

文本是 n_1.txt  图片是 n_2.jpg 或者是 n_2.gif  声音是 n_3.mid ;

N表示当前第几帧,后缀不变,编码均为GB2312。

接口地址:http://sdk3.entinfo.cn:8060/webservice.asmx?op=mdMmsSend

示例1

SN= SDK-SSD-010-00001

PWD=3B5D3C427365F40C1D27682D78BB31E0

title:彩信测试

Mobile:139***404,138***213…………….

Content:测试

Stime: ""

输出结果:

XML格式:

具体函数PHP实现:

<?PHP //该demo的功能是发彩信//我们的Demo,都是在gb2312环境下测试的。如果您的系统是UTF-8,肯定会乱码。//请参考第17行和第29行进行处理。   $file="1.png";   $file2="ww.gif"; $fp=fopen($file,"r")or die("Can't open file");  $PicBase1=base64_encode(fread($fp,filesize($file)));//base64编码  $file_content='1_2.png,'.$PicBase1;//图片第一帧$fp2=fopen($file2,"r")or die("Can't open file");  $PicBase2=base64_encode(fread($fp2,filesize($file2)));//base64编码  $file_content.=';2_2.gif,'.$PicBase2;//图片第二帧$txtBase1=base64_encode("第一条文本:欧耶");//文本第一帧//$txtBase1=base64_encode(iconv( "UTF-8", "gb2312//IGNORE" ,"第一条文本:欧耶"));$txtBase2=base64_encode("第二条文本:哈哈");//文本第二帧$file_content.=';1_1.txt,'.$txtBase1;$file_content.=';2_1.txt,'.$txtBase2;//请注意各帧之间用英文的分号隔开//echo $file_content;// exit;$flag = 0;         //要post的数据 $argv = array(          'sn'=>'WEB-OFT-010-*****', //换成您自己的序列号 'pwd'=>strtoupper(md5('SDK-SSD-010-*****'.'XXXXXX')), //此处密码需要加密 加密方式为 md5(sn+password)  'title'=>'test测试彩信', //'title'=>iconv( "UTF-8", "gb2312//IGNORE" ,"test彩信测试"), 'mobile'=>'186****0313,139****9538,137****1021',//手机号 多个用英文的逗号隔开 post理论没有长度限制.推荐群发一次小于等于10000个手机号 'content'=>$file_content,//彩信信内容//base64_encode(); 'ext'=>'', 'rrid'=>'',//默认空 如果空返回系统生成的标识串 如果传值保证值唯一 成功则返回传入的值 'stime'=>''//定时时间 格式为2011-6-29 11:09:21 ); //构造要post的字符串 foreach ($argv as $key=>$value) {           if ($flag!=0) {                          $params .= "&";                          $flag = 1;           }          $params.= $key."="; $params.= urlencode($value);          $flag = 1;           }          $length = strlen($params);                  //创建socket连接          $fp = fsockopen("sdk3.entinfo.cn",8060,$errno,$errstr,10) or exit($errstr."--->".$errno);          //构造post请求的头          $header = "POST /webservice.asmx/mdMmsSend HTTP/1.1\r\n";          $header .= "Host:sdk3.entinfo.cn\r\n";          $header .= "Content-Type: application/x-www-form-urlencoded\r\n";          $header .= "Content-Length: ".$length."\r\n";          $header .= "Connection: Close\r\n\r\n";          //添加post的字符串          $header .= $params."\r\n";          //发送post的数据          fputs($fp,$header);          $inheader = 1;           while (!feof($fp)) {                          $line = fgets($fp,1024); //去除请求包的头只显示页面的返回数据                          if ($inheader && ($line == "\n" || $line == "\r\n")) {                                  $inheader = 0;                           }                           if ($inheader == 0) {                                 // echo $line;                           }           }   //<string xmlns="http://tempuri.org/">-5</string>       $line=str_replace("<string xmlns=\"http://tempuri.org/\">","",$line);       $line=str_replace("</string>","",$line);   $result=explode("-",$line);    if(count($result)>1)echo '发送失败返回值为:'.$line;elseecho '发送成功 返回值为:'.$line;  ?>


 

三、webservice返回集合对照表:

 

返回值

返回值说明

1

没有数据需要接收

-2

帐号/密码不正确 

-3

重复登陆

-4

余额不足

-5

数据格式错误

-6

参数有误

-8

流量控制错误

-11

数据库错误

-12

序列号状态错误

-13

没有提交增值内容

-14

服务器写文件失败

-17

该接口禁止使用该方法

-18 

等上一批提交结果返回再继续下一批提交

-15

内容长度长

-22

Ip绑定

四、附加说明:

1.彩信语音SDK地址:

常用接口地址:http://sdk3.entinfo.cn:8060/webservice.asmx

2.其它说明:

(1)开发使用的帐号必须为SDK开头,如SDK-SSD-010-00001,帐号第一次需要调用Register方法注册一次.仅需注册一次即可,信息必须真实

(2)UnRegister与Register配合使用, 连续使用不得超过10次/天;

3. 郑重声明:

(1)禁止相同的内容多个手机号连续一条一条提交. 否则禁用帐号,由此带来损失由客户自行负责.

(2)请客户提供外网服务器IP以便于绑定IP发送,提高账号的安全性!

(3)在程序里最好有配置文件,程序自动判断当某个接口连接超时提交速度变慢时.程序可以自动切换其它的接口以下是推荐的几个服务器,仅接口地址不同而已.方法全部相同;

地址1:http://sdk3.entinfo.cn:8060/webservice.asmx

这些地址都是标准的webservice地址,C#,Java客户可以按照自己熟悉的方式去解析String   

或者

地址1:http://sdk3.entinfo.cn:8060/webservice.asmx?wsdl

五、示例Demo源代码下载:

DEMO     SDK彩信接口文档   所有下载

 

0 0