这是我第一次在PHP上做SOAP(实际上我是一个菜鸟),我坚持这个问题好几个月了.
https://wstest.oriongateway.com:22837/willani/services/oglws?wsdl
Run Code Online (Sandbox Code Playgroud)
这是webservice URL,他们在生产时请求双向SSL,他们为我提供了一组私钥和公共证书,可以在我的服务器上安装.
我可以通过在浏览器上安装私钥来查看URL.
此时,我已经通过无向SSL和单向SSL成功获得了webservice的响应,但是双向SSL无法正常工作.
我通过SOAP提交双向SSL时出现错误消息.
警告:SoapClient :: __ doRequest():SSL操作失败,代码为1. OpenSSL错误消息:错误:14094412:SSL例程:SSL3_READ_BYTES:sslv3警告错误证书/home/loadme/domains/loadme.my/public_html/system/OglWsService_noservice第124行的.php
警告:SoapClient :: __ doRequest():无法在第124行的/home/loadme/domains/loadme.my/public_html/system/OglWsService_noservice.php中启用加密
警告:SoapClient :: __ doRequest():connect ()失败:第124行/home/loadme/domains/loadme.my/public_html/system/OglWsService_noservice.php中的未指定错误
我的SOAP请求文件
<?php
require_once 'OglWsService.php';
$requestMsg = new RequestMsg;
$requestMsg->amount="1000";
$requestMsg->merchantId="620055";
$requestMsg->operatorId="IBS";
$requestMsg->retTransRef="102182ABCqw1238";
$requestMsg->terminalId="10000102";
$requestMsg->productCode="DIGI";
$requestMsg->transDateTime=date("YmdHis");
$requestMsg->transTraceId = (int)"123212321";
$in0 = new onlinePIN();
$in0->in0=$requestMsg;
$oglWsService = new OglWsService();
$reponseMsg = $oglWsService->onlinePIN($in0);
$arr=get_object_vars($reponseMsg);
print_r($arr);
echo $arr['onlinePINReturn']->transRef;
?>
Run Code Online (Sandbox Code Playgroud)
我的Webservice类
<?php
class RequestMsg {
public $amount; // string
public $merchantId; // string
public $operatorId; // string
public $orgTransRef; // string
public $retTransRef; // …Run Code Online (Sandbox Code Playgroud)