Интерфейс X4. Проверка выписанных счетов.
С помощью этого интерфейса вы можете получать историю выписанных счетов и проверять их состояние (оплачен, не оплачен, отказан в оплате), а также проверять состояние конкретного счёта по его номеру. Полное описание интерфейса находится здесь. Интерфейс по умолчанию включен для всех пользователей WebMoney и не имеет никаких специальных требований по активации.
Интерфейс довольно сложный, но очень похож на рассмотренный выше X3. "Поведение" этого интерфейса тоже во многом зависит от того, какие именно входные параметры он получает в XML-запросе пользователя.
Наш XML-запрос должен выглядеть так:
Что означают параметры:
- reqn - номер запроса, всякий раз должен быть больше предыдущего (в рамках данного отдельно взятого интерфейса);
- wmid - ваш WMID;
- sign - подпись запроса, сформированная из параметров: purse + reqn;
- getoutinvoices\purse - номер вашего кошелька, по которому вы хотите получить историю выписанных счетов;
- getoutinvoices\wminvid - номер счёта в системе WebMoney;
- getoutinvoices\orderid - номер счёта в системе учёта вашего сайта;
- getoutinvoices\datestart - минимальная дата и время выписки счёта;
- getoutinvoices\datefinish - максимальная дата и время выписки счёта.
Формат ответа сервера WebMoney следующий:
...
В ответе нас, прежде всего, интересует поле <retval> (eсли оно равно 0, то история счетов получена успешно, в противном случае retval будет содержать код ошибки, расшифровку которой нужно смотреть в поле <retdesc>). Также нас будет интересовать атрибут cnt поля <outinvoices>, в котором содержится количество счетов, попавших в выборку. Кроме того, мы "уложим" в структуру массивов полученную выборку счетов, а именно их уникальные номера в базе данных WebMoney (атрибуты id полей <outinvoice>) и состояния оплаты (поля <state>). Мы детально опишем всё это ниже, когда будем рассматривать работу функции.
Приведем теперь полностью функцию, которая реализует работу с интерфейсом X4, и добавим её в wmxml.inc.php:
// ИНТЕРФЕЙС X4. ПРОВЕРКА ВЫПИСАННЫХ СЧЕТОВ.
// На выходе: массив ['retval'=>код выполнения, 'retdesc'=>описание результата,
// 'cnt'=>количество счетов вошедших в выборку, 'invoices'=>массив со счетами]
function _WMXML4 ($purse,$wminvid,$orderid,$datestart,$datefinish) {
global $Global_WMID, $XML_addr;
$reqn=_GetReqn();
$rsign=_GetSign($purse.$reqn);
$xml="
$reqn
$Global_WMID
$rsign
$purse
$wminvid
$orderid
$datestart
$datefinish
";
$resxml=_GetAnswer($XML_addr[4], $xml);
//echo $resxml;
$xmlres = simplexml_load_string($resxml);
if(!$xmlres) {
$result['retval']=1000;
$result['retdesc']="Не получен XML-ответ";
return $result;
}
$result['retval']=strval($xmlres->retval);
$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
$result['cnt']=strval($xmlres->outinvoices->attributes()->cnt);
if($result['cnt']>0) {
// В элементе $result['invoices'] формируем массив
// [номер счёта в WM] = состояние оплаты
foreach ($xmlres->outinvoices->outinvoice as $invoice) {
$wminvid=strval($invoice->attributes()->id);
$state=strval($invoice->state);
$result['invoices'][$wminvid]=$state;
}
}
return $result;
}
Разберём, что происходит в этой функции.
Функция получает переменные:
- $purse - номер вашего кошелька, по которому вы хотите получить историю выписанных (исходящих) счетов. Напомним, что счета в системе WebMoney выставляются "от имени" конкретного кошелька, вот именно этот свой кошелёк и необходимо указать в данной переменной. Обязательный параметр.
- $wminvid - уникальный номер счёта в системе WebMoney, присвоенный ему во время выписки. Целое положительное число. Необязательный параметр.
- $orderid - номер счёта во внутренней системе учёта вашего сайта. Этот номер вы сами присваиваете счёту при выписке (см. интерфейс X1). Целое положительное число. Необязательный параметр.
- $datestart - минимальная дата и время выписки счёта в формате ГГГГММДД ЧЧ:ММ:СС. Счета, выставленные раньше $datestart, в выборку не попадут. Обязательный параметр.
- $datefinish - максимальная дата и время выписки счёта в формате ГГГГММДД ЧЧ:ММ:СС. Счета, выставленные позднее $datefinish, в выборку не попадут. Обязательный параметр.
Здесь всё очень похоже на интерфейс X3. Переменные: $purse (пойдет в поле getoutinvoices\purse XML-запроса), $datestart (пойдет в поле getoutinvoices\datestart XML-запроса) и $datefinish (пойдет в поле getoutinvoices\datefinish XML-запроса) - являются обязательными! Если вы не зададите какое-либо из этих полей, интерфейс выдаст ошибку. Отсюда вывод: интерфейс X4 всегда должен знать, по какому кошельку и за какой период времени запрашивается история исходящих счетов. Если вам вдруг захочется получить полную историю за всё время существования кошелька, то задайте, например, $datestart="19700101 00:00:00" и $datestart="20990101 00:00:00".
Переменные: $wminvid (пойдет в поле getoutinvoices\wminvid XML-запроса) и $orderid (пойдет в поле getoutinvoices\orderid XML-запроса) - являются необязательными. Если обе эти переменные не заданы, то выбираются все счета по кошельку за указанный промежуток времени - так, как это описано в предыдущем абзаце. Если задана переменная $wminvid, то в выборку попадёт только один счёт, имеющий именно такой уникальный номер в базе данных WebMoney, однако лишь при условии, что он был выписан с указанного кошелька $purse и в указанный промежуток времени $datestart - $datefinish. Если задана переменная $orderid, то в выборку попадут счета, имеющие именно такой внутренний номер в учетной системе вашего сайта и удовлетворяющие условиям, что они были выписаны с указанного кошелька $purse и в указанный промежуток времени $datestart - $datefinish. Поскольку внутренний номер в вашей учетной системе - это неуникальное поле (иными словами, вы могли выписать несколько счетов с одинаковым orderid), то в такой выборке может оказаться не один счёт, а несколько. Если в getoutinvoices\orderid будет передан 0, то интерфейс посчитает, что orderid вообще не передан и является пустым. Наконец, если заданы одновременно и переменная $wminvid, и переменная $orderid, то $orderid будет проигнорирован интерфейсом.
Отсюда ещё один вывод: $wminvid и $orderid, если заданы, сужают выборку и, как правило, ограничивают её одним единственным счётом. Откуда можно узнать wminvid и orderid конкретного интересующего нас счёта, мы уже рассказывали, когда говорили об интерфейсе X3. Повторим.
Уникальный номер (в базе данных WebMoney) WM-счёта ($wminvid):
- может быть получен от интерфейса X1 при выписке счёта;
- может быть получен из истории операций с помощью интерфейса X3;
- передаётся вашему серверу при оплате через WM Merchant в форме оповещения о платеже, т.к. при оплате через WM Merchant тоже, незаметно для покупателя и продавца, создаётся счёт;
Номер (в системе учёта выставителя) WM-счёта ($orderid):
- назначается вами самостоятельно при выписке счёта в интерфейсе X1;
- может быть получен из истории операций с помощью интерфейса X3;
- может быть получен от интерфейса X2 при оплате по счёту с соответствующим wminvid;
Всё это может показаться вам слишком сложным, однако на самом деле вам важно лишь определиться, каким именно образом вы будете использовать интерфейс X4. Как правило, единственная задача, которая стоит перед разработчиком при использовании X4 - автоматически проверить состояние оплаты выписанных ранее счетов. Для этого есть два пути:
- Путь первый. Робот на вашем сайте запускается с определённой периодичностью и запрашивает информацию по всем счетам за определённый промежуток времени. В этом случае в функцию передаются переменные $purse, $datestart, $datefinish ($wminvid и $orderid не передаются). Значения $datestart и $datefinish устанавливайте в зависимости от ваших конкретных задач и условий. Например, если ваш сайт выписывает счета со сроком действия 2 дня, то и временной отрезок при их проверке в X4 также имеет смысл ограничить последними 2 днями. Просматривая выборку в цикле, "вытаскивайте" состояния оплаты счетов и выполняйте необходимые действия.
- Путь второй. После выписки счёта покупателю вы предоставляете ему специальную ссылку или даёте возможность нажать на специальную кнопку, в результате чего покупатель сам инициирует вызов интерфейса X4. Запрашивается информацию по данному конкретному счёту. В этом случае вы передаёте в функцию одну из переменных $wminvid или $orderid (в зависимости от того, как вы учитываете и идентифицируете у себя выписанные счета), а также $purse, $datestart, $datefinish. В полученной выборке будет присутствовать только один искомый счёт. "Вытаскивайте" состояние его оплаты и, если счёт оплачен, отгружайте товар покупателю.
Как правило, разработчики используют оба способа параллельно.
О том, какие бывают состояния оплаты счёта и как их определить, я расскажу ниже. Вернёмся к рассмотрению функции.
Генерируем уникальный номер запроса $reqn с помощью функции _GetReqn():
$reqn=_GetReqn();
Получаем подпись XML-пакета с помощью функции _GetSign(). На вход функции подаём строку, полученную в результате склейки параметров, как это предусмотрено в описании интерфейса. Параметры должны склеиваться именно в таком порядке, как это указано ниже.
$rsign=_GetSign($purse.$reqn);
Наконец, формируем XML-пакет с запросом:
$xml="
$reqn
$Global_WMID
$rsign
$purse
$wminvid
$orderid
$datestart
$datefinish
";
Отправляем запрос на сервер WebMoney и получаем от него ответ с помощью функции _GetAnswer(). На вход функции подаём URL интерфейса X4 из глобального массива $XML_addr, а также пакет XML-запроса, сформированный только что:
$resxml=_GetAnswer($XML_addr[4], $xml);
Для отладки и поиска ошибок может потребоваться прочитать XML-ответ "в чистом виде". Тогда просто раскомментируйте следующую строку:
// echo $resxml;
Вызовом функции simplexml_load_string() из библиотеки SimpleXML создаём на основе XML-ответа, полученного от WebMoney, объект. Параметры XML-ответа становятся свойствами объекта, и мы сможем легко получать к ним доступ.
$xmlres = simplexml_load_string($resxml);
Если $xmlres не создан, значит, мы по какой-то причине не получили ответ от WebMoney. Тогда прерываем работу функции:
if(!$xmlres) {
$result['retval']=1000;
$result['retdesc']="Не получен XML-ответ";
return $result;
}
Читаем следующие свойства объекта: retval (содержит результат выполнения запроса; если история счетов получена успешно, то retval равен 0), retdesc (содержит расшифровку результата), а также атрибут cnt свойства outinvoices, в котором содержится количество счетов, вошедших в выборку. Сохраняем эти переменные в массив $result.
$result['retval']=strval($xmlres->retval);
$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
$result['cnt']=strval($xmlres->outinvoices->attributes()->cnt);
Обратите внимание, что содержимое поля <retdesc> мы перекодировали из UTF-8 в Win1251. Дело в том, что XML-ответ от WebMoney приходит в кодировке Windows1251, но SimpleXML при помещении XML-данных в объект принудительно превратил их в Юникод. Такая вот у него особенность. А так как <retdesc> - это строка, и теоретически она может содержать русские символы, то при выемке её из объекта мы возвращаем ей "родную" кодировку. Хотя, в общем, это не обязательно и зависит от ваших нужд и задач.
Далее, если cnt больше 0, т.е. в выборке есть хотя бы один счёт, переходим к сохранению информации о счетах. Нас, напомню, интересует состояние их оплаты. Информация о счетах содержится внутри одинаковых блоков XML-ответа <outinvoice>...</outinvoice>. Пробегаем эти блоки в цикле и формируем массив, где ключами элементов делаем уникальные номера счетов в системе WebMoney (атрибут id полей <outinvoice>), а значениями элементов делаем соответствующие этим счетам состояния их оплаты (поля <state>). Сформированный массив сохраняем внутрь элемента invoices выходного массива $result:
if($result['cnt']>0) {
// В элементе $result['invoices'] формируем массив [номер счёта в WM] = состояние оплаты
foreach ($xmlres->outinvoices->outinvoice as $invoice) {
$wminvid=strval($invoice->attributes()->id);
$state=strval($invoice->state);
$result['invoices'][$wminvid]=$state;
}
}
На выходе функция _WMXML4() возвращает массив $result:
return $result;
Чтобы было лучше понятно, ещё раз посмотрим на содержимое массива $result (его можно привести в читабельный вид с помощью функции print_r(), например):
Array (
[retval] => код_выполнения
[retdesc] => описание_результата
[сnt] => количество_счетов_в_выборке
[invoices] => Array (
[номер_счёта] => состояние оплаты
[номер_счёта] => состояние оплаты
[номер_счёта] => состояние оплаты
...
)
)
Что касается состояния оплаты, то оно по каждому счёту может иметь одно из следующих значений: 0 - не оплачен, 1 - оплачен с протекцией, 2 - оплачен окончательно, 3 - отказ от оплаты. "Оплачен окончательно" (2) означает, что протекция перевода по счёту уже снята, либо счёт был выставлен и оплачен вообще без протекции.
Теперь осталось только проверить, как работает то, что мы написали. Создадим скрипт для тестов test.php:
";
echo "Расшифровка - ".$r['retdesc']." ";
echo "Количество - ".$r['cnt']." ";
while(list($key,$val)=each($r['invoices'])) {
echo "* У счёта ".$key." состояние оплаты ".$val." ";
}
?>
В этом примере мы получили полную историю счетов, выписанных 30-го августа 2008 года.
Завершая разговор об X4, хотим заметить, что приведенный пример функции _WMXML4() во многом является лишь демонстративным. В вашем конкретном случае может понадобиться получение "на выходе" более расширенной информации, либо структурирование её в ином виде. Не сомневаемся, что вы сможете адаптировать функцию под свои нужды. Главное - понять, как устроен интерфейс.
Интерфейс X9. Получение балансов по кошелькам.
С помощью данного интерфейса вы можете получать информацию о текущих остатках на кошельках вашего WMID. Полное описание интерфейса находится здесь. Интерфейс требует включения путем обращения в службу поддержку WMID 941977853154.
X9 особенно полезен для автоматических обменных пунктов, сайтов, выплачивающих "WM-бонусы" и других проектов, в которых посетитель должен видеть текущие денежные резервы сервиса.
Наш XML-запрос должен выглядеть так:
Что означают параметры:
- reqn - номер запроса, всякий раз должен быть больше предыдущего (в рамках данного отдельно взятого интерфейса);
- wmid - ваш WMID, которым подписывается запрос;
- sign - подпись запроса, сформированная из параметров: getpurses\wmid+reqn;
- getpurses\wmid - WMID, по кошелькам которого необходимо проверить балансы. Дело в том, что данный интерфейс поддерживает доверенности, т.е. вы можете проверить балансы на кошельках чужого WMID, если владелец этого WMID дал вам соответствующую доверенность на сайте security.webmoney.ru. Запрос в этом случае вы всё равно должны подписывать своим WMID, но в поле getpurses\wmid записать WMID проверяемый. В приведенном ниже примере функции мы будем проверять балансы на собственном WMID. Если же вы захотите проверить балансы по доверенности, вам нужно будет немного видоизменить функцию.
Формат ответа сервера WebMoney следующий:
...
Что нас интересует в ответе? Во-первых, поле <retval> (если оно равно 0, то балансы получены успешно, в противном случае retval будет содержать код ошибки, расшифровку которой нужно смотреть в поле <retdesc>). Во-вторых, поля <pursename> и <amount>, содержащие соответственно номера кошельков и их балансы.
Как вы уже поняли, запросить остаток по одному конкретному кошельку, к сожалению, нельзя. Ответ возвращает балансы сразу всех кошельков.
Приведем теперь полностью функцию, которая реализует работу с интерфейсом X9, и добавим её в wmxml.inc.php:
// ИНТЕРФЕЙС X9. ПОЛУЧЕНИЕ БАЛАНСА
// На выходе: массив ['retval'=>код выполнения, 'retdesc'=>описание результата,
// 'purses'=>массив балансов]
function _WMXML9 () {
global $Global_WMID, $XML_addr;
$reqn=_GetReqn();
$rsign=_GetSign($Global_WMID.$reqn);
$xml="
$reqn
$Global_WMID
$rsign
$Global_WMID
";
$resxml=_GetAnswer($XML_addr[9], $xml);
// echo $resxml;
$xmlres = simplexml_load_string($resxml);
if(!$xmlres) {
$result['retval']=1000;
$result['retdesc']="Не получен XML-ответ";
return $result;
}
$result['retval']=strval($xmlres->retval);
$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
if($result['retval']==0 && $result['retval']!==false) {
// Формируем массив [номер кошелька] = баланс
foreach ($xmlres->purses->purse as $purse) {
$pursename=strval($purse->pursename);
$amount=floatval($purse->amount);
$result['purses'][$pursename]=$amount;
}
}
return $result;
}
Разберём, что происходит в этой функции.
Функция не получает никаких входных параметров.
Генерируем уникальный номер запроса $reqn с помощью функции _GetReqn():
$reqn=_GetReqn();
Получаем подпись XML-пакета с помощью функции _GetSign(). На вход функции подаём строку, полученную в результате склейки параметров, как это предусмотрено в описании интерфейса. Параметры должны склеиваться именно в таком порядке, как это указано ниже.
$rsign=_GetSign($Global_WMID.$reqn);
Наконец, формируем XML-пакет с запросом:
$xml="
$reqn
$Global_WMID
$rsign
$Global_WMID
";
Отправляем запрос на сервер WebMoney и получаем от него ответ с помощью функции _GetAnswer(). На вход функции подаём URL интерфейса X9 из глобального массива $XML_addr, а также пакет XML-запроса, сформированный только что:
$resxml=_GetAnswer($XML_addr[9], $xml);
Для отладки и поиска ошибок может потребоваться прочитать XML-ответ "в чистом виде". Тогда просто раскомментируйте следующую строку:
// echo $resxml;
Вызовом функции simplexml_load_string() из библиотеки SimpleXML создаём на основе XML-ответа, полученного от WebMoney, объект. Параметры XML-ответа становятся свойствами объекта, и мы сможем легко получать к ним доступ.
$xmlres = simplexml_load_string($resxml);
Если $xmlres не создан, значит, мы по какой-то причине не получили ответ от WebMoney. Тогда прерываем работу функции:
if(!$xmlres) {
$result['retval']=1000;
$result['retdesc']="Не получен XML-ответ";
return $result;
}
Читаем следующие свойства объекта: retval (содержит результат выполнения запроса; если балансы успешно получены, то retval равен 0), retdesc (содержит расшифровку результата). Сохраняем эти переменные в массив $result.
$result['retval']=strval($xmlres->retval);
$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
Обратите внимание, что содержимое поля <retdesc> мы перекодировали из UTF-8 в Win1251. Дело в том, что XML-ответ от WebMoney приходит в кодировке Windows1251, но SimpleXML при помещении XML-данных в объект принудительно превратил их в Юникод. Такая вот у него особенность. А так как <retdesc> - это строка, и теоретически она может содержать русские символы, то при выемке её из объекта мы возвращаем ей "родную" кодировку. Хотя, в общем, это не обязательно и зависит от ваших нужд и задач.
Если retval равен 0, то можно перейти к сохранению балансов по кошелькам. Номера кошельков и их балансы содержатся внутри одинаковых блоков XML-ответа <purse>...</purse> в <pursename> и <amount> соответственно. Пробегаем эти блоки в цикле и формируем ассоциативный массив, где ключами элементов делаем номера кошельков, а значениями элементов делаем соответствующие этим кошелькам балансы. Сформированный массив сохраняем внутрь элемента purses выходного массива $result:
if($result['retval']==0 && $result['retval']!==false) {
// Формируем массив [номер кошелька] = баланс
foreach ($xmlres->purses->purse as $purse) {
$pursename=strval($purse->pursename);
$amount=floatval($purse->amount);
$result['purses'][$pursename]=$amount;
}
}
На выходе функция _WMXML9() возвращает массив $result:
return $result;
Чтобы было лучше понятно, ещё раз посмотрим на содержимое массива $result (его можно привести в читабельный вид с помощью функции print_r(), например):
Array (
[retval] => код_выполнения
[retdesc] => описание_результата
[purses] => Array (
[номер_кошелька] => баланс
[номер_кошелька] => баланс
[номер_кошелька] => баланс
...
)
)
Теперь осталось только проверить, как работает то, что мы написали. Создадим скрипт для тестов test.php:
";
echo "Расшифровка - ".$r['retdesc']." ";
while(list($key,$val)=each($r['purses'])) {
echo "* На кошельке ".$key." ".$val." WM ";
}
?>
Интерфейс X14. Бескомиссионный возврат перевода.
С помощью этого интерфейса вы можете в течение 14 дней сделать возврат полученных WM-средств отправителю, не потеряв при этом комиссию системы. Интерфейс будет очень полезен для обменных пунктов и других сервисов в случае необходимости произвести возврат клиенту ошибочного платежа. Полное описание интерфейса находится здесь. Если Вы являетесь владельцем аттестата продавца и используете merchant.webmoney.ru, то использовать X14 вы можете без дополнительной регистрации. В противном случае, необходимо включить интерфейс путем обращения в службу поддержку WMID 941977853154.
Наш XML-запрос должен выглядеть так:
Что означают параметры:
- reqn - номер запроса, всякий раз должен быть больше предыдущего (в рамках данного отдельно взятого интерфейса);
- wmid - ваш WMID;
- sign - подпись запроса, сформированная из параметров: reqn+trans\inwmtranid+trans\amount
- trans\inwmtranid - уникальный номер возвращаемой транзакции (в системе WebMoney);
- trans\amount - сумма возвращаемой транзакции.
Формат ответа сервера WebMoney можно посмотреть в описании интерфейса. В ответе нас интересуют: поле <retval> (eсли оно равно 0, то возврат произведён успешно, в противном случае retval будет содержать код ошибки, расшифровку которой нужно смотреть в поле <retdesc> или всё в том же описании интерфейса), а также атрибут id поля <operation> (содержит номер транзакции возврата) и поле <datecrt> (дата и время создания транзакции возврата).
Приведем теперь полностью функцию, которая реализует работу с интерфейсом X14, и добавим её в wmxml.inc.php:
// ИНТЕРФЕЙС X14. БЕСКОМИССИОННЫЙ ВОЗВРАТ.
// На выходе: массив ['retval'=>код выполнения, 'retdesc'=>описание результата,
// 'date'=>дата и время, 'wmtranid_ret'=>номер транзакции возврата]
function _WMXML14 ($wmtranid,$amount) {
global $Global_WMID, $XML_addr;
$reqn=_GetReqn();
$amount=floatval($amount);
$rsign=_GetSign($reqn.$wmtranid.$amount);
$xml="
$reqn
$Global_WMID
$rsign
$wmtranid
$amount
";
$resxml=_GetAnswer($XML_addr[14], $xml);
// echo $resxml;
$xmlres = simplexml_load_string($resxml);
if(!$xmlres) {
$result['retval']=1000;
$result['retdesc']="Не получен XML-ответ";
return $result;
}
$result['retval']=strval($xmlres->retval);
$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
$result['wmtranid_ret']=strval($xmlres->operation->attributes()->id);
$result['date']=strval($xmlres->operation->datecrt);
return $result;
}
Разберём, что происходит в этой функции.
Функция получает переменные:
- $wmtranid - уникальный номер транзакции (в базе данных WebMoney), которая возвращается. Целое число. Обязательный параметр.
- $amount - сумма возвращаемой транзакции. Данное значение используется в интерфейсе исключительно в целях самопроверки: если указанная сумма не равна реальной сумме возвращаемой транзакции, то интерфейс вернет ошибку. Заметим также, что транзакция может быть возвращена только полностью на всю сумму; частичный возврат не допускается. Обязательный параметр.
Напомним, откуда мы можем получить значение $wmtranid:
- передаётся вашему серверу при оплате через WM Merchant в форме оповещения о платеже;
- может быть получен из истории операций с помощью интерфейса X3.
Генерируем уникальный номер запроса $reqn с помощью функции _GetReqn():
$reqn=_GetReqn();
У $amount удаляем незначащие нули, если они есть:
$amount=floatval($amount);
Получаем подпись XML-пакета с помощью функции _GetSign(). На вход функции подаём строку, полученную в результате склейки параметров, как это предусмотрено в описании интерфейса. Параметры должны склеиваться именно в таком порядке, как это указано ниже.
$rsign=_GetSign($reqn.$wmtranid.$amount);
Наконец, формируем XML-пакет с запросом:
$xml="
$reqn
$Global_WMID
$rsign
$wmtranid
$amount
";
Отправляем запрос на сервер WebMoney и получаем от него ответ с помощью функции _GetAnswer(). На вход функции подаём URL интерфейса X14 из глобального массива $XML_addr, а также пакет XML-запроса, сформированный только что:
$resxml=_GetAnswer($XML_addr[14], $xml);
Для отладки и поиска ошибок может потребоваться прочитать XML-ответ "в чистом виде". Тогда просто раскомментируйте следующую строку:
// echo $resxml;
Вызовом функции simplexml_load_string() из библиотеки SimpleXML создаём на основе XML-ответа, полученного от WebMoney, объект. Параметры XML-ответа становятся свойствами объекта, и мы сможем легко получать к ним доступ.
$xmlres = simplexml_load_string($resxml);
Если $xmlres не создан, значит, мы по какой-то причине не получили ответ от WebMoney. Тогда прерываем работу функции:
if(!$xmlres) {
$result['retval']=1000;
$result['retdesc']="Не получен XML-ответ";
return $result;
}
Читаем следующие свойства объекта: retval (содержит результат выполнения запроса; если возврат произведен успешно, то retval равен 0), retdesc (содержит расшифровку результата), атрибут id свойства operation (содержит уникальный номер только что созданной транзакции возврата в базе данных WebMoney), свойство operation\datecrt (содержит дату и время выполнения транзакции возврата). Сохраняем эти переменные в массив $result.
$result['retval']=strval($xmlres->retval);
$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
$result['wmtranid_ret']=strval($xmlres->operation->attributes()->id);
$result['date']=strval($xmlres->operation->datecrt);
Обратите внимание, что содержимое поля <retdesc> мы перекодировали из UTF-8 в Win1251. Дело в том, что XML-ответ от WebMoney приходит в кодировке Windows1251, но SimpleXML при помещении XML-данных в объект принудительно превратил их в Юникод. Такая вот у него особенность. А так как <retdesc> - это строка, и теоретически она может содержать русские символы, то при выемке её из объекта мы возвращаем ей "родную" кодировку. Хотя, в общем, это не обязательно и зависит от ваших нужд и задач.
На выходе функция _WMXML14() возвращает массив $result:
return $result;
Теперь осталось только проверить, как работает то, что мы написали. Создадим скрипт для тестов test.php:
";
echo "Расшифровка - ".$r['retdesc']." ";
echo "Номер - ".$r['wmtranid_ret']." ";
echo "Дата - ".$r['date']." ";
?>
Отметим, что примечание операции возврата, совершенной интерфейсом X14, всегда будет иметь следующий вид: "Moneyback transaction: номер возвращаемой транзакции. (примечание возвращаемой транзакции)", и изменить его нельзя.
Интерфейс X16. Создание кошелька.
Пожалуй, один из самых простых интерфейсов. С его помощью вы можете создавать кошельки в своём WMID. Полное описание интерфейса находится здесь. Интерфейс доступен всем пользователям с любым аттестатом и не требует специального включения.
Наш XML-запрос должен выглядеть так:
Что означают параметры:
- reqn - номер запроса, всякий раз должен быть больше предыдущего (в рамках данного отдельно взятого интерфейса);
- wmid - ваш WMID;
- sign - подпись запроса, сформированная из параметров: createpurse\wmid+createpurse\pursetype+reqn
- createpurse\wmid - WMID, в рамках которого мы хотим создать новый кошелёк. По идее, здесь можно было бы указать не только свой, но и чужой WMID, однако, данный интерфейс не поддерживает доверие, поэтому создавать кошелёк можно только в своем WMID. По этой причине и в wmid, и в createpurse\wmid должен значиться один и тот же WMID - ваш. В общем, зачем этот параметр включен разработчиками в состав XML-запроса - осталось неясным;
- createpurse\pursetype - тип создаваемого кошелька;
- createpurse\desc - название кошелька, которое будет отображаться в Keeper Classic или Keeper Light.
Формат ответа сервера WebMoney можно посмотреть в описании интерфейса. В ответе нас интересуют поля <retval> (eсли оно равно 0, то кошелёк создан успешно, в противном случае retval будет содержать код ошибки, расшифровку которой нужно смотреть в поле <retdesc> или всё в том же описании интерфейса) и <pursename>. В последнем содержится номер созданного кошелька.
Приведем теперь полностью функцию, которая реализует работу с интерфейсом X16, и добавим её в wmxml.inc.php:
// ИНТЕРФЕЙС X16. СОЗДАНИЕ КОШЕЛЬКА.
// На выходе: массив ['retval'=>код выполнения, 'retdesc'=>описание результата,
// 'purse'=>номер кошелька]
function _WMXML16 ($type,$desc) {
global $Global_WMID, $XML_addr;
$reqn=_GetReqn();
$rsign=_GetSign($Global_WMID.$type.$reqn);
$desc=trim($desc);
$desc=htmlspecialchars($desc, ENT_QUOTES);
$desc=iconv("CP1251", "UTF-8", $desc);
$xml="
$reqn
$Global_WMID
$rsign
$Global_WMID
$type
$desc
";
$resxml=_GetAnswer($XML_addr[16], $xml);
// echo $resxml;
$xmlres = simplexml_load_string($resxml);
if(!$xmlres) {
$result['retval']=1000;
$result['retdesc']="Не получен XML-ответ";
return $result;
}
$result['retval']=strval($xmlres->retval);
$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
$result['purse']=strval($xmlres->purse->pursename);
return $result;
}
Разберём, что происходит в этой функции.
Функция получает переменные:
- $type - тип кошелька (1 буква - Z, R, U и т.д.). Обязательный параметр.
- $desc - название кошелька. Допускаются любые символы, в том числе русские буквы. $desc желательно передавать в функцию в кодировке Win1251. Обязательный параметр.
Генерируем уникальный номер запроса $reqn с помощью функции _GetReqn():
$reqn=_GetReqn();
У $desc убираем лишние пробелы в начале и конце:
$desc=trim($desc);
Получаем подпись XML-пакета с помощью функции _GetSign(). На вход функции подаём строку, полученную в результате склейки параметров, как это предусмотрено в описании интерфейса. Параметры должны склеиваться именно в таком порядке, как это указано ниже.
$rsign=_GetSign($Global_WMID.$type.$reqn);
Теперь преобразуем специальные символы ("<", "&" и др.) в html-сущности. Если этого не сделать, то при попадании в $desc таких символов WebMoney наш запрос не примет и вернет ошибку "A semi colon character was expected". Преобразовать спецсимволы в PHP можно с помощью функции htmlspecialchars():
$desc=htmlspecialchars($desc, ENT_QUOTES);
Но это ещё не всё. $desc может содержать русские символы. Например, в $desc может быть такой текст: "тестовый кошелёк". И здесь нужно понимать, как подготовить $desc для передачи в составе XML-пакета. Дело в том, что содержимое полученного от вас XML-пакета сервер WebMoney попытается прочитать так, будто он пришел в кодировке Unicode. Если сервер встретит в пакете русские символы в другой кодировке, то вернет ошибку: "An invalid character was found in text content" ("Обнаружен ошибочный символ"). Для того чтобы этого не произошло, нам нужно принудительно перекодировать $desc в UTF-8 и уже в таком виде включать его в XML-запрос.
Сделать преобразование кодировок можно с помощью функции iconv() из одноименного расширения PHP:
$desc=iconv("CP1251", "UTF-8", $desc);
То же самое, но с помощью функции mb_convert_encoding() из расширения mbstring:
$desc=mb_convert_encoding($desc, "UTF-8", "windows-1251");
Можно даже преобразовать не в UTF-8, а в html-сущности, это тоже сработает:
$desc=mb_convert_encoding($desc, "HTML-ENTITIES","windows-1251");
Если же iconv и mbstring вашим сервером не поддерживаются, то могу предложить ещё один вариант. Оставьте $desc в кодировке Win1251, а в начале XML-запроса вставляйте заголовок <?xml version='1.0' encoding='windows-1251'?>. Он укажет, что данные в пакете переданы в Win1251, и сервер WebMoney обработает их именно в этой кодировке. То есть пакет в этом случае будет начинаться так:
$xml="
...
Наконец, формируем XML-пакет с запросом:
$xml="
$reqn
$Global_WMID
$rsign
$Global_WMID
$type
$desc
";
Отправляем запрос на сервер WebMoney и получаем от него ответ с помощью функции _GetAnswer(). На вход функции подаём URL интерфейса X16 из глобального массива $XML_addr, а также пакет XML-запроса, сформированный только что:
$resxml=_GetAnswer($XML_addr[16], $xml);
Для отладки и поиска ошибок может потребоваться прочитать XML-ответ "в чистом виде". Тогда просто раскомментируйте следующую строку:
// echo $resxml;
Вызовом функции simplexml_load_string() из библиотеки SimpleXML создаём на основе XML-ответа, полученного от WebMoney, объект. Параметры XML-ответа становятся свойствами объекта, и мы сможем легко получать к ним доступ.
$xmlres = simplexml_load_string($resxml);
Если $xmlres не создан, значит, мы по какой-то причине не получили ответ от WebMoney. Тогда прерываем работу функции:
if(!$xmlres) {
$result['retval']=1000;
$result['retdesc']="Не получен XML-ответ";
return $result;
}
Читаем следующие свойства объекта: retval (содержит результат выполнения запроса; если кошелёк создан успешно, то retval равен 0), retdesc (содержит расшифровку результата), purse\pursename (содержит номер созданного кошелька, включая первую "сигнальную" букву, т.е. в формате буква+12 цифр). Сохраняем эти переменные в массив $result.
$result['retval']=strval($xmlres->retval);
$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
$result['purse']=strval($xmlres->purse->pursename);
Обратите внимание, что содержимое поля <retdesc> мы перекодировали из UTF-8 в Win1251. Дело в том, что XML-ответ от WebMoney приходит в кодировке Windows1251, но SimpleXML при помещении XML-данных в объект принудительно превратил их в Юникод. Такая вот у него особенность. А так как <retdesc> - это строка, и теоретически она может содержать русские символы, то при выемке её из объекта мы возвращаем ей "родную" кодировку. Хотя, в общем, это не обязательно и зависит от ваших нужд и задач.
На выходе функция _WMXML16() возвращает массив $result:
return $result;
Теперь осталось только проверить, как работает то, что мы написали. Создадим скрипт для тестов test.php:
";
echo "Расшифровка - ".$r['retdesc']." ";
echo "Номер кошелька - ".$r['purse']." ";
?>
В заключение ещё раз приведём ссылку на файл с функциями всех 10 XML-интерфейсов WebMoney, которые мы рассмотрели в статьях на оВебМани.Ру. Вот он. Файл готов к работе, вы можете включать его в свои программы и использовать.
© Голиков А.В., Загребина А.Н., http://wm-izhevsk.com/
1. Регистрация телефона в системе Telepat
1.1 Установка мидлета
1.2 Регистрация и активация WM Keeper Mobile
2. Раздел главного меню "Настройки"
2.1 Мастер-код
2.2 Входной пароль
2.3 Настройки контактов
2.4 Комментарий
2.5 Размер экрана
2.6 Оплаты услуг
2.7 Настройка соединения
2.8 Сообщения
3. Запуск WM Keeper Mobile
4. Обзор главного меню
4.1 Раздел главного меню "Мои данные"
4.1.1 Мой баланс
4.1.2 Мои реквизиты
4.1.3 История операций
4.2 Раздел главного меню "Пригласить друга"
4.3 Раздел главного меню "Перевод средств"
4.3.1 Перевод средств на WM-кошелек
4.3.2 Перевод пользователю Telepat на номер телефона
4.4 Раздел главного меню "Оплата услуг"
4.4.1 Подраздел "Все поставщики"
4.4.2 Подраздел "Мои закладки"
4.4.3 Подраздел "История платежей"
4.5 Раздел главного меню "Сообщения"
4.6. Раздел главного меню "Счета"
4.6.1. Счета WebMoney
4.6.2. Счета системы Telepat
4.7. Раздел главного меню "Пополнение"
4.8. Раздел главного меню "Дебетовые карты"
4.9 Раздел главного меню "Контакты"
Сервис Telepat предназначен для проведения расчетов между телефонными
абонентами в режиме реального времени. Для хранения и перевода средств в сервисе
используются электронные кошельки системы WebMoney Transfer, управление которыми
осуществляется пользователями сервиса при помощи мобильного телефона с
установленным java-приложение WM Keeper Mobile (мобильный аналог клиентской
программы WebMoney) или с помощью голосовое меню с городского телефона. Однако
мы рассмотрим более удобный и распространенный способ управления - при помощи
мобильного телефона.
1. Регистрация телефона в системе Telepat
Для использования программы WM Keeper Mobile вам необходимо установить на
ваш телефон мидлет (java-приложение), скачав его c сайта telepat.ru,
либо скачав архив для установки с компьютера. В случае успешной установки
мидлета для его активации необходимо зарегистрироваться и получить
мастер-код.
Для этого регистрируем номер своего телефона на
странице сайта telepat.ru,
затем загружаем Java-приложение в телефон, смартфон или КПК. Ссылку для
скачивания можно заказать по SMS.


