它山之石可以攻玉

键盘上的生活
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

PHP集成华为企业信息机

Posted on 2012-11-01 09:33  陈达辉  阅读(293)  评论(0编辑  收藏  举报

华为信息机虽然只提供了DLL和Java的接口,但是其它的语言还是可以调用,方法就是使用它的存储过程。下面是一个PHP调用的例子

<?php


class PHPSMS {
    var $dbHost   = "ip:1433";
    var $dbName   = "DB_CustomSMS";
    var $dbUser   = "sa";
    var $dbPass   = "";
    var $name     = "0005";
    var $pass     = "";
   
    var $db;


    function init() {
     $this->db = &ADONewConnection('mssql');
      $this->db->Connect($this->dbHost,$this->dbUser,$this->dbPass,$this->dbName) or die($db->ErrorMsg().'<br>');
    }
   
    function addSMtoSend($pDestAddr,$pSmContent) {
     
      $pOrgAddr = '1068×××××'.$this->name;
      $pSendTime = date("Y-m-d H:i:s");
      $pNeedStateReport = 0;
      $pServiceID = "EIES";
      $pFeeType = "02" ;
      $pFeeCode = "0";
      $pSMType = 0;
      $pMessageID = "0";
      $pDestaddrType = 0;
      $pCreatorID = $this->name;
      $pSuccess = -1;
     
      $stmt = $this->db->PrepareSP('addSMtoSend');
      $this->db->InParameter($stmt,$pOrgAddr,'pOrgAddr');
      $this->db->InParameter($stmt,$pDestAddr,'pDestAddr');
      $this->db->InParameter($stmt,$pSmContent,'pSmContent');
      $this->db->InParameter($stmt,$pSendTime,'pSendTime');
      $this->db->InParameter($stmt,$pNeedStateReport,'pNeedStateReport');
      $this->db->InParameter($stmt,$pServiceID,'pServiceID');
      $this->db->InParameter($stmt,$pFeeType,'pFeeType');
      $this->db->InParameter($stmt,$pFeeCode,'pFeeCode');
      $this->db->InParameter($stmt,$pSMType,'pSMType');
      $this->db->InParameter($stmt,$pMessageID,'pMessageID');
      $this->db->InParameter($stmt,$pDestaddrType,'pDestaddrType');
      $this->db->InParameter($stmt,$pCreatorID,'pCreatorID');

      $this->db->OutParameter($stmt,$pSuccess,'pSuccess');     
     
      $this->db->Execute($stmt);
     
      if($pSuccess>=0)  return 1;
     
     else return 0;
     
    } 
   
    function fetchSMRequest(&$SourceAddr,&$Content,&$RecvTime) {
     
     $DestAddrMask = '1068×××××'.$this->name;

     $DestAddr = '';

     $SMType = 0;
     $pMessageID = "0";
     $OrgAddrType = 0;
     $ActionID = 0;
     $ActionReasonID = 0;
     $ServiceID = "";
     $Ret_Code = 0;
     
     $stmt = $this->db->PrepareSP('FetchSMRequest');
     $this->db->InParameter($stmt,$DestAddrMask,'DestAddrMask');

     $this->db->OutParameter($stmt,$SourceAddr,'SourceAddr');
     $this->db->OutParameter($stmt,$DestAddr,'DestAddr');
     $this->db->OutParameter($stmt,$Content,'Content');
     $this->db->OutParameter($stmt,$RecvTime,'RecvTime');
     $this->db->OutParameter($stmt,$SMType,'SMType');
     $this->db->OutParameter($stmt,$MessageID,'MessageID');
     $this->db->OutParameter($stmt,$OrgAddrType,'OrgAddrType');
     $this->db->OutParameter($stmt,$ActionID,'ActionID');
     $this->db->OutParameter($stmt,$ActionReasonID,'ActionReasonID');
     $this->db->OutParameter($stmt,$ServiceID,'ServiceID');
     $this->db->OutParameter($stmt,$Ret_Code,'Ret_Code');     
     
     $this->db->Execute($stmt);
     
     return $Ret_Code; //0 没有消息 1 成功 -1 失败

    }    
   
}


?> 

使用的时候,先初始化

$sms = new PHPSMS();
$sms->init();

发送消息的方法


$re = $sms->addSMtoSend('1385×××××','PHP测试');
if($re = 1) echo "success";
else echo "fail";

接收消息的方法

$SourceAddr = '';
$Content = '';
$RecvTime = '';
while( $sms->fetchSMRequest($SourceAddr,$Content,$RecvTime) ) {
  echo $SourceAddr."<br>".$Content."<br>".$RecvTime;
}