Как стать автором
Обновить

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

Если это RoR, то почему не через ActiveMerchant? Поддержка Qiwi вроде есть в стороннем репозитории (https://github.com/clevertechru/active_merchant), но можно было бы и самому реализовать при необходимости + вклад.
Хм, слышал об ActiveMerchant, но не вспомнил о нем в момент, когда реализовывал у себя платежи Qiwi.
Но все равно спасибо, почитаю еще и об ActiveMerchant и, возможно, в будущем уже буду с ним работать.
Мои глаза вытекли…

Вы не на PHP раньше писали, часом? Почитайте правила хорошего кода для Ruby/Rails проектов, ознакомьтесь с best practices и никогда, слышите, никогда не пишите код до тех пор, пока не поищите подходящий гем в сообществе.

Можете начать вот с этих рекомендаций: robots.thoughtbot.com/sandi-metz-rules-for-developers.

P.S. Prefer interpolation over concatenation, это реально быстрее работает.
P.P.S. Не используйте update_attribute – он не валидирует вставляемые значения. Используйте update_attributes.
P.P.P.S. Ну и да, рокет-хеши уже никто давным-давно не пишет (а, это копипаста, по всей видимости).
Нет. Не на PHP и не копипастил, но за рекомендации спасибо. Я ж не против учиться, да и заинтересован в том, чтобы быть лучше.

PS. Гем пробовал — не пошло дело. (Не уверен, что гем еще рабочий, последний commit 2013 года)
В таком случае, бОльшую пользу сообществу принес бы форк и актуализация гема, на мой взгляд. Куски кода – неюзабельны в руби сообществе, здесь принято всё оформлять в гемы и прятать реализацию в ящик.
Rubocop быстро научит все писать как надо.
Все смешалось: люди, кони…

По хорошему вам нужен code review, чтобыразбить все на отдельные сервис классы хотя бы:

— RestClient вынести в отдельный класс, посмотреть может быть хорошо бы подошел Her.
— STATUSES в модели это или state machine или хотя бы enum
— create_bill станет намного короче, если все эти валидации, создание платежей раскидаются по логическим классам, а не такая портянка
— константы лучше в ENV закинуть
— Код в духе
   flash[:error] = 'Невалидные данные'
      redirect_to action: :pay
      return

можо в одну строку написать
   return redirect_to action: :pay, error: t('.invalid_data')
Спасибо огромное за рекомендации :) Мне этого не хватало
Coding Style Ruby — нашел! Делюсь, может кому будет интересно. Есть русская версия.

GitHub Coding Style RU
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации