Pull to refresh

Некорректная работа API Яндекс.Денег при приеме платежей картой

Reading time 4 min
Views 24K
В прошлые выходные раздался звонок мобильного телефона. Номер незнакомый. Снимаю трубку.
На противоположном конце линии девушка сообщает, что она представляет компанию Яндекс, и что мне высылали электронное письмо с информацией о новом сервисе: теперь можно принимать на сайте платежи не только Яндекс.Деньгами, но и банковскими картами VISA/MasterCard с помощью формы от Яндекса. Я ответил, что письмо не получал (может попало в спам?), но информация интересная, и я обязательно подробнее ознакомлюсь с новыми возможностями сервиса.

Как это работало раньше

На своем сайте получение платежа с помощью Яндекс.Денег сделал примерно года два назад. Для моих целей хватило самой примитивной Формы-принимателя, которую накидал в конструкторе на сайте Я.Денег, вставил в свой на сайт и более не трогал. В форме автоматически подставлялся нужный кошелек, назначение платежа (номер транзакции в моей внутренней базе с кратким описанием) и сумма. Пользователь просто нажимал кнопку «Оплатить», попадал на сайт Яндекс.Денег, где проверял данные формы и вводил платежный пароль. Далее, через HTTP-уведомления получал идентификатор операции (operation_id) и получал остальные детали платежа через API методом operation-details. Схема довольно простая, и многим наверняка знакомая.

Что изменилось сейчас

В конструкторе формочки появилась новая опция: «Платежи с любых карт VISA и MasterCard»
image
Скорее жму на нее, получаю дополнительный параметр payment-type-choice=on при запросе фрейма, в остальном все остается тоже самое.
Вставляю код получившейся формы для оплаты на сайт, пытаюсь оплатить с карты. Попадаю на сайт Яндекс.Денег, заполняю данные карты. Попадаю на сайт банка (3D-Secure), получаю SMS, ввожу код. Платеж проходит, деньги с карты списаны.
Вот тут начинается самое интересное.

Что не работает

Для начала пришло оповещение о платеже на почту. Вместо обычного «Перевод от другого пользователя» и комментария вроде "#77362 Полотенце синее со звездами" или «test1», получаем красиво оформленную бестолковую «квитанцию» вида:
image
Хм, кто-то заплатил 0.98р. Непонятно кто и непонятно за что.
Захожу на сайт Яндекс.Денег, смотрю детали платежа. Там информация о назначении платежа присутствует.
image

Ага, думаю, информация сохранилась. В письме она не очень-то и нужна, мне нужно забрать ее через API. Но и тут подстерегает неудача. При запросе методом operation-details API возвращает:

{"details":"","type":"deposition","amount":0.98,"direction":"in","title":"Перевод с банковской карты","datetime":"2014-02-20T18:22:20Z","operation_id":"446xxxxxxxxx16012","status":"success"}

То есть отсутствует поле «message», как при оплате Яндекс.Деньгами, а поле «details» — пустое.
Пробую оплатить Яндекс.Деньгами через ту же самую форму, все проходит нормально, API возвращает назначение платежа.

{"message":"test1","details":"test1","sender":"4100xxxxxxxxx36","codepro":false,"type":"incoming-transfer","amount":13.93,"direction":"in","title":"Перевод от 4100xxxxxxxxx36","status":"success","operation_id":"8920xxxxxxxxxxx2025","pattern_id":"p2p", "datetime":"2014-02-18T14:46:08Z"}

Тут и плательщик обозначен (хотя по сути он мне и не нужен), и назначение платежа. При чем и то и другое аж два раза.

Подумалось, что для платежа картой может стоит указать не только назначение платежа, но и комментарий к платежу? Хорошо, пробуем такую форму.

image

В ответ получаем «квитанцию» на почту с комментарием (и без назначения). А на сайте можем увидеть и комментарий, и назначение.

На почту
image
На сайте
image

А вот через API поле details опять пустое, и message отсутствует.

{"details":"","type":"deposition","operation_id":"446xxxxxxxxxxxx012", "datetime":"2014-02-20T18:43:35Z", "status":"success", "amount":0.98, "direction":"in", "title":"Перевод с банковской карты"}

Наличие message в документации заявлено только для p2p переводов, хотя несколько туманное описание, может и не только (описание метода). Сообщение так или иначе присутствует, и хранится в базе Яндекса. Но его нельзя прочитать через API.

Возможность оплаты картами безусловно полезная и удобная, но в данном исполнении, нашел ее для себя неприемлемой, и на сайт не выкатил.
Работать может только для получения донейта, и то не целевого, ибо назначение платежа узнать нельзя (разве что распарсив сайт Яндекс.Денег)

Когда исправят

Багрепорт в Яндекс отправил еще в воскресенье (16.02.2014), письмо-уведомление получил. Но пока подвижек к устранению никаких. Кидаю для теста каждый день 1 рубль, думаю может исправят молча.
Ну и конечно удивила телефонная реклама в виде настоящей живой девушки (в век повальной автоматизации и роботизации). При этом рекламируемый продукт оказался еще довольно сырым.

P.S. Яндекс.Диск «испортил» мне Windows 7 на двух компьютерах. Обещали исправиться после того случая и более тщательно тестировать продукты.
Tags:
Hubs:
+28
Comments 52
Comments Comments 52

Articles