我正在尝试将我们的软件与 SecureNet 网关集成。他们有一个基于 SOAP 的 API。
我遇到的问题是他们的 WSDL 文件确实不适用于 PHP。具体来说,他们的 WSDL 文件使用语句拆分为多个文件,wsdl:import
导入位置为http
. 在他们的测试服务器上http
,https
端口是开放的,所以 PHP 可以读取 WSDL 文件。在他们的生产服务器上只https
打开,但他们的位置块仍然引用http
,所以 PHP 超时!如果是这样,https
它会工作得很好。
他们的建议是从他们的测试服务器中提取 WSDL 文件,但覆盖该位置。他们告诉我他们的测试服务器应该始终处于启动状态,但我觉得依靠两个系统来让我们的交易正常工作并不自在。
另一种选择是使用他们的 XML post API ......但问题是您必须以正确的顺序指定每个字段(需要或不需要)。最糟糕的是这个 API 的错误消息是简单Unknown Error.
的,所以几乎不可能弄清楚我错过了什么。
我需要第三种选择。如果我可以加载 WSDL 文件(可以在测试中,而不是在生产中),那么肥皂效果很好。我认为他们正在使用 WCF,我相信这是 .NET 的东西。应该有一个“?simpleWSDL”和“?wsdl”选项,但在他们的 WCF 版本上没有它。
这是他们的 WSDL 文件(测试服务器):https ://certify.securenet.com/API/Gateway.svc?wsdl
编辑:
这是可重现的代码:
$client = new SoapClient("https://gateway.securenet.com/API/Gateway.svc?wsdl");
// Hangs and throws exception in construct