Bu benim ilk defa PHP'de SOAP yapıyor (aslında bir çaylak) ve bu problemi aylardır sıkıştıyorum.wsdl ve 2 yönlü SSL ile PHP SOAP
https://wstest.oriongateway.com:22837/willani/services/oglws?wsdl
Bu webservice URL, bunlar üretime 2 yönlü SSL istemek ve onlar benim sunucuda yüklemek için bana özel anahtar ve kamu sertifika kümesi sağlamak var.
Tarayıcımda özel bir anahtar yükleyerek URL'yi görüntüleyebiliyorum.
Şu anda, webservice'den gelen yanıtı hiçbir şekilde SSL ve tek yönlü SSL ile başarıyla aldım, ancak iki yönlü bir SSL çalışamaz.
SOAP tarafından iki yönlü bir SSL gönderdiğimde hata iletisi.
Warning: SoapClient::__doRequest(): SSL operation failed with code 1. OpenSSL Error messages: error:14094412:SSL routines:SSL3_READ_BYTES:sslv3 alert bad certificate in /home/loadme/domains/loadme.my/public_html/system/OglWsService_noservice.php on line 124
Warning: SoapClient::__doRequest(): Failed to enable crypto in /home/loadme/domains/loadme.my/public_html/system/OglWsService_noservice.php on line 124
Warning: SoapClient::__doRequest(): connect() failed: Unspecified error in /home/loadme/domains/loadme.my/public_html/system/OglWsService_noservice.php on line 124
Benim SOAP istek dosyası
<?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;
?>
Benim Webservice sınıf
<?php
class RequestMsg {
public $amount; // string
public $merchantId; // string
public $operatorId; // string
public $orgTransRef; // string
public $retTransRef; // string
public $terminalId; // string
public $productCode; // string
public $msisdn; // string
public $transDateTime; // string
public $transTraceId; // int
public $customField1; // string
public $customField2; // string
public $customField3; // string
public $customField4; // string
public $customField5; // string
}
class ResponseMsg {
public $amount; // string
public $pin; // string
public $pinExpiryDate; // string
public $productCode; // string
public $responseCode; // string
public $responseMsg; // string
public $retTransRef; // string
public $terminalId; // string
public $transRef; // string
public $customField1; // string
public $customField2; // string
public $customField3; // string
public $customField4; // string
public $customField5; // string
}
class onlinePIN {
public $in0; // RequestMsg
}
class onlinePINResponse {
public $onlinePINReturn; // ResponseMsg
}
class onlinePINReversal {
public $in0; // RequestMsg
}
class onlinePINReversalResponse {
public $onlinePINReversalReturn; // ResponseMsg
}
class etopup {
public $in0; // RequestMsg
}
class etopupResponse {
public $etopupReturn; // ResponseMsg
}
class etopupReversal {
public $in0; // RequestMsg
}
class etopupReversalResponse {
public $etopupReversalReturn; // ResponseMsg
}
class networkCheck {
public $in0; // RequestMsg
}
class networkCheckResponse {
public $networkCheck; // ResponseMsg
}
/**
* OglWsService class
*
*
*
* @author {author}
* @copyright {copyright}
* @package {package}
*/
class OglWsService extends SoapClient {
private static $classmap = array(
'RequestMsg' => 'RequestMsg',
'ResponseMsg' => 'ResponseMsg',
'onlinePIN' => 'onlinePIN',
'onlinePINResponse' => 'onlinePINResponse',
'onlinePINReversal' => 'onlinePINReversal',
'onlinePINReversalResponse' => 'onlinePINReversalResponse',
'etopup' => 'etopup',
'etopupResponse' => 'etopupResponse',
'etopupReversal' => 'etopupReversal',
'etopupReversalResponse' => 'etopupReversalResponse',
'networkCheck' => 'networkCheck',
'networkCheckResponse' => 'networkCheckResponse',
);
public function OglWsService($wsdl = "oglws_ver2_4_doc_literal.wsdl", $options = array()) {
foreach(self::$classmap as $key => $value) {
if(!isset($options['classmap'][$key])) {
$options['classmap'][$key] = $value;
}
}
parent::__construct($wsdl, $options);
}
/**
*
*
* @param onlinePIN $parameters
* @return onlinePINResponse
*/
public function onlinePIN(onlinePIN $parameters) {
return $this->__soapCall('onlinePIN', array($parameters), array(
'uri' => 'urn:EPAYIBWS',
'soapaction' => ''
)
);
}
/**
*
*
* @param onlinePINReversal $parameters
* @return onlinePINReversalResponse
*/
public function onlinePINReversal(onlinePINReversal $parameters) {
return $this->__soapCall('onlinePINReversal', array($parameters), array(
'uri' => 'urn:EPAYIBWS',
'soapaction' => ''
)
);
}
/**
*
*
* @param etopup $parameters
* @return etopupResponse
*/
public function etopup(etopup $parameters) {
return $this->__soapCall('etopup', array($parameters), array(
'uri' => 'urn:EPAYIBWS',
'soapaction' => ''
)
);
}
/**
*
*
* @param etopupReversal $parameters
* @return etopupReversalResponse
*/
public function etopupReversal(etopupReversal $parameters) {
return $this->__soapCall('etopupReversal', array($parameters), array(
'uri' => 'urn:EPAYIBWS',
'soapaction' => ''
)
);
}
/**
*
*
* @param networkCheck $parameters
* @return networkCheckResponse
*/
public function networkCheck(networkCheck $parameters) {
return $this->__soapCall('networkCheck', array($parameters), array(
'uri' => 'urn:EPAYIBWS',
'soapaction' => ''
)
);
}
}
?>
Benim WSDL dosyası
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
targetNamespace="urn:EPAYIBWS"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:impl="urn:EPAYIBWS"
xmlns:intf="urn:EPAYIBWS"
xmlns:tns1="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns2="http://axis.apache.org"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<schema elementFormDefault="qualified" targetNamespace="urn:EPAYIBWS" xmlns="http://www.w3.org/2001/XMLSchema">
<complexType name="RequestMsg">
<sequence>
<element name="amount" nillable="true" type="tns1:string"/>
<element name="merchantId" nillable="true" type="tns1:string"/>
<element name="operatorId" nillable="true" type="tns1:string"/>
<element name="orgTransRef" nillable="true" type="tns1:string"/>
<element name="retTransRef" nillable="true" type="tns1:string"/>
<element name="terminalId" nillable="true" type="tns1:string"/>
<element name="productCode" nillable="true" type="tns1:string"/>
<element name="msisdn" nillable="true" type="tns1:string"/>
<element name="transDateTime" nillable="true" type="tns1:string"/>
<element name="transTraceId" type="xsd:int"/>
<element name="customField1" nillable="true" type="tns1:string"/>
<element name="customField2" nillable="true" type="tns1:string"/>
<element name="customField3" nillable="true" type="tns1:string"/>
<element name="customField4" nillable="true" type="tns1:string"/>
<element name="customField5" nillable="true" type="tns1:string"/>
</sequence>
</complexType>
<complexType name="ResponseMsg">
<sequence>
<element name="amount" nillable="true" type="tns1:string"/>
<element name="pin" nillable="true" type="tns1:string"/>
<element name="pinExpiryDate" nillable="true" type="tns1:string"/>
<element name="productCode" nillable="true" type="tns1:string"/>
<element name="responseCode" nillable="true" type="tns1:string"/>
<element name="responseMsg" nillable="true" type="tns1:string"/>
<element name="retTransRef" nillable="true" type="tns1:string"/>
<element name="terminalId" nillable="true" type="tns1:string"/>
<element name="transRef" nillable="true" type="tns1:string"/>
<element maxOccurs="1" minOccurs="0" name="customField1" nillable="true" type="tns1:string"/>
<element maxOccurs="1" minOccurs="0" name="customField2" nillable="true" type="tns1:string"/>
<element maxOccurs="1" minOccurs="0" name="customField3" nillable="true" type="tns1:string"/>
<element maxOccurs="1" minOccurs="0" name="customField4" nillable="true" type="tns1:string"/>
<element maxOccurs="1" minOccurs="0" name="customField5" nillable="true" type="tns1:string"/>
</sequence>
</complexType>
<element name="fault" type="xsd:anyType"/>
<element name="onlinePIN">
<complexType>
<sequence>
<element name="in0" type="impl:RequestMsg"/>
</sequence>
</complexType>
</element>
<element name="onlinePINResponse">
<complexType>
<sequence>
<element name="onlinePINReturn" type="impl:ResponseMsg"/>
</sequence>
</complexType>
</element>
<element name="onlinePINReversal">
<complexType>
<sequence>
<element name="in0" type="impl:RequestMsg"/>
</sequence>
</complexType>
</element>
<element name="onlinePINReversalResponse">
<complexType>
<sequence>
<element name="onlinePINReversalReturn" type="impl:ResponseMsg"/>
</sequence>
</complexType>
</element>
<element name="etopup">
<complexType>
<sequence>
<element name="in0" type="impl:RequestMsg"/>
</sequence>
</complexType>
</element>
<element name="etopupResponse">
<complexType>
<sequence>
<element name="etopupReturn" type="impl:ResponseMsg"/>
</sequence>
</complexType>
</element>
<element name="etopupReversal">
<complexType>
<sequence>
<element name="in0" type="impl:RequestMsg"/>
</sequence>
</complexType>
</element>
<element name="etopupReversalResponse">
<complexType>
<sequence>
<element name="etopupReversalReturn" type="impl:ResponseMsg"/>
</sequence>
</complexType>
</element>
<element name="networkCheck">
<complexType>
<sequence>
<element name="in0" type="impl:RequestMsg"/>
</sequence>
</complexType>
</element>
<element name="networkCheckResponse">
<complexType>
<sequence>
<element name="networkCheck" type="impl:ResponseMsg"/>
</sequence>
</complexType>
</element>
</schema>
</wsdl:types>
<wsdl:message name="etopupRequest">
<wsdl:part element="impl:etopup" name="parameters"/>
</wsdl:message>
<wsdl:message name="networkCheckResponse">
<wsdl:part element="impl:networkCheckResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="etopupReversalRequest">
<wsdl:part element="impl:etopupReversal" name="parameters"/>
</wsdl:message>
<wsdl:message name="etopupResponse">
<wsdl:part element="impl:etopupResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="networkCheckRequest">
<wsdl:part element="impl:networkCheck" name="parameters"/>
</wsdl:message>
<wsdl:message name="onlinePINReversalResponse">
<wsdl:part element="impl:onlinePINReversalResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="onlinePINReversalRequest">
<wsdl:part element="impl:onlinePINReversal" name="parameters"/>
</wsdl:message>
<wsdl:message name="onlinePINRequest">
<wsdl:part element="impl:onlinePIN" name="parameters"/>
</wsdl:message>
<wsdl:message name="onlinePINResponse">
<wsdl:part element="impl:onlinePINResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="etopupReversalResponse">
<wsdl:part element="impl:etopupReversalResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="ConfigurationException">
<wsdl:part element="impl:fault" name="fault"/>
</wsdl:message>
<wsdl:portType name="oglws">
<wsdl:operation name="onlinePIN">
<wsdl:input message="impl:onlinePINRequest" name="onlinePINRequest"/>
<wsdl:output message="impl:onlinePINResponse" name="onlinePINResponse"/>
<wsdl:fault message="impl:ConfigurationException" name="ConfigurationException"/>
</wsdl:operation>
<wsdl:operation name="onlinePINReversal">
<wsdl:input message="impl:onlinePINReversalRequest" name="onlinePINReversalRequest"/>
<wsdl:output message="impl:onlinePINReversalResponse" name="onlinePINReversalResponse"/>
<wsdl:fault message="impl:ConfigurationException" name="ConfigurationException"/>
</wsdl:operation>
<wsdl:operation name="etopup">
<wsdl:input message="impl:etopupRequest" name="etopupRequest"/>
<wsdl:output message="impl:etopupResponse" name="etopupResponse"/>
<wsdl:fault message="impl:ConfigurationException" name="ConfigurationException"/>
</wsdl:operation>
<wsdl:operation name="etopupReversal">
<wsdl:input message="impl:etopupReversalRequest" name="etopupReversalRequest"/>
<wsdl:output message="impl:etopupReversalResponse" name="etopupReversalResponse"/>
<wsdl:fault message="impl:ConfigurationException" name="ConfigurationException"/>
</wsdl:operation>
<wsdl:operation name="networkCheck">
<wsdl:input message="impl:networkCheckRequest" name="networkCheckRequest"/>
<wsdl:output message="impl:networkCheckResponse" name="networkCheckResponse"/>
<wsdl:fault message="impl:ConfigurationException" name="ConfigurationException"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="oglwsSoapBinding" type="impl:oglws">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="onlinePIN">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="onlinePINRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="onlinePINResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ConfigurationException">
<wsdlsoap:fault name="ConfigurationException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="onlinePINReversal">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="onlinePINReversalRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="onlinePINReversalResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ConfigurationException">
<wsdlsoap:fault name="ConfigurationException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="etopup">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="etopupRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="etopupResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ConfigurationException">
<wsdlsoap:fault name="ConfigurationException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="etopupReversal">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="etopupReversalRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="etopupReversalResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ConfigurationException">
<wsdlsoap:fault name="ConfigurationException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
<wsdl:operation name="networkCheck">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="networkCheckRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="networkCheckResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="ConfigurationException">
<wsdlsoap:fault name="ConfigurationException" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="OglWsService">
<wsdl:port binding="impl:oglwsSoapBinding" name="oglws">
<wsdlsoap:address location="https://wstest.oriongateway.com:22837/willani/services/oglws"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Herhangi bir yorum benim için faydalı olacaktır.
UPDATE: Kimlik doğrulama için webservis sitesine bir sertifika verebileceğimiz bir yazı gördüm, ancak .cer ve .p12'yi bir .pem dosyasına nasıl ekleyebilirim? – poiseberry
3 ay oldu, hala cevap yok :( – poiseberry
bunu deneyin: "openssl pkcs12 -in key.p12 -out key.pem -clcerts" ve SOAP 'a pem dosyasının şifresini aşağıdaki gibi eklemelisiniz:' passphrase '=> "Şifreniz" – sertaconay