Здравствуйте. Возникла небольшая проблемка, Wm просят прислать им пример XML запроса, которым производится выплаты и соответственно ответ. Помогите пожалуйста (Подключение Х2 интерфейса дял Автовыплат БЕЗ участия админа, т.е. обычные автовыплаты не через кнопку из админки а сразу по запросу) Благодарю
Подключение Интерфейсов
Сообщений 1 страница 10 из 68
Поделиться22010-04-03 08:34:17
Проверка работоспособности WMSigner
Модуль WMSigner используется при подписи запроса ключом WM Keeper Classic. Ознакомьтесь с подробной информации о модуле WMSigner, получении ключей и настройке. Ниже описывается, как можно проверить его работоспособность из PHP. Вызов модуля происходит из функции wm_GetSign(), на вход она получает строку для подписи, возвращает строку из 132-х символов, либо текст ошибки, либо пустую строку в случае когда невозможно вызвать модуль WMSigner.
<? echo wm_GetSign('123'); ?>
Формирование XML-запроса
Формировать XML-запрос можно любым способом, главное чтобы результат соответствовал синтаксису XML и формату запроса. Воспользуемся функциями DOM XML.
<?
$reqID = wm_ReqID();
$doc = domxml_new_doc('1.0');
$root = $doc->create_element('w3s.request');
$root = $doc->append_child($root);
$tmp = $doc->create_element('reqn');
$tmp->set_content($reqID);
$root->append_child($tmp);
$tmp = $doc->create_element('wmid');
$tmp->set_content($wmWMID);
$root->append_child($tmp);
$getpurses = $doc->create_element('getpurses');
$root->append_child($getpurses);
$tmp = $doc->create_element('wmid');
$tmp->set_content($wmWMID);
$getpurses->append_child($tmp);
$request = $doc->dump_mem(TRUE);
?>Функция wm_ReqID() генерирует уникальный идентификатор запроса, основываясь на функциях времени.
Выполнение запросов к сертификационному центру
Запросы к разным интерфейсам похожи друг на друга и отличаются лишь URL-ом, форматом XML-запроса и возвращаемым результатом. Приведем код функции осуществляющей вызов CURL:
<?
function wm_xmlHttpsReq($addr, $xml){
# Использовать переменные из конфигурационного файла config.php
global $wmURL, $wmCAcert, $wmType, $wmKey, $wmCert, $wmPass;
# Инициализируем CURL нужным URL
$ch = curl_init($wmURL.$addr);
# В выводе CURL http-заголовки не нужны
curl_setopt($ch, CURLOPT_HEADER, 0);
# Возвращать результат, а не выводить его в stdout
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
# Метод http-запроса POST
curl_setopt($ch, CURLOPT_POST,1);
# Данные запроса
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
# Укажем путь к корневому сертификату WebMoney CA:
curl_setopt($ch, CURLOPT_CAINFO, $wmCAcert);
# Внимание! Не используйте curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE)!
# Это дает возможность осуществить атаку с подменой DNS.
# Выполнить запрос
$result=curl_exec($ch);
# Обработаем возможные ошибки
if( curl_errno($ch) != 0 ) {
die('CURL_error: ' . curl_errno($ch) . ', ' . curl_error($ch));
};
# Закроем обработчик
curl_close($ch);
return $result;
}
?>Разбор полученного ответа
Ниже приведена структура ответа сервера:
<w3s.response>
<reqn></reqn> - номер запроса, на который высылается ответ
<retval></retval> - код ошибки выполнения запроса: 0 - выполнен успешно
<retdesc></retdesc> - описание ошибки если retval != 0
<тип_ответа>
... - параметры ответа
</тип_ответа>
</w3s.response>Осуществлять разбор XML-ответа можно любым удобным методом (SAX, DOM, Regexp и т.д.) В данном случае был использован способ через функцию PHP xml_parse_into_struct():
<?
$xml_parser = xml_parser_create('UTF-8');
# Парсим XML в переменные $vals, $index
xml_parse_into_struct($xml_parser, $result, $vals, $index);
xml_parser_free($xml_parser);# Проверим ответ на корректность
$check = wm_CheckResp($vals,$index);
if( $check != 0) die($check);# Поместим список кошельков, их описаний, и сумм на них в переменную $purses
$purses = array();
$pursename = '';
$amount = '';
$desc = '';
for($n = 0; $n < count($vals); ++$n){
$e = $vals[$n];
switch ($e['tag']){
case 'PURSE':
switch ($e['type']){
case 'open':
$pursename = ''; $amount = ''; $desc = '';
break;
case 'close':
$purses[$pursename] = array('amount' => $amount, 'desc' => $desc);
break;
}
break;
case 'PURSENAME':
$pursename = $e['value'];
break;
case 'AMOUNT':
$amount = $e['value'];
break;
case 'DESC':
$desc = $e['value'];
break;
}
}
?>Более подробная информация по интерфейсу х2 здесь.
Поделиться32010-04-03 08:51:19
Благодарю!
Поделиться42010-04-03 15:00:52
И это всё им надо??
Поделиться52010-04-03 15:08:06
И это всё им надо??
Если просят, значит надо.
Щас все кто подают заявку на подключение х2 проходят проверку, и на знание PHP тоже.
Поделиться62010-04-03 15:59:13
Да. С этим вообще жесть, куча вопросов сыпится. Жаль, что отвечают они раз в сутки... Так же нужно писать Бизнес-план им расписывать, по мимо всего прочего..
Поделиться72010-04-03 17:54:58
У меня вот попросили пример запроса в XML формате, которым бы вы выполнили перевод с одного кошелька на другой. Мне нужно всё, написанное выше, прислать им?
У меня раньше автовыплаты работали без проблем, 1 раз перезжал на новый хост за 2 дня обновили ip, а тут на свой сервер переехал и выдали своё((, хорошо что Ваш проект прошел проверку.
Но с запросами я думаю, явно перегнули
Отредактировано web669 (2010-04-03 18:01:50)
Поделиться82010-04-03 18:55:16
Мне нужно всё, написанное выше, прислать им?
Все написанное выше - это пример запросов, подстраивать нужно именно к своему сайту и IP.
Поделиться92010-04-04 15:44:10
Супер.. Это не те запросы, мне отказали.. Вообще весело теперь ждать месяц
Поделиться102010-04-05 00:41:39
Народ, помогите пожалуйста. Кто знает что конкретно ответить им