Ссылка придет по SMS в таком формате:

1.1 Установка мидлета
Скачав и установив мидлет, нужно дать ему разрешение на использование сети
интернет, отправку и прием сообщений.

1.2 Регистрация и активация WM Keeper Mobile
Запустив в первый раз "Мобильный кипер", заходим в раздел регистрация, вводим
номер телефона в международном формате,
подтверждаем свое согласие с правилами и соглашениями системы WebMoney, нажимаем
[Ок]. На экране появится предупреждение: Сейчас с Вашего номера
будет отправлена заявка на регистрацию в виде SMS-сообщения. Через 1-2 минуты
система выдаст Ваш уникальный мастер код. Надежно сохраните его и не сообщайте
третьим лицам. Внимание! В системе будет зарегистрирован тот номер, с которого
отправляется SMS-сообщение.

Получив по SMS мастер код, нужно перезагрузить WM Keeper Mobile и зайдя в
меню Вход указать номер своего
телефона и полученный Мастер-код,
подтвердить введенные данные, нажав [Ок], активировать "Мобильный кипер".

После активации кипера мы попадаем в главное меню состоящее из следующих
разделов: Мои данные, Пригласить друга, Перевод средств, Оплата услуг,
Сообщения, Счета, Пополнение, Дебетовые карты, Контакты, Настройки.
Сразу же рекомендуем произвести первичную настройку кипера, раздел
Настройка находится в самом низу. Рассмотрим все по порядку.
2. Раздел главного меню "Настройки"
Данный раздел позволяет настроить следующие пункты:
- Мастер-код
- Входной пароль
- Настройки контактов
- Комментарий
- Размер экрана
- Оплата услуг
- Настройки соединения
- Сообщения
Рассмотрим каждый пункт в отдельности.

