Форма регистрации с помощью Брейнтри Прозрачное Перенаправление

Я думаю, что Вы даже не должны скорее ловить все Исключение, но лучше позволять им быть показанными пользователю. Причина этого состоит в том, что необходимо только поймать Исключения, которые можно на самом деле обработать. Если Вы сталкиваетесь с некоторым Исключением, которое заставляет программу останавливаться, но все еще поймать его, это могло бы вызвать намного более серьезные проблемы. Также читайте FAQ: Почему FxCop предостерегает от выгоды (Исключение)? .

7
задан Robin Fisher 21 November 2009 в 18:40
поделиться

2 ответа

Я собираюсь использовать прозрачную переадресацию Braintree в своем проекте, и, подумав об этом сам, я думаю, что лучший вариант - разбить форму на две страницы. Форма на первой странице отправляется в ваше приложение и включает имя учетной записи, имя пользователя и т. Д. Форма на второй странице представляет собой только платежную информацию и отправляется в Braintree.

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

Итак, две страницы кажутся мне самым чистым способом сделать это. Я не смотрел на процесс, который использует 37signals - я предполагаю, что они используют Javascript для перехвата отправки формы, а затем отправляют информацию учетной записи в свое приложение для проверки и сохранения. Если это не так, отображается сообщение об ошибке. Если это так, они позволяют Брейнтри отправить форму. Это позволило бы им сохранить форму регистрации на одной странице, но мне кажется, что это будет беспорядочно. Однако вы можете посмотреть на их сайт javascript и увидеть, что вы видите.

Edit - Да, похоже, что они так и делают. Они используют Prototype, с которым я плохо знаком, но вы можете увидеть их код внизу этого файла . Это не

0
ответ дан 6 December 2019 в 14:05
поделиться

Хорошо, вот что произойдет, если отключить JavaScript. Похоже, BaseCamp решил отправить кредитную карту через AJAX, но также обрабатывает ситуацию, когда JavaScript отключен и им передается вся форма, включая поля, не являющиеся платёжными.

Спасибо Fiddler и BaseCamp .

  • Пользователь заполняет форму, содержащую как платежные данные, так и все, что вы можете пожелать в HTML-форме для регистрации, доставки, корзины покупок и т. Д.

  • Форма отправляется на https://secure.braintreepaymentgateway.com /api/transact.php

  • BrainTree творит чудеса, добавляет кредитную карту в хранилище и возвращает всю информацию на вашу страницу. it

Он делает это, фактически вызывая URL-адрес, который вы должны затем обрабатывать, как бы вы его ни обрабатывали.

https://signup.37signals.com/basecamp/plus/signup?transparent_redirect_complete=1
&signup[page]=
&signup[source]=basecamphq.com
&signup[data][first_name]=FRED
&signup[data][last_name]=FLINTSTONE
&signup[data][email_address]=FRED@BEDROCK.COM
&signup[data][name]=FRED
&signup[data][time_zone_id]=Eastern%20Time%20%28US%20%26%20Canada%29
&signup[data][identity_url]=
&signup[data][user_name]=BAMBAM
&signup[data][password]=pebbles123
&signup[data][confirm_password]=pebbles123
&signup[data][subdomain]=bedrock.com
&signup[referrer_code]=
&signup[coupon_code]=
&signup[accepts_eula]=1
&response=1
&responsetext=Customer+Added
&authcode=
&transactionid=
&avsresponse=
&cvvresponse=
&orderid=
&type=
&response_code=100
&customer_vault_id=1253608313
&username=865251
&time=20091129014038
&amount=
&hash=63209ad25560f9a961525d65b63e31be

Предположительно, код ответа 100 означает «

10
ответ дан 6 December 2019 в 14:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: