2011-08-23 9 views
2

Microsoft Dynamics GP 10 Webサービスの使用を検討しており、PHPを使用して顧客と販売を作成/更新したいと考えています。誰もがそこに良いドキュメンテーションを知っていますか?Microsoft Dynamics GP 10 PHPを使用したWebサービス

私はPHPを使って何も見つけられません。この質問のもう1つの部分はセキュリティ資格です.PHPが必要なログイン情報を正しく渡し、GPのWebサービスと完全にやりとりできるかどうか。

アイデアや既知のリソースはありますか?

+0

PHPはウェブサイトと非常に簡単に(しかし面倒なことに)対話できます。問題は、それがGPでそうすることがあなたの時間価値がある場合です。 –

+0

@Marc - 退屈で面倒であるという質問があると思います:)少し面倒であれば、それで大丈夫かもしれません。 GPウェブサービスを使っている大部分の人は.netを使っていると思いますので、PHPを使ってPHPを使う方法についてのドキュメントは見つかりません。マイクロソフト社のドキュメントはすべてネットのように見えるので、あまり役に立ちません。私たちがダイビングする前に、私はちょうど水が幾分泳ぐことができることを知りたいと思います。 –

+0

どこかのAPIライブラリが見つからない限り、実際のブラウザに座って誰かをシミュレートしたり、データを入力/変更したりするなど、PHPでブラウザを再作成しようとしています。 –

答えて

4

私は、GP統合を行うためにeConnectという一連のストアドプロシージャを使用します。最も洗練されたソリューションではないかもしれませんが、それはかなりうまく動作します。 eConnectはマイクロソフトによってもかなりよく文書化されています。

この種の統合を使用する場合は、敏捷性アプリケーションに精通していることをお勧めします。敏捷性アプリケーションを学ぶことは、オブジェクトとテーブルのマッピングに多くの助けとなり、それは顧客ソースから無料でダウンロードする必要があります。ここで

顧客レコードを作成するにはeコネクトストアドプロシージャの例です。それだけで(この例ではPHP ADODBを使用して)、次のような何かを実行するには

$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"; 

を:

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

私はまだDynamics GPを使用していませんが、私の開発者ガイドによれば、レガシーエンドポイントとネイティブエンドポイントがありますが、どちらもSOAPサービスなので、 PHPのSOAPクライアントを使用できなかった理由について

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

私は...で何が起こるのか分かりませんが、再度、SOAPはPHPなどの多くの言語で動作するように設計されているので上記可能にすべきではない、それは同じようにはできません理由はありません可能な限り単純です。

EDIT:WSDLからPHPクラスジェネレータを使用すると便利です。参照:generate php code from wsdl

関連する問題