Definisao sam sledece konstante:
PAYMENT_CA_CERT - putanja do foldera sa CA sertifikatom
PAYMENT_CERTIFICATE - putanja do mog sertifikata
PAYMENT_KEY - putanja do mog privatnog kljuca
PAYMENT_PASSWORD - prazno, tj. nisam siguran sta ovdje treba da stoji (citaj dalje).
Koristim sledeci kod da se nakacim na servis:
Code:
protected function sendRequest($params) {
$url = PAYMENT_MERCHANT_HANDLER . http_build_query($params);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl, CURLOPT_FAILONERROR, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($curl, CURLOPT_CAPATH, PAYMENT_CA_CERT);
curl_setopt($curl, CURLOPT_SSLCERT, PAYMENT_CERTIFICATE);
curl_setopt($curl, CURLOPT_SSLKEYTYPE, 'PEM');
curl_setopt($curl, CURLOPT_SSLKEY, PAYMENT_KEY);
// curl_setopt($curl, CURLOPT_SSLKEYPASSWD, PAYMENT_PASSWORD);
$response = curl_exec($curl);
if (!$response) {
die('Error: "' . curl_error($curl) . '" - Code: ' . curl_errno($curl));
}
return $this->decodeResponse($response);
}
protected function sendRequest($params) {
$url = PAYMENT_MERCHANT_HANDLER . http_build_query($params);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl, CURLOPT_FAILONERROR, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($curl, CURLOPT_CAPATH, PAYMENT_CA_CERT);
curl_setopt($curl, CURLOPT_SSLCERT, PAYMENT_CERTIFICATE);
curl_setopt($curl, CURLOPT_SSLKEYTYPE, 'PEM');
curl_setopt($curl, CURLOPT_SSLKEY, PAYMENT_KEY);
// curl_setopt($curl, CURLOPT_SSLKEYPASSWD, PAYMENT_PASSWORD);
$response = curl_exec($curl);
if (!$response) {
die('Error: "' . curl_error($curl) . '" - Code: ' . curl_errno($curl));
}
return $this->decodeResponse($response);
}
Problem je u sledecem, kada pokrenem ovaj kod dobijem gresku "Unable to load client key: Incorrect password", "NSS error -8177". Ako otkomentarisem CURLOPT_SSLKEYPASSWD, onda dobijem segmentation fault:
Code:
* About to connect() to ********* port 8443 (#0)
* Trying **.**.**.** ... * connected
* Connected to ********* (**.**.**.**) port 8443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: /root/***/ca
Segmentation fault (core dumped)
* About to connect() to ********* port 8443 (#0)
* Trying **.**.**.** ... * connected
* Connected to ********* (**.**.**.**) port 8443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: /root/***/ca
Segmentation fault (core dumped)
pomoc! :)