ДеньгиOnline

2017-07-29 03:29:06

Банковские карты (iFrame)

Выставление счёта на оплату банковскими картами в фоновом режиме происходит с использованием встроенного блока (iFrame): пользователь остается на сайте Проекта и взаимодействует с сайтом Платежной системы внутри встроенного блока. 

Режим доступен только для следующих mode_type*:

  • 624 (Банковские карты). 

* При выставлении счёта для банковских карт в обычном режиме параметр mode_type принимает значение, закрепленное в процессе интеграции.

Параметры запроса от Проекта в Систему 

Проект собирает и передает данные в Систему набору параметров с помощью запроса на адрес https://www.onlinedengi.ru/wmpaycheck.php

Для передачи параметров запроса используются следующие правила: 

  1. метод передачи - GET/POST;
  2. формат - XML;
  3. кодировка - windows-1251.

В запросе, помимо параметров, необходимых для выставления счёта в обычном режиме, содержится дополнительный обязательный параметр xml, mode_type принимает фиксированное значение:

Параметр Описание параметра Значение параметра Обязательность параметра
mode_type Идентификатор фонового метода оплаты 624 Да
xml Идентификатор способа формирования ответа на запрос 1 Да

Параметры ответа Системы

Ответ Системы в формате XML и кодировке UTF-8 содержит следующий набор параметров:

Параметр Описание параметра Формат параметра
status

Код статуса платежа:

0 - запрос успешно обработан,
-1 - ошибка при запросе

0/-1
comment Текстовая расшифровка статуса или перечисление всех обнаруженных ошибок string
iframeUrl Ссылка для встраивания в iframe string
payment_id ID транзакции на стороне Системы int
amount_original Сумма запроса в российских рублях float
currency Валюта оплаты в платежной системе

string

ISO 4217, alfa-3

В случае успешного выставления счёта (status = 0) все возвращаемые тэги являются служебными и используются для формирования URL для iFrame. При выставлении счёта используется URL, передаваемый параметром iframeUrl.

Пример ответа в случае успешного выставления счёта

<?xml version="1.0" encoding="UTF-8"?> 
<response> 
	<status>0</status>      
	<iframeUrl><![CDATA[https://www.onlinedengi.ru/pay/invoice.php?id=288902752&csrf=80009f613ebd3df67a842b1f370a77f6&xml=1&lang=ru]]></iframeUrl>
	<payment_id>34343433</payment_id> 
	<amount_original>100</amount_original> 
	<currency>RUB</currency> 
</response> 

Пример ответа в случае ошибки выставления счёта

<?xml version="1.0" encoding="UTF-8"?>
<response>
	<status>-1</status>
	<comment><![CDATA[Некорректно заполнена Сумма платежа]]></comment>
</response>

Пример формирования iFrame при выставлении счёта на оплату банковскими картами по mode_type 624 (PHP)

<?php 
$vars = array( 
'project' => 189, 
'nickname' => '23497434', 
'order_id' => '123456', 
'amount' => 100, 
'mode_type' => 624, 
'xml' => 1,
'paymentCurrency' => 'RUB'
); 
 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://www.onlinedengi.ru/wmpaycheck.php'); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); 
curl_setopt($ch, CURLOPT_TIMEOUT, 30); 
$res = curl_exec($ch); 
 
$xml = simplexml_load_string($res, 'SimpleXMLElement', LIBXML_NOCDATA); 
if(intval($xml->status) == 0){ 
$url = trim($xml->iframeUrl); 
?> 
<iframe name="onmoney" src="<?php echo $url; ?>" width="530" height="925" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"></iframe> 
<?php 
} 
else{ echo $xml->comment;
} 
?>