@floog

Эквайринг TWPG, кто имел дело?

Добрый день. У кого есть опыт интеграции сайта и Эквайринга TWPG.
Тут описана сама технология: https://drive.google.com/file/d/1wNnLV7zq6t_d__y3u...

По требованию банка нужно сгенерироать сертификат по следующей инструкции и отправить его в банк, в ответ получил два файла со следующим сообщением от банка:

"корневой сертификат банка - banktestca.crt и ваш корневой сертификат торговца - 2059055.crt, их необходимо использовать при создания TLS-соединения между вашим сайтом и тестовым TWPG".

При этому меня уже имеется сертификат SSL на сайте для посетителей. А этот сертификат нужен для связи с TWPG

в нижней части документа есть пример....

function PostQW($hostname,$port,$data){

$fp = fsockopen($hostname, $port, $errno, $errstr, 30);

// Заголовок HTTPS-запроса
$headers = 'POST '.$path.' HTTP/1.0\r\n';
$headers .= 'Host: '.$hostname.'\r\n';
$headers .= 'Content-type: application/x-www-form-urlencoded\r\n';
$headers .= 'Content-Length: '.strlen($data).'\r\n\r\n';


и тут вопрос какой заголовок HTTP нужно прописать, чтобы указать пути на эти сертификаты crt ?
  • Вопрос задан
  • 1254 просмотра
Решения вопроса 1
@floog Автор вопроса
Разобрался ...

// корневой сертификат банка
  $caFile = dirname(__FILE__) . '/bank.crt';

  // сертификат торговца
  $certFile =  dirname(__FILE__) .  '/user.crt';

  // ключ сертификата
  $keyFile =  dirname(__FILE__) .  '/user.key';

  // пароль ключа (если есть)
  $privateCertPass = 'password';

  $serverURI = 'https://192.168.0.0:5555/Exec';
  
  // исходящее xml_сообщение
  $xml = '<?xml version="1.0" encoding="UTF-8"?>';
  $xml .= '<TKKPG>';
  $xml .= '<Request>';
  $xml .= '<Operation>CreateOrder</Operation>';
  $xml .= '<Language>RU</Language>';
  $xml .= '<Order>';
  $xml .= '<OrderType>Purchase</OrderType>';
  $xml .= '<Merchant>2000001</Merchant>';
  $xml .= '<Amount>15000</Amount>';
  $xml .= '<Currency>810</Currency>';
  $xml .= '<Description>Test</Description>';
  $xml .= '<ApproveURL>http://192.168.0.1:81/test_stores/test/get_result_post.php</ApproveURL>';
  $xml .= '<CancelURL>http://192.168.0.1:81/test_stores/test/get_result_post.php</CancelURL>';
  $xml .= '<DeclineURL>http://192.168.0.1:81/test_stores/test/get_result_post.php</DeclineURL>';
  $xml .= '</Order>';
  $xml .= '</Request>';
  $xml .= '</TKKPG>';
  
  $ch = curl_init($serverURI);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_SSLCERT, $certFile);
  curl_setopt($ch, CURLOPT_CAINFO, $caFile);
  
  curl_setopt($ch, CURLOPT_SSLKEY, $keyFile);
  curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $privateCertPass);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_VERBOSE, 1);
  
  // ответ TWPG
  $xmlResponse = curl_exec($ch);
  
  // 0 - успешное выполнение запроса
  echo 'CURL status: ' . curl_errno($ch) . '<br>';
    echo 'CURL status description: ' . curl_error($ch);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы