Mira, empece a hacer proebas con wse-php, logro que me tire el listado de funciones correctamente, claro que cuando intento llamar getBankList(), devuelve error "SOAP header Security was not understood." porque no tengo como probar ws security. Eso deberias hacerlo vos con tus .pem.
Por cierto, en que parte de tu codigo .net le indicas a soap que use wss?
Código PHP:
Ver originalrequire('wse-php/soap-wsse.php');
//comente todas las lineas que tendrias que investigar
//define('PRIVATE_KEY', 'C:\TEMP\pk-amazon-private-key.pem');
//define('CERT_FILE', 'C:\temp\cert-amazon-cert.pem');
class mySoap extends SoapClient {
function __doRequest($request, $location, $saction, $version) {
$doc = new DOMDocument('1.0');
$doc->loadXML($request);
$objWSSE = new WSSESoap($doc);
$objWSSE->addTimestamp();
// comente todas las lineas que tendrias que investigar
/* create new XMLSec Key using RSA SHA-1 and type is private key */
//$objKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1, array('type'=>'private'));
/* load the private key from file - last arg is bool if key in file (TRUE) or is string (FALSE) */
//$objKey->loadKey(PRIVATE_KEY, TRUE);
/* Sign the message - also signs appropraite WS-Security items */
//$objWSSE->signSoapDoc($objKey);
/* Add certificate (BinarySecurityToken) to the message and attach pointer to Signature */
//$token = $objWSSE->addBinaryToken(file_get_contents(CERT_FILE));
//$objWSSE->attachTokentoSig($token);
return parent::__doRequest($objWSSE->saveXML(), $location, $saction, $version);
}
}
class instances {
public $instancesSet = NULL;
}
$wsdl = 'https://desarrollo.pse.com.co/PSEWebServices/MainServices.asmx?wsdl';
try {
$sClient = new mySoap
($wsdl, array('trace'=>1)); /* Force location path - MUST INCLUDE trailing slash
BUG in ext/soap that does not automatically add / if URL does not contain path cause POST header to be invalid */
//$sClient->location = 'https://ec2.amazonaws.com/';
//$sClient->getBankList();
//$objInstances = new instances();
//$test = $sClient->DescribeInstances($objInstances);
var_dump($sClient->__getFunctions
()); // esto te tira la lista de metodos ok
var_dump($sClient->getBankList('001')); // esto me da SOAP header Security was not understood.; // obvio porque los certificados no estan configurados,
// deberias intentar basandote en los ejemplos de la direccion que te pase.
} catch (SoapFault $e) {
}