2011-08-23 106 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

相關問題