2016-12-09 3 views
0

Я надеюсь, что кто-то там может мне помочь понять, как нашивки должны работать с CakePHP 3.CakePHP 3 Stripe форма оплаты

У меня есть форма с Stripe платежных полей и несколько полей для моего торта приложения. Из документации Stripe это, кажется, приемлемый способ ее настройки.

HTML, является довольно стандартным, но обратите внимание, как каждый вход для чувствительной данных-номер, CVC, истечения срока действия, и почтовый индекс-опускает имя атрибут. Опуская имя, данные, предоставленные пользователем в этих полях , не будут переданы на ваш сервер при отправке формы. Каждый элемент также включает атрибут полосы данных, который будет рассмотрен ниже.

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

Мой главный вопрос: действительно ли это важно, если вы не используете вспомогательный элемент формы для полей Stripe. Основное преимущество, которое я могу найти в документах торта, заключается в том, что компонент CSRF будет действовать в этих полях. Я использую компонент CSRF во всем приложении, но поскольку поля Stripe даже не отправляются на сервер, компонент CSRF не имеет значения. Не так ли?

Вот выдержка из руководства CakePHP:

CsrfComponent работает путем установки куки в браузер пользователя. Когда формы создаются с помощью Cake \ View \ Helper \ FormHelper, добавляется скрытое поле , содержащее токен CSRF. Во время события Controller.startup, если запрос является POST, PUT, DELETE, PATCH , попросите компонент сравнить данные запроса & значение cookie. Если отсутствует или два значения не совпадают, компонент будет вызывать aCake \ Network \ Exception \ InvalidCsrfTokenException.

Я все еще могу использовать хелпер формы для нескольких полей, которые передаются в базу данных, и просто добавлять поля Stripe с HTML?

Это имеет смысл?

Поддержка полосы позволяет предположить наличие двух отдельных форм: одного для данных торта и одного для данных Stripe, но поскольку их документы говорят, что вы можете добавлять поля Stripe в форму, которая отправляется на сервер, что кажется немного нечетным ,

Я бы очень признателен за ввод данных, поскольку кажется, что даже сама полоса не уверена, как структурировать форму оплаты cakephp!

+0

Что делать, если вы присвоили атрибуту name 'false' или' null' ?? В крайнем случае, используйте свой собственный помощник или не используйте помощники вообще, напишите форму вручную. – Antoniossss

+0

Определенно не включайте атрибут 'name', если вы можете его избежать. Это просто не безопасно. Невозможно ли построить форму в CakePHP без использования помощников формы? Можете ли вы не просто создать его из raw-HTML? – korben

ответ

0

Да, необработанный HTML-код - это путь.

Вот что я сделал.

Используется вид помощника, чтобы начать и закончить форму (Это означает, что форма фальсификации и CSRF будет работать для ваших полей, не являющихся Stripe)

Добавлены поля нашивки внутри формы Cake с помощью HTML (я не тестировал HTML-поля, чтобы проверить, работает ли на них фальсификация формы. Я проведу это позже и отправлю обратно)

Использовал вспомогательный элемент формы, чтобы разблокировать поле stripeToken, чтобы его можно было добавить в форму без формы, подделывающей запрос ,

Как только я все это установил, я использовал отладчик echo debug ($ _ POST) в своем контроллере, чтобы увидеть, какая форма была отправлена ​​на сервер, и только поле Stripe, которое показывалось, было stripeToken.

Так что мне кажется, что это работает так, как должно.

Смежные вопросы