【问题标题】:Integrating with SecureNet payment gateway与 SecureNet 支付网关集成
【发布时间】:2013-01-08 18:11:32
【问题描述】:

我正在尝试将我们的软件与 SecureNet 网关集成。他们有一个基于 SOAP 的 API。

我遇到的问题是他们的 WSDL 文件确实不适用于 PHP。具体来说,他们的 WSDL 文件使用wsdl:import 语句拆分为多个文件,导入位置为http。在他们的测试服务器上,httphttps 端口是打开的,因此 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

【问题讨论】:

    标签: php wcf soap wsdl soap-client


    【解决方案1】:

    您可以从生产服务器中提取 WSDL 并使用 SoapClient::__setLocation 以编程方式覆盖该位置

    【讨论】:

    • 这设置了终点。问题是 WSDL 文件导入了其他几个文件,并且导入 URL 以 http:// 开头。他们建议从他们的开发环境中提取 WSDL 并使用 setLocation,但我不想依赖他们的开发环境。
    【解决方案2】:

    这听起来更像是远程 WSDL 文件中的错误,类似于通过 SSL 访问包含非 SSL 资产的网站会导致警告。

    幸运的是,我们似乎可以解决它。 The SoapClient Manual Page 对端口号有类似的解决方法,由用户 jjlopez 发布。

    解决方法是扩展基础 SoapClient 类以重写它将向其发出请求的 URL,如下所示:

    class SecureSoapClient extends \SoapClient
    {
        protected $_scheme;
    
        public function __construct($wsdl, $options)
        {
            $this->_scheme =  parse_url($wsdl, PHP_URL_SCHEME);
            return parent::__construct($wsdl, $options);
        }
    
        public function __doRequest($request, $location, $action, $version, $one_way = 0) {
            $currentScheme = parse_url($location, PHP_URL_SCHEME);
            $location = preg_replace('^' . $currentScheme, $this->_scheme, $location);
            return parent::__doRequest($request, $location, $action, $version, $one_way);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2010-10-27
      • 2018-09-26
      • 2015-03-09
      • 2011-12-30
      • 2017-01-07
      • 2012-04-03
      • 2011-05-05
      • 2015-11-12
      • 2016-06-20
      相关资源
      最近更新 更多