我们正在考虑使用Microsoft Dynamics GP 10 Web服务,并希望使用PHP来创建/更新客户和销售......所以问题是:这是否可行,如果有的话,是否有人知道那里的好文档?
我没有找到使用PHP的任何内容,这个问题的另一部分是安全凭证,如果PHP可以正确传递所需的登录并与GP的Web服务完全交互?
任何想法或已知资源?
答案 0 :(得分:4)
对于它的价值,我使用一组名为eConnect的存储过程来进行GP集成。它可能不是最优雅的解决方案,但它的工作效果相当不错。微软也很好地记录了eConnect。
如果您选择使用这种集成,那么熟悉敏捷应用程序是明智的。学习敏捷应用程序对于对象和表映射有很大帮助,应该可以从客户来源免费下载。
以下是创建客户记录的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; }
答案 1 :(得分:0)
我还没有使用Dynamics GP,但基于我对开发人员指南的重新定义,有一个遗留端点和一个本机端点,但两者都是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