2011-08-23 54 views
2

我们正在考虑使用Microsoft Dynamics GP 10 Web服务,并希望使用PHP来创建/更新客户和销售......所以问题是:这是否可能,如果是这样任何人都知道那里有很好的文档?使用PHP的Microsoft Dynamics GP 10 Web服务

我没有发现任何与使用PHP有关的问题,这个问题的另一部分将是安全证书,如果PHP能够正确传递所需的登录并与GP的Web服务充分交互?

任何想法或已知资源?

+0

PHP可以很容易地与网站进行交互(但繁琐)。问题是,是否值得你花时间用GP来做到这一点。 –

+0

@Marc - 我想问题是多么单调乏味:)如果它有点乏味,我们可能会好起来的。我想大多数使用GP网络服务的人都在使用.net,所以我找不到使用PHP的文档。微软的文档似乎都是以.net为中心的,所以没有太大的帮助。在我们潜入水中之前,我想我只是想知道水有些游泳能力。 –

+0

除非您可以在某个地方找到API库,否则yhou会被卡住,试图在PHP中重新创建浏览器以模拟某人坐在真实的浏览器中并点击/输入/更改数据......例如......乏味。 –

回答

4

对于它的价值,我使用了一组称为eConnect的存储过程来执行GP集成。它可能不是最优雅的解决方案,但它运行得很好。 eConnect也被Microsoft记录得很好。

如果您选择使用这种集成,熟悉敏捷应用程序是明智的。学习敏捷应用程序对于对象和表映射有很多帮助,它应该可以从客户源免费下载。

这里是一个eConnect存储过程的例子来创建一个客户记录:

$sql = "declare @p115 int 
set @p115=0 
declare @p116 varchar(255) 
set @p116=''                            
exec dbo.taUpdateCreateCustomerRcd 
@I_vCUSTNMBR = '123456', 
@I_vCUSTNAME = 'Company Name', 
@O_iErrorState = @p115 OUTPUT,                 
@oErrString = @p116 OUTPUT                      

select @p115, @p116"; 

要执行它只是像做了以下(使用PHP ADODB在这个例子中):

gp_execute_sp($sql); 


    function gp_execute_sp($sql, $transactions = true) { 
     global $DBGP; 

     if($transactions) 
      $DBGP->StartTrans(); 
      $rs = $DBGP->Execute($sql); 
       if(is_object($rs) && !$rs->EOF) { 
         if($rs->fields['computed'] != 0) { 
       if($transactions) 
            $DBGP->FailTrans(); 
           throw new Exception(get_error_desc($rs->fields['computed']));    

         }                         
       } elseif(!is_object($rs)) {                    
      if($transactions)                        
          $DBGP->FailTrans();                   
         throw new Exception("Database Connection Error."); 

       } else {                         
        if($transactions)                      
        $DBGP->FailTrans();                     
         throw new Exception("Stored proceedure did not return a result.");        
       }                           

       if($transactions)                       
        $DBGP->CompleteTrans(); 
    } 

    function get_error_desc($value) { 
     global $DBGP; 

     if(is_numeric($value)) { 
      $result = "No Error Available"; 
      $sql = "SELECT ErrorDesc FROM DYNAMICS..taErrorCode WHERE ErrorCode=?"; 
      $rs = $DBGP->execute($sql, array($value)); 
      if(!$rs->EOF) { 
       $result = $rs->fields['ErrorDesc']; 
      } 
     } else { 
      $result = $value; 
     } 

     return $result; 
    } 
0

我还没有使用动态GP,但根据我的开发人员指南雷丁是有传统的端点和本地端点,但让我看不出有什么REAS都是SOAP服务关于为什么你不能使用PHP的SOAP客户端。

$client = new SoapClient('http://machine_name:<port_number>/Dynamics/GPService'); 
$result = $client->GetCompanyList(...); 

,我不知道......发生的事情,但同样是上面没有理由,因为SOAP适用于大多数语言包括PHP的工作应该是不可能的,它只是不会像尽可能简单。

编辑:使用WSDL到PHP类生成器可能会有所帮助。请参阅:generate php code from wsdl

相关问题