2.1 Мастер-код
В данном разделе нужно указать Номер вашего телефона в
международном формате и Мастер-код. Мастер-код присваивается
вашему телефонному номеру при регистрации в системе Telepat. Он приходит в
виде SMS-сообщения на ваш мобильный телефон.
Данный раздел мы заполнили на этапе регистрации, но изменения телефонного
номера и мастер кода может понадобиться, например, при смене сим-карты.

2.2 Входной пароль
Этот пароль необходимо будет вводить каждый раз при входе в программу,
допустимо использовать только цифры, длина пароля должна быть не менее трех
знаков. Без ввода Входного пароля воспользоваться WM Keeper
Mobile не удастся , например, в случае утери телефона, ваши средства останутся
нетронутыми. Восстановив свой телефонный номер (сим карту) и зная мастер-код, вы
сможете активировать "Мобильный кипер" на новом телефонном аппарате и уже с него
полноценно управлять своими средствами.
В целях безопасности рекомендуем установить входной пароль.

2.3 Настройки контактов
В разделе Настройки контактов рекомендуем разрешить добавлять
новых пользователей в список ваших контактов.

2.4 Комментарий
В разделе Комментарий можно установить опцию сохранения
последнего комментария. Это очень удобно при совершении регулярных однотипных
платежей.

