// Константные переменные
// Certificate Authority Банка
$ca = 'security/psroot.pem';
// Приватный ключ Торговца
$key = 'security/key.pem';
// PKCS#12 кейстор с подписанным сертификатом Торговца
$p12_file = 'security/keystore.p12';
// Пароль от PKCS#12 кейстора
$p12_password = '*****';
// URL MerchantHandler Банка. По этому адресу Торговец делает запрос в
// банк с деталями платежа а так же деталями карты
$merchant_handler = 'https://someurl';
// URL ClientHandler Банка. По этому адресу Торговец редиректит Клиента
// на модуль
$client_handler = 'https://url';
// Название страницы приведено в качестве примера
$system_malfunction_page = 'system_malfunction.html';
$amount = $_POST['amount'];
$currency = $_POST['currency'];
$description = $_POST['description'];
$language = $_POST['language'];
$params['command'] = 'V';
$params['amount'] = $amount;
$params['currency'] = $currency;
$params['description'] = $description;
$params['language'] = $language;
$params['msg_type'] = 'SMS';
// IP адрес Клиента
if (isset($_SERVER['REMOTE_ADDR'])) {
$params['client_ip_addr'] = $_SERVER['REMOTE_ADDR'];
} elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$params['client_ip_addr'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$params['client_ip_addr'] = $_SERVER['HTTP_CLIENT_IP'];
} else {
// should never happen
$params['client_ip_addr'] = '10.10.10.10';
}
qstring = http_build_query($params);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $merchant_handler);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $qstring);
curl_setopt($ch, CURLOPT_SSLCERT, $p12_file);
curl_setopt($ch, CURLOPT_SSLKEY, $key);
curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, 'keypass');
curl_setopt($ch, CURLOPT_CAPATH, $ca);
curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'P12');
curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'TLSv1');
$result = curl_exec($ch);
// пример вернувшегося результата
// TRANSACTION_ID: TwXcbhBgrIsMY0A7s982nx/pSzE=
// for debug reasons only!
//if (curl_error($ch)) {
// echo curl_error($ch) . '<br>';
// echo 'Error code: ' . curl_errno($ch);
// curl_close($ch);
// exit;
//}
if (curl_error($ch)) {
header('Location: ' . $system_malfunction_page);
}
curl_close($ch);
при формировании запроса curl выдаёт ошибку:
Couldn`t open PKCS12 file from 'security/keystore.p12'
Error 58.