Иллюстрация: песочные часы на захламлённом столе среди логов и терминалов

Час работы, говорите?

Приходит заказчик. Говорит — задача простая, надо сделать за день. Я оценил, сказал цену, договорились. Классика, в общем-то.

Что оценил клиент

Со стороны задача выглядела так: подключить платёжный шлюз к сайту клиента. Возврат, отмена, всё как у людей. Платёжный плагин уже есть в маркете, бери и делай. Цена — не космическая, но и не «за спасибо». Срок — день.

— Часа на полтора работы, — сказал клиент.

Ну ок, сказал и сказал. Договорились.

Что оказалось в реальности

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

Тестовая среда банка. Окружение принимает платежи от 10, а у меня в каталоге висит тестовый товар за 5. «Вот товар, на нём можно тестировать», — говорю. Банк: «не, давайте 10». Пересоздал товар, пересоздал заказы. Каждое изменение цены — новый заказ, потому что у плагина завязка на amount в URL.

Refund. Платёжный шлюз умеет и refund, и cancel. Оказывается, это две разные истории, и кнопка в админке только refund. Cancel надо добавлять руками. Добавил руками. Дальше — банк потребовал лог, лог оказался больше, чем сам проект. Отправил. Ждём.

Дальше — тестовые карты. Банк считает повторные попытки подозрительными, поэтому каждый новый заказ — это копипаст номера карты, имени, CVV, проверка OTP, и только потом submit. Пятнадцать заказов. Пятнадцать раз.

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

В итоге всё заработало к концу дня. Документация отправилась, банк одобрил, клиент пообещал оплату «в течение двух дней».

Спор о стоимости

Через две недели.

— За что тут такая сумма? Это же час работы, — говорит клиент.

— Час, — говорю, — это если ты уже знаешь, какой именно API у банка, как он отвечает в edge-кейсах, и у тебя под рукой есть рабочая тестовая среда. А когда ты начинаешь с нуля, документируешь на ходу и параллельно гоняешь пятнадцать заказов через копипаст карты — это уже не час. Это марафон, где финиш где-то в тумане.

— Выдумщик и фантазёр, — отвечает клиент.

И добавляет, что оплата теперь будет «после боевой отработки». То есть, после того, как я ещё раз всё это пройду — но уже на боевом сайте, где цена ошибки выше. Спасибо, говорю. Извините, отвечает, что расстроился, нельзя сдавать проекты с постоплатой никому.

И ведь здесь тестировать буду не я. Как раз, если бы я — было бы быстрее. А тестировать будет клиент: непонятно что, неизвестно когда начнёт и когда захочет, и какое у него будет настроение. Потом скажет, что нужны правки. Потом снова тестирование. Потом согласование. И так — хорошо, если получишь оплату к новому году.

Получается, что я клиенту доверился — выполнил работу без оплаты. А он мне не доверяет и будет проверять до китайской пасхи, прежде чем оплатить. Странный баланс.

Урок

Не работай с постоплатой. Или хотя бы разбей на этапы: предоплата, этап, финал. Иначе через две недели твоя «простая задача» превращается в диалог, где тебя называют выдумщиком, а ты объясняешь, что пятнадцать заказов через копипаст тестовой карты — это не «час работы».

Платёжные шлюзы — это всегда марафон. Даже когда со стороны выглядит как «вот тут одну кнопку нажать». Особенно когда выглядит как «одну кнопку».

А если вам говорят «сделай за день, это просто» — спросите сразу: «а постоплата или предоплата?». Потому что от ответа зависит, насколько весело будет через две недели.

  • Пока нет ни одного комментария

Написать комментарий