2.5 Размер экрана
Раздел Размер экрана позволяет выбрать размер шрифта в
зависимости от разрешения экрана вашего телефона. Для телефона с маленьким
экраном и разрешением менее 240х320 нужно выбрать LowRes, а для больших, с
разрешением более 240х320 – HiRes.
Версия LowRes и Версия HiRes на дисплее КПК:

2.6 Оплаты услуг
Настройка Оплаты услуг сводится к тому, чтобы настроить
формирование раздела Мои закладки. В закладки будут добавляться
все поставщики услуг с Любым новым параметром, либо только
Новый поставщик услуг. Рекомендуем формировать новую закладку
только при новом поставщике услуг. Следует отметить, что изменение способа
формирования закладок ведет к удалению уже сформированных.

2.7 Настройка соединения
Для Настройки соединения можно выбрать тип соединения с
Интернетом. В основном мидлет на этапе установки сам определяет, какое
соединение использовать HTTP или Socket.

2.8 Сообщения
В разделе Сообщения можно настроить интервал получения новых
WM-сообщений. Для пользователей, ведущих активную WM-переписку посредством
кипера, рекомендуем установить интервал в 1 минуту. Для обычных пользователей –
2 минуты. Для пользователей, экономящих на интернет трафике, есть возможность
запрос новых сообщений отключить. В любом случае, все сообщения будут
доступны в разделе главного меню Сообщения.

