Форма оплаты Cakephp 3 Stripe

Я надеюсь, что кто-то там может помочь мне понять, как Stripe должен работать с Cakephp 3.

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

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

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

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

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

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

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

Имеет ли это смысл?

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

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


person Simon Bradley    schedule 09.12.2016    source источник
comment
что, если вы установите атрибут name в false или null ?? В крайнем случае используйте своего индивидуального помощника или вообще не используйте помощников, напишите форму вручную   -  person Antoniossss    schedule 09.12.2016
comment
Определенно не включайте name-атрибут, если вы можете этого избежать. Это просто небезопасно. Нет ли способа создать форму в CakePHP без использования помощников форм? Разве вы не можете просто создать его из необработанного HTML?   -  person korben    schedule 10.12.2016


Ответы (1)


Да, необработанный HTML, похоже, лучший вариант.

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

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

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

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

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

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

person Simon Bradley    schedule 12.12.2016