Creazione certificato DER
openssl req -newkey rsa:2048 -keyout key.der -out req.der -outform DER
Dopo aver uploadato sul portale il file req.der mi e’ permesso di scaricare il file CER fornito dal portale per generare il certificato PEM
openssl x509 –inform der –in xxxxx.cer –out xxxxx.pem
A partire dalla chiave key.der e dal file PEM generato procediamo a creare il certificato P12
openssl pkcs12 -export -inkey xxxxx.der -in xxxxx.pem -out xxxxx.p12
A questo punto a partire dal file P12 generato devo generare il file pem finale da utilizzare nella chiamata SOAP
openssl pkcs12 -in supplied_cert.p12 -out php_soap_cert.pem -clcerts
A questo punto scarico il pacchetto base zip fornito che contiene la guida e il file WSDL con la struttura delle chiamate del WS
https://cartadeldocente.istruzione.it/static/lineeguida-esercenti-cartadeldocente.zip
Carico sullo spazio FTP tutte le chiavi, il file wsdl contenuto nello zip e creo un file .php per effettuare la chiamata di attivazione.
<?php
$lock = 1;
if ($lock == 0) {
$wsdl = "./cartadocente/VerificaVoucher.wsdl"; // Or "http://provider.com/api/api.wsdl"
$options = [
'location' => "https://ws.cartadeldocente.istruzione.it/VerificaVoucherDocWEB/VerificaVoucher",
'local_cert' => "./cartadocente/php_soap_cert.pem",
'passphrase' => "artebambini17",
];
try {
$soapClient = new SoapClient($wsdl, $options);
echo '__getFunctions()<br/><br/>';
print '<pre>';
var_dump($soapClient->__getFunctions());
print '</pre>';
echo '__getTypes()<br/><br/>';
print '<pre>';
var_dump($soapClient->__getTypes());
print '</pre>';
echo '__chiamata()<br/><br/>';
try {
$result = $soapClient->Check(array("checkReq"=>array("tipoOperazione"=>"1","codiceVoucher"=>"11aa22bb")));
if ($result){
print '<pre>';
var_dump($result);
print '</pre>';
/*
object(stdClass)#2 (1) {
["checkResp"]=>
object(stdClass)#3 (5) {
["nominativoBeneficiario"]=>
string(22) "Attivazione effettuata"
["partitaIvaEsercente"]=>
string(11) "02460021203"
["ambito"]=>
string(1) "-"
["bene"]=>
string(1) "-"
["importo"]=>
float(0)
}
}
*/
}
} catch(Exception $e) {
print '<pre>';
var_dump($e);
print '</pre>';
}
} catch(Exception $e) {
var_dump($e);
}
}
?>