После настройки нужно перезагрузить "Мобильный кипер", все измененные
параметры будут активированы при следующей загрузке. Для этого выйдем из
программы и запустим его снова.
3. Запуск WM Keeper Mobile
Запускаем JAVA приложение со знакомой иконкой в виде желтого муравья,
разработанное компанией Computing Force. Так как приложение использует интернет,
то при запуске на экране появится системное сообщение с вопросом
Разрешить доступ к сети?, на который нужно ответить положительно
и указать, что доступ разрешен на время данной сессии, т.е. до следующего
перезапуска приложения.

Ранее, в целях безопасности, нами был установлен пароль на вход в приложение,
до его ввода использовать приложение невозможно. Вводим его, в нашем случае с
помощью стилуса и попадаем в главное меню WM Keeper Mobile.
4. Обзор главного меню
Главное меню состоит из следующих разделов:
- Мои данные
- Пригласить друга
- Перевод средств
- Оплата услуг
- Сообщения
- Счета
- Пополнение
- Дебетовые карты
- Контакты
- Настройки
Некоторые разделы делятся на подразделы для удобства навигации. Рассмотрим все разделы подробнее.

4.1 Раздел главного меню "Мои данные"
4.1.1 Мой баланс
Как следует из названия, в данном разделе вы сможете узнать, сколько средств
находится на ваших кошельках. "Мобильный кипер" поддерживает WebMoney кошельки
Z, R, E, U – типа.

