2

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

我在使用 PHP 时没有发现任何东西,这个问题的另一部分是安全凭证,如果 PHP 可以正确传递所需的登录名并与 GP 的 Web 服务完全交互?

任何想法或已知资源?

4

2 回答 2

4

值得一提的是,我使用一组称为 eConnect 的存储过程来进行 GP 集成。它可能不是最优雅的解决方案,但效果相当不错。微软也很好地记录了 eConnect。

如果您选择使用这种集成,明智的做法是熟悉 Dexterity 应用程序。学习 Dexterity 应用程序对对象和表映射有很大帮助,它应该可以从 Customer Source 免费下载。

以下是创建客户记录的 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;
    }
于 2011-12-17T07:13:20.143 回答
0

我还没有使用过 Dynamics GP,但是根据我对开发人员指南的修改,有一个旧端点和一个本机端点,但它们都是 SOAP 服务,所以我看不出为什么你不能使用 PHP 的 SOAP 客户端。

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

我不知道发生了什么...,但同样没有理由不能实现上述操作,因为 SOAP 旨在与包括 PHP 在内的大多数语言一起使用,它不会像它可能的那样简单。

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

于 2013-07-09T20:07:03.567 回答