我们正在考虑使用 Microsoft Dynamics GP 10 Web 服务,并希望使用 PHP 来创建/更新客户和销售......所以问题是:这可能吗?如果可以,是否有人知道那里有好的文档?
我在使用 PHP 时没有发现任何东西,这个问题的另一部分是安全凭证,如果 PHP 可以正确传递所需的登录名并与 GP 的 Web 服务完全交互?
任何想法或已知资源?
我们正在考虑使用 Microsoft Dynamics GP 10 Web 服务,并希望使用 PHP 来创建/更新客户和销售......所以问题是:这可能吗?如果可以,是否有人知道那里有好的文档?
我在使用 PHP 时没有发现任何东西,这个问题的另一部分是安全凭证,如果 PHP 可以正确传递所需的登录名并与 GP 的 Web 服务完全交互?
任何想法或已知资源?
值得一提的是,我使用一组称为 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; }
我还没有使用过 Dynamics GP,但是根据我对开发人员指南的修改,有一个旧端点和一个本机端点,但它们都是 SOAP 服务,所以我看不出为什么你不能使用 PHP 的 SOAP 客户端。
$client = new SoapClient('http://machine_name:<port_number>/Dynamics/GPService');
$result = $client->GetCompanyList(...);
我不知道发生了什么...,但同样没有理由不能实现上述操作,因为 SOAP 旨在与包括 PHP 在内的大多数语言一起使用,它不会像它可能的那样简单。
编辑:使用 WSDL 到 PHP 类生成器可能会有所帮助。请参阅:从 wsdl 生成 php 代码