4.1.2 Мои реквизиты
В системе WebMoney все пользователи имеют 12-тизначный учетный номер,
идентификатор WMID. Кошельки WM также имеют 12-тизначные номера с буквенным
префиксом, обозначающим валюту счета, например, Z – для USD или R- российские
рубли и другие. Ваши реквизиты в системе WebMoney вы можете посмотреть в данном
разделе. Из этого же раздела можно посмотреть историю операций по имеющимся
кошелькам.

4.1.3 История операций
Для просмотра Истории операций нужно выбрать Тип
кошелька, нажать [Ок], и после загрузки появится список ваших операций
на данном кошельке, входящие поступления отмечены знаком "+", исходящие знаком
"–".

При просмотре деталей входящей операции видим дату и время операции,
сумму поступления, номер кошелька отправителя и комментарий к платежу.

При просмотре деталей исходящей операции видим дату и время операции,
отправленную сумму, комиссию системы WebMoney, номер кошелька получателя и
комментарий к платежу.

Если какой-то из кошельков не находится под управлением системы Telepat, то
вам предложат зайти на сайт www.telepat.ru и подключить его.

4.2 Раздел главного меню "Пригласить друга"
Данный раздел достаточно прост, цель его - подключение ваших друзей к
системе. Для этого вводите номер телефона вашего друга в международном формате,
указываете язык, на котором будет послано приглашение, нажимаете [Ок]. На
появившийся на экране вопрос нужно дать разрешение на отправку SMS. Надо
заметить, что SMS не анонимное, а исходит от вашего номера.

