PHP: Curl https xml result возвращает пустое

Пожалуйста, нужна ваша помощь! Я пытаюсь создать клиент мыла PHP с curl. когда я запускаю свой PHP-код. Я получаю пустой результат. это соединение https. Я создаю мой .pem-файл с помощью OpenSSL в этом примере

PHP-код

$xml = '<?xml version="1.0" encoding="utf-8"?>'. '<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://olp.sadad.com/sadadpaymentmanagement/service/olppaymentmanager/req">'. '<x:Header/>'. '<x:Body>'. '<req:initiatePaymentDetailsReq>'. '<req:olpIdAlias>*****</req:olpIdAlias>'. ' <req:merchantId>*****</req:merchantId>'. '<req:merchantRefNum>999454564</req:merchantRefNum>'. '<req:paymentAmount>200</req:paymentAmount>'. '<req:paymentCurrency>SAR</req:paymentCurrency>'. '<req:dynamicMerchantLandingURL></req:dynamicMerchantLandingURL>'. ' <req:dynamicMerchantFailureURL></req:dynamicMerchantFailureURL>'. '</req:initiatePaymentDetailsReq>'. '</x:Body>'. '</x:Envelope>'; try{ $url = "https://b2brbtest.riyadbank.com/soap?service=RB_OLP_INITIATE_PAYMENT"; $certFile = dirname(__FILE__)."/key1.pem"; $certPass = "*******"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSLCERT, $certFile); curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $certPass); $headers = array(); array_push($headers, "Content-Type: text/xml; charset=utf-8"); array_push($headers, "SOAPAction: sii:RB_OLP_INITIATE_PAYMENT"); if($xml != null) { curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml"); array_push($headers, "Content-Length: " . strlen($xml)); } curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); var_dump($response); } catch (Exception $e){ echo $e->getMessage(); } ?> 

ВЫВОД

строка (228) ""

Solutions Collecting From Web of "PHP: Curl https xml result возвращает пустое"

Наконец, я решил это, изменив значение $ xml

 $xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://olp.bank.com/sappay/service/olppaymentmanager/req"> <soapenv:Header/> <soapenv:Body> <req:initiatePaymentDetailsReq> <olpIdAlias>****</olpIdAlias> <merchantId>***</merchantId> <merchantRefNum>'.rand(1, 15).rand().'</merchantRefNum> <paymentAmount>'.$tb.'</paymentAmount> <paymentCurrency>SAR</paymentCurrency> <dynamicMerchantLandingURL></dynamicMerchantLandingURL> <dynamicMerchantFailureURL></dynamicMerchantFailureURL> </req:initiatePaymentDetailsReq> </soapenv:Body> </soapenv:Envelope>'; 

вот полный код подключения SOAP webservice с ssl

 <?php $tb='200'; $xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:req="http://olp.bank.com/sappay/service/olppaymentmanager/req"> <soapenv:Header/> <soapenv:Body> <req:initiatePaymentDetailsReq> <olpIdAlias>*****</olpIdAlias> <merchantId>********</merchantId> <merchantRefNum>'.rand(1, 15).rand().'</merchantRefNum> <paymentAmount>'.$tb.'</paymentAmount> <paymentCurrency>SAR</paymentCurrency> <dynamicMerchantLandingURL></dynamicMerchantLandingURL> <dynamicMerchantFailureURL></dynamicMerchantFailureURL> </req:initiatePaymentDetailsReq> </soapenv:Body> </soapenv:Envelope>'; try{ $url = "https://b2b.rb.com/soap?service=RB_OLP_INITIATE_PAYMENT"; $certFile = dirname(__FILE__)."/key1.pem"; $certPass = "*****"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSLCERT, $certFile); curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $certPass); $headers = array(); array_push($headers, "Content-Type: text/xml; charset=utf-8"); array_push($headers, "SOAPAction: sii:RB_OLP_INITIATE_PAYMENT"); array_push($headers, "Host:b22.rb.com"); if($xml != null) { curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); array_push($headers, "Content-Length: " . strlen($xml)); } curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $response = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); print_r($response); } catch (Exception $e){ echo $e->getMessage(); } ?>