Как мы пытались внедрить Яндекс.Кассу

Предисловие


Сколько живу рядом с миром технологий, всегда думал, что есть ИТ элита — люди которые с закрытыми глазами пишут код, с легкостью могут в уме генерировать md5 и переписывать ядра unix. И, сказать по правде, я думал, именно такие ребята работают в компании Яндекс. Мы очень удивились, что их детище под названием Яндекс.Касса находится в глубочайшем альфа-тестировании. О некоторых проблемах, с которыми мы столкнулись и пути их решения в этой статье.

Яндекс.НеБетаДаже


После успешной регистрации в системе вам будет предложено выбрать путь интеграции: для настоящих Гиков — http, или менее сложный email. У нас самописная CMS, поэтому выбрать готовый шаблон интеграции не представилось возможным.
Нам успешно предоставили документацию, демо-доступ, и с установленным дедлайном наша работа закипела.

О личном кабинете
Личный кабинет совсем не работает, точнее — работает один раз, поэтому всю информацию необходимо передавать/изменять/получать только у вашего личного менеджера. Будьте внимательны.

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

Наши ошибки, и их решения


#1


Самой глупой, на мой взгляд, ошибкой стала опечатка в адресе checkurldemo.
Мы случайно, даже не представляю, как, написали четвертой русскую букву «с», и, на мой взгляд, самое ужасное, что мы узнали об этом спустя 3 дня. Яндекс никак не учитывает факт опечатки и техподдержка не стесняясь возвращает нам лог со знаком вопроса в url.

Примерный ответ техподдержки #1
Вот такой ответ получает наш сервер, проверьте доступность сервера:
<html> <head> <title>che?kurldemo</title> <META name="keywords" content="?????? ???????,, che?kurldemo" /> <META name="description" content="?????? ???????  che?kurldemo" /> <script src="/project/js/jquer

Будьте внимательны, хоть это и глупая ошибка, но она имеет место быть, и вы, к сожалению, с этой проблемой останетесь наедине.

#2


Беда не приходит одна. В документации не заметили, что Яндекс.Касса использует в своей XML сериализации временные метки формата ISO8601. На выяснение этого у нас ушел еще один день. Будьте внимательны.

ISO8601:2004
Формат определяется как:
YYYY-MM-DDThh:mm:ss.fZZZZZ
Расшифровка формата
YYYY
год, точно 4 цифры
MM
месяц, точно 2 цифры (01=январь и т. д.)
DD
день месяца, точно 2 цифры (от 01 до 31)
T
латинский символ «T», должен быть в верхнем регистре
hh
часы, точно 2 цифры (24-часовой формат, от 00 до 23)
mm
минуты, точно 2 цифры (от 00 до 59)
ss
секунды, точно 2 цифры (от 00 до 59)
f
дробная часть секунды (от 1 до 6 цифр),
может отсутствовать, в этом случае следует опускать и разделитель «.»
ZZZZZ
Описатель временной зоны, может принимать значения:
Z — UTC, символ «Z» должен быть в верхнем регистре.
+hh:mm или -hh:mm — смещение относительно UTC (GMT) (показывает, что указано локальное время, которое на данное число часов и минут опережает или отстает от UTC).

Обязательно должны присутствовать все указанные элементы, допустимо опускать только дробную часть секунд (в этом случае следует опускать и разделитель «.»). Если нужно задать только дату, то время всё равно следует указать как 00:00:00.

Примеры:
2011-07-24T19:00:00+04:00 — 19 часов 00 минут 24 июля 2011 года, часовой пояс — UTC + 4 часа.
2004-07-24T15:00:00Z — тот же момент времени в каноническом представлении.
2004-07-24T15:00:00.666Z — тот же момент времени плюс 666 миллисекунд.

Обратите внимание, пример неправильной функции:

<?php
echo date(DATE_ISO8601);
?>

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

#3


У нас был дедлайн, у нас был клиент. Третья ошибка, настолько замурована в сознании Яндекса, что признали ее только через 3 дня наших мучений. Ни личный кабинет, ни ваш менеджер, ни специалист технической поддержки не скажут вам того, что скажу я.