Через некоторое время поступает SMS-сообщение, содержащее ссылку на
скачивание приложения WM Keeper Mobile.

4.3 Раздел главного меню "Перевод средств"
Данный раздел самый важный, хотя и имеет всего три подраздела, но вариаций
может бать несколько.
Состоит из следующих подразделов:
- На WM-кошелек
- Пользователю Telepat
- Ввести код протекции

4.3.1 Перевод средств на WM-кошелек
В системе WebMoney помимо простых переводов с кошелька на кошелек реализована
возможность перевода с протекцией. Рассмотрим по очереди, от простого к
сложному.
Перевод без протекции
При данном типе перевода указывается Тип валюты WMZ, WMR или
др., Номер кошелька получателя средств, который должен
быть того же типа, Сумма и Комментарий к
платежу, в котором указывается, за что переданы данные средства. После ввода
всех данных нажимаем [Ок], на следующей странице перепроверяем и подтверждаем
платеж.
При переводе без протекции, средства доступны получателю сразу при
поступлении и он может ими распоряжаться по своему усмотрению.

Перевод с протекцией
Данный тип перевода содержит те же параметры, что и обычный перевод,
т.е. Тип валюты, Номер кошелька получателя
средств, Сумму, Комментарий, а также пара
дополнительных параметров – Код протекции и Срок
протекции. Ниже введенного комментария, ставится галочка С
протекцией, устанавливается Код и Срок протекции.
Код протекции задает Отправитель средств при формировании платежа. Срок
протекции – срок в течении которого Получатель средств должен ввести код
протекции для завершения перевода и получения доступа к средствам.
Если Получатель средств не ввел в установленное время код протекции, платеж
возвращается Отправителю. При вводе неправильного кода протекции 10 раз, платеж
возвращается Отправителю. После ввода всех данных нажимаем [Ок], на следующей
странице перепроверяем и подтверждаем платеж. При переводе с протекции, средства
доступны Получателю только после ввода кода протекции в указанный срок.

После платежа с протекцией данный перевод высвечивается в истории операций в
виде открытого красного замочка с "–" до момента ввода Кода
протекции Получателем. После успешного ввода Кода
протекции, иконка отображается, как обычная расходная операция.

Для того чтоб вы не забыли Код протекции, он посылается в
виде SMS – сообщения на Ваш телефонный номер.
4.3.2 Перевод пользователю Telepat на номер телефона
Поскольку Telepat создан для управления средствами с помощью мобильного
телефона, то вместо стандартного WM-кошелька, можно перевести средства на
телефонный номер.
Делается это следующим образом – указывается Тип валюты,
Номер телефона получателя, Сумма и
Комментарий к платежу.
Telepat позволяет управлять лишь одним WM-кошельком каждого типа, по этому
нет необходимости запоминать номера разнотипных кошельков, достаточно указать
номер телефона зарегистрированного в системе Telepat, а все остальное сделает
автоматика.
После подтверждения платежа средства спишутся с вашего кошелька и зачислятся
на кошелек того же типа зарегистрированный в системе Telepat, а также
получателю придет SMS–оповещение Вы получили Х WMZ от пользователя системы
Telepat....

Завершить перевод
В данном разделе можно завершить Перевод с протекцией. Для
этого нужно указать Тип валюты, Код протекции и
Сумму платежа, что не вполне удобно. Гораздо удобнее зайти в
раздел Мои данные, История операций, выбрать
Тип кошелька. В истории операций этого кошелька будет отражено
поступление средств со знаком в виде "открытого" зеленого замочка,
выбираем его и нажимаем [Ок], просматриваем детали операции, далее жмем
Завершить, вводим Код протекции и получаем
доступ к средствам. Напоминаем, что если 10 раз неправильно вводим код
протекции, средства возвращаются к отправителю, замочек на иконке
"закроется".

4.4 Раздел главного меню "Оплата услуг"
Раздел состоит из трех подразделов:
- Все поставщики
- Мои закладки
- История платежей
Подраздел Все поставщики разделен на три группы:
Мобильная связь,
Интернет,
Телевидение.

4.4.1 Подраздел "Все поставщики"
Группа "Мобильная связь"
В данной группе собраны провайдеры мобильной связи, такие известные как
Билайн, МТС, Мегафон, Теле2, Скайлинк, КиевСтар, так и ряд менее известных
региональных операторов.
Рассмотрим процесс оплаты на примере пополнения счета Билайн.
Заходим в меню Оплата услуг- Мобильная связь,
выбираем Билайн, в открывшемся окне вводим Номер
абонента, Сумму и Тип кошелька, с
которого будет производиться оплата.
Для удобства разработчиками предусмотрена вставка реквизитов, а в данном
случае номера телефона, из раздела Контакты. Чтобы
воспользоваться данной функцией, нужно нажать на пиктограмму зеленого бюста со
стрелочкой, в открывшемся списке Контактов выбрать нужный,
нажать Меню затем Вставить.
Хотим заметить, что ввод суммы платежа целой и дробной части осуществляется
порознь, т.е. для ввода суммы 5,60 WMZ нужно в отдельное поле ввести "5", а в
соседнее, отделенное точкой "60" . Сделано это для универсальности работы
программы, как на простых кнопочных телефонах, так и на КПК с сенсорным
экраном.

