- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/paysystem/yandexcert.php
- Класс: BitrixSalePaySystemYandexCert
- Вызов: YandexCert::generate
public function generate($shopId, $companyName)
{
$yandexCsr = self::loadFromOptions($shopId);
if ($yandexCsr === '')
{
self::$cn = "/business/".$companyName;
$config = array(
"digest_alg" => "sha1",
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
);
$dnFull = array(
"countryName" => "RU",
"stateOrProvinceName" => "Russia",
"localityName" => "Moscow",
"commonName" => self::$cn,
);
$res = openssl_pkey_new($config);
$csr_origin = openssl_csr_new($dnFull, $res);
if ($csr_origin === false)
return;
$csr_full = "";
openssl_pkey_export($res, self::$pkey);
openssl_csr_export($csr_origin, self::$csr);
openssl_csr_export($csr_origin, $csr_full, false);
preg_match('"Signature Algorithm: (.*)-----BEGIN"ims', $csr_full, $sign);
$sign = str_replace("t", "", $sign);
if ($sign)
{
$sign = $sign[1];
$a = explode("n", $sign);
unset($a[0]);
$sign = str_replace(" ", "", trim(join("n", $a)));
}
self::$sign = $sign;
$dbRes = YandexSettingsTable::getById($shopId);
if ($dbRes->fetch())
YandexSettingsTable::update($shopId, array('SIGN' => self::$sign, 'CSR' => self::$csr, 'PKEY' => self::$pkey, 'CERT' => ''));
else
YandexSettingsTable::add(array('SHOP_ID' => $shopId, 'SIGN' => self::$sign, 'CSR' => self::$csr, 'PKEY' => self::$pkey));
}
}