Секрет от Яндекса
Параметр shopPassword имеет ограничение по длине в 20 символов.

Клиент настоял на сложности всех паролей и мы как примерные исполнители выполнили все указания, заполнив поле shopPassword 28 символами алфавита НЛО. Но спустя семь кругов ада отладки ошибки «Неверный md5» оказалось, что оно имеет ограничение в 20 символов. Яндекс по умолчанию режет пароль до этой длины.

Цитаты службы поддержки:
"… ничего страшного не случилось..."
Нигде и ничего по этому поводу не написано, так что будьте внимательны.

В заключении


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

Комментарии 27

    +8
    Что-то как-то вам просто не повезло. Либо вы это так преподносите. Сам недавно подключал кассу к сайту — получилось проще, чем я думал. Не сочтите, конечно, за рекламу, но и общение с поддержкой тоже понравилось. Звонили нам уточняли, почему не пользуемся, предлагали помощь. А не пользовались — потому что просто в стадии запуска был проект. В общем, с разочарованиями автора, к счастью, столкнуться не пришлось.
    • НЛО прилетело и опубликовало эту надпись здесь
        –8
        Нас об этом не уведомляли. Просто сухо и без извинений, техподдержка сетовала что ничего страшного не произошло.
        • НЛО прилетело и опубликовало эту надпись здесь
            0
            А вот у Paypal «в былые годы» все было чинно и прозрачно. По крайней мере я только-только изучая PHP смог настроить все что мне нужно и даже слегка изменить то что мне нужно.
            Да и сейчас вроде как все в порядке. По крайней мере все работает несколько лет и не глючит, а значит нет повода куда-то лезть и что-то ковырять.
        +5
        Вы странные.

        По поводу первой ошибки я даже не знаю, что и сказать. То есть вы за три дня не догадались сделать, я не знаю, mail('me@me.me', 'Пришёл Яндекс', print_r($_POST, 1))?

        #2
        > В документации не написано
        Вот документация money.yandex.ru/doc.xml?id=526537
        Пункт 6.6. Типы данных

          –3
          По поводу даты согласен, вопросов нет. Видимо пелена неудач затмила взгляд
          0
          Не могу ручаться, конечно, но увидев первые знаки вопроса в строке content="?????? ???????,, che?kurldemo" я бы скорее всего сразу понял, что в che?kurldemo тоже затесалась кириллица.
            –5
            В этом и соль, только после того как техподдержка прислала нам такой ответ, мы поняли в чем ошибка. Это было не сразу. Хуже всего что Яндекс не пресекает такое на корню и оперативно мы не могли отследить информацию из-за ужасного состояния личного кабинета.
              0
              Ну я с этой опечаткой уже успешно боролся где-то на 1 курсе универа, причём помогая сокурсникам, которые сидели часами и не могли понять в чём проблема. Да и вот недавно тоже с лёгкостью обнаружил русскую С у каких-то разработчиков, которые цеплялись к нам по API.
              Подскажу простой способ найти косяк — копируете код куда-нибудь, где можно кодировку менять. Поменяйте и сравните с оригиналом. Если русских букв не должно быть — ничего и не поменяется.
              0
              Есть такая метода программирования, копипаста называется!
              +32
              Если убрать ошибки связанные с вашей невнимательностью, то от статьи ничего не останется.
                +2
                Какая то странная статья, озаглавить надо было «Мы не умеем дебажить собственные ошибки», документация по я.кассе вполне приличная, нам на интеграцию понадобилось пару дней. Гораздо больше времени заняла пересылка документов в Яндекс :)
                  0
                  Как решили проблему с датой?
                    +1
                    Спасибо за отзыв, коллеги уже поправляют баг с сохранением пароля длиннее 20 символов.
                      0
                      Кстати, единственное достойное замечание описанное в статье. Недавно подключал яндекс.кассу с подобными проблемами не сталкивался, но вот не очень понятно как тестировать ответы от нашего сервера, когда сервер яндекс.кассы обращается к нему после оплаты или при неудаче? И как проводить тестовые платежи, а то пришлось 2 рубля из кровных на тесты спустить?)
                        0
                        Тестировать без реальных денег можно в тестовой среде. Сейчас при подключении в личном кабинете можно поставить галочку, если нужен доступ к ней. До запуска личного кабинета нужно было запрашивать у менеджера индивидуально.
                          +1
                          Вдогонку: коллеги подсказывают, что параметры и инструкции для тестирования выдавались и выдаются по умолчанию всем, кто подключает Кассу с http-уведомлениями, вы не получали их?
                            0
                            Только через общение с их техподдержкой. Второй день именно этим и занимаюсь. То у меня с их слов 301 сайт возвращает, а по моим тестам он возвращает 200 то я им shopid не передаю, хотя shopid жестко прописан цифрой в XML шаблоне. В общем я планировал подключить плагин, рекомендуемый ими для своей CMS, а оказалось что второй день настроить не могу, потому что обратной связи нет, она только через тех поддержку. А при общении с ними создается ощущение что им некогда. Потому что проблему не решают, просто односложные ответы какие-то кидают и все.
                              0
                              Привет, подскажите, пожалуйста, ShopID — передам коллегам ваши впечатления о поддержке, чтобы они могли исправить ситуацию.
                                0
                                Да я внедрил уже все. Тут описал по шагам процедуру внедрения http://serg-smirnoff.com/2015/09/10/post_10346.htm в моем случае, с использованием готового модуля, который допиливался руками на лету, по обратной связи от суппорта

                          +2
                          Хорошая, годная реклама Яндекс-кассы. Если это действительно скрытая реклама яндекс-кассы, то, что тут скажешь маркетинг 80лвл. Если нет, то непонятно зачем была написана статья, она приведет только к положительному эффекту для яндекс-кассы.
                            0
                            На днях тоже напоролся на баги Яндекс.касса. По поводу 20 символов, в документации написано не менее 20 символов, я ввел 26, на демо платежах не работало, позвонил в поддержку, сказали использовать первые 20. Но на этом мои проблемы не закончились. При переходе на продакшен, платежи перестали работать. Я опять позвонил в поддержку, сказали поправят и придет письмо на почту. Итог, поправили, но письмо так и не пришло…
                            • НЛО прилетело и опубликовало эту надпись здесь
                                0
                                Сегодня столкнулся с очень странной особенностью яндекс.кассы:
                                На рекламных страницах сервиса красиво расписано, как отлично яндекс умеет принимать все виды платежей, в числе которых, конечно же мобильные платежи. Ну т.е. прямым текстом указано, что пользователи смогут платить с баланса своего телефона. Указанаы ограничения, тарифы, даже инструкция для платежей есть.
                                Пройдя не очень короткую процедуру регистрации в системе как ИП, параллельно написав обработку платежей, наконец-то дошёл до этапа, когда нужно подписать договор. И с удивлением обнаружил, что в договоре не прописаны проценты комиссии именно за мобильные платежи. Сначала я подумал, что возможно это ограничение как-то связанно с тем, что аккаунт новый и такая возможность появится позже. Задав этот вопрос напрямую менеджеру я получил ответ, что данный функционал (оплата с баланса телефона) ещё находится в процессе разработки. Т.е. его ещё как бы нет.
                                Вот такая история. Пока что ищу другие варианты.
                                  0
                                  Привет, оплата с баланса мобильного в Кассе есть и работает — просто её подключение согласовывается отдельно для каждого сайта с операторами (у операторов есть свои требования к площадкам, к минимальному обороту) и обычно занимает гораздо больше времени, чем включение остальных способов. Конечно, это всё должен был менеджер подробно рассказать, ужасно жаль, что произошло такое недопонимание :( Если вопрос ещё актуален, уточните, пожалуйста, номер вашей заявки в Кассе или название юрлица (можно в личку) — попрошу коллег всё подробно объяснить и подключить.
                                  0
                                  Если коротко суть статьи:
                                  Мы допустили три ошибки: «мы опечатались», «мы не заметили», «нам захотелось», но виноваты вы.
                                  Гениально! :)

                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                  Самое читаемое