Итак, введя все параметры платежа, нажимаем [Ок], после соединения с сервером
подтверждаем платеж, снова нажав [Ок]. WM Keeper Mobile сообщает нам о том,
что наш платеж на пополнение телефона успешно поставлен в очередь на выполнение.
А через некоторое время SMS сообщает нам, что платеж зачислен.

Оплата других сотовых операторов принципиально ни чем не отличается.
Группа "Интернет"
В данной группе собраны провайдеры интернет, такие как Стрим, Акадо, Корбина
Телеком, РОЛ, Дом.RU и другие. Для оплаты интернет нужно выбрать название
провайдера, ввести Номер договора, Сумму,
Тип кошелька с которого будет произведена оплата.

Группа "Телевидение"
В данной группе собраны поставщики кабельного Телевидения: НТВ-Плюс,
Космос-ТВ, Диван.ТВ и другие. Для оплаты за кабельное ТВ нужно выбрать
поставщика, ввести Номер договора, Сумму,
Тип кошелька с которого будет произведена оплата.

4.4.2 Подраздел "Мои закладки"
В данном разделе находятся Закладки ваших платежей
провайдерам услуг. Создана эта группа специально для удобства использования,
т.к. помимо того, что не нужно "листать вниз" курсор до необходимого провайдера,
еще в закладках запоминаются все параметры последнего платежа, такие как
Тип валюты, Сумма, Номер телефона или
договора.

Раздел Мои закладки автоматически появится после проведения
первого платежа за Оплату услуг.
4.4.3 Подраздел "История платежей"
В данной группе собрана История ваших платежей провайдерам
услуг. История содержит дату и время, номер телефона или договора, название
оператора, сумму и статус платежа.

4.5 Раздел главного меню "Сообщения"
В данном разделе содержатся входящие и исходящие сообщения в хронологическом порядке. При поступлении нового сообщения в правом верхнем углу появится соответствующая иконка. Иконка может не появиться, если в настройках была отключена возможность запроса новых сообщений с сервера.

Войдя в раздел Сообщения, мы видим, что сообщения
представлены в формате "от кого"или "кому" с указанием WMID и начало сообщения,
порядка 20 знаков. Выбрав кнопками джойстика вверх-вниз нужное сообщение, его
можно просмотреть полностью, нажав Меню - Подробнее, а за тем,
если необходимо, ответить Меню - Ответить отправителю.

Вводим Тему и Текст сообщения, нажимаем [Ок]
для отправки сообщения.

В зависимости от настроек WM Keeper Mobile может предложить добавить нового
пользователя в Контакты.

При необходимости вы можете посмотреть и отправленные вами сообщения,
отвечать на свои сообщения, естественно, нельзя.

4.6. Раздел главного меню "Счета"
4.6.1. Счета WebMoney
Зайдя в раздел Счета WebMoney - Неоплаченные счета мы видим
список выставленных нам счетов в формате Сумма, Дата и
время счета. Чтобы узнать "от кого" и "за что" выставлен счет, нужно
нажать кнопку Детали.
Далее в меню можно Оплатить или Отказаться от
оплаты счета. При отказе от оплаты данный счет будет аннулирован и больше в
списке Неоплаченных счетов не появится.

При отсутствии неоплаченных счетов WM Keeper Mobile сообщит
вам об этом.
Выписать счет пользователю WebMoney достаточно просто, нужно
указать WMID, Тип валюты и Сумму
которая должна быть списана в вашу пользу. В рассматриваемой версии Keeper
Mobile записать комментарий не представляется возможным, он формируется
системой Telepat следующего типа: Счет на оплату от пользователя
Телепат... с указанием номера телефона.

4.6.2. Счета системы Telepat
Выписать счет через систему Telepat достаточно просто, для
этого указываем Тип валюты, Сумму и
Комментарий. В Комментарии следует указать, за что выписан
данный счет. Подтвердив выписку счета на экране появится уникальный Номер
счета в системе Telepat. Данный номер, в нашем примере 24672, следует
сообщить контрагенту, например, передав его по SMS.

Для оплаты счета выписанного посредством системы Telepat необходимо знать
Уникальный код(номер счета).
Для оплаты счета заходим в меню Счета – Счета системы Telepat –
Оплатить. В появившуюся форму вписываем Номер счета
который нужно оплатить и нажимаем [Ок]. В появившемся окне появятся реквизиты
счета: Сумма которую спишут в пользу Получателя
пользователя Telepat (с указанием номера телефона) и
Комментарий. Подтвердив оплату счета нажав [Ок], с вашего
кошелька спишется указанная в счете сумма и зачислится на кошелек контрагента
выписавшего счет. При этом ваш контрагент получит SMS-сообщение о том, что счет
был успешно оплачен и сумма получена от пользователя Telepat с указанием
номера телефона.

Надо заметить, что при данном способе выписки счетов не указывается, кто
должен оплатить данный счет, то есть изначально счет выписывается неопределенному кругу лиц, но оплатить такой счет можно только по средством Мобильного кипера и только один раз.
Если данный счет ранее уже был оплачен, то вы увидите соответствующее
сообщение. Если вы по ошибке попытаетесь оплатить свой счет, система не даст
этого сделать.

4.7. Раздел главного меню "Пополнение"
В данном разделе производится пополнение вашего кошелька путем активации
WM-карты или чека Paymer. Для пополнения введите Номер карты
(чека), Код авторизации и Сумму, которую
необходимо зачислить на кошелек. Следует отметить, что если номинал карты
больше зачисленной на кошелек суммы, то остаток средств останется на WM-карте и
его можно будет использовать в следующий раз.

4.8. Раздел главного меню "Дебетовые карты"
WebMoney Transfer предоставляет сервис по выдаче и обслуживанию банковских
карт международных платежных систем (МПС). Выдача дебетовых карт клиентам
WebMoney Transfer производится совместно с банками участниками МПС (Visa,
Eurocard/Mastercard и др.). Суть сервиса заключается в закреплении каждой
выдаваемой карты за определенным WM-идентификатором участника системы, что
позволяет производить перевод с WM-кошелька владельца на карту быстро и без
использования дорогостоящих межбанковских переводов. В дальнейшем деньги с карты
могут быть получены в любом из многочисленных банкоматов или использованы для
покупки товаров и услуг в магазинах и компаниях, принимающих банковские
дебетовые карты.
В данном разделе можно посмотреть список закрепленных за вами карт и баланс
по ним.
К сожалению, на момент написания статьи мы не располагаем прикрепленными
дебетовыми картами.

4.9 Раздел главного меню "Контакты"
Этот раздел является аналогом записной книжки, в которую вносятся все нужные
для работы реквизиты. Меню раздела позволяет добавлять, изменять или удалять
ваши контакты.
Сохраняя новый контакт вы указываете Имя (можно указать ФИО
или другой человекопонятный параметр), WMID, Номер
телефона и кошельки Z, R, E, U – типа.

После добавления новых записей в книгу Контактов
рекомендуется проводить Синхронизацию.
Синхронизация - это сохранение текущего списка на сервере Telepat, в
последствии их можно будет загрузить в WM Keeper Mobile, например, после смены
телефона или установив вновь "Мобильный кипер".

На этом мы завершаем описание регистрации в системе Telepat и работы WM
Keeper Mobile, процедуру Аттестации и Авторизации на
сайтах рассмотрим в следующий раз.
| |