2013-04-23 6 views
0

Вот ситуация. У моей компании есть магазин электронной коммерции, но мы сами не собираем и не обрабатываем информацию о кредитной карте. Когда пользователь выбирает «Оплатить кредитной картой», они сразу же отправляются на сайт оплаты, а затем этот сайт обрабатывает свою кредитную карту и отправляет нам статус, чтобы заказ мог быть отмечен как заплаченный. Наш сайт работает на ColdFusion, и он получает данные с сайта как данные формы, обрабатывает переменные формы и создает заказ для клиента, помеченный как оплаченный. Сайт кредитной карты отправляет информацию только один раз, и нет «рукопожатия».Возможна регистрация формы регистрации?

За последние полтора месяца у нас возникла проблема, когда изредка мы не получаем информацию с сайта обработки кредитных карт, хотя они говорят, что отправили его. Следовательно, заказы не создаются, а продукты сидят в тележках клиентов, даже если кредитная карта была снята. Эта проблема прерывистая. Мы не можем привязать его к любым изменениям сервера на нашей стороне, а сайт кредитной карты отрицает изменения на их стороне.

Таким образом, среди вещей, которые мы пытаемся сделать, является регистрация, когда клиенты на самом деле пытаются оплатить с помощью кредитной карты (чтобы мы могли легче поймать пропущенных). Поэтому я хочу как-то зарегистрировать событие, когда кто-то нажимает «Оплатить кредитной картой». Проблема заключается в том, что действие формы передает данные на сайт кредитной карты. Единственный способ, которым я могу это сделать, - изменить действие формы на страницу на нашем сайте, зарегистрировать попытку платежа и затем отправить форму снова компании кредитной карты. Я знаю, что могу автоматически отправлять форму с помощью JavaScript, но это похоже на плохое решение (что, если JS отключен?), Но не знаю, как можно было бы сделать серверную сторону.

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

Лучшие решения о том, как зарегистрировать это событие или предложения в целом для этого беспорядка, будут очень благодарны!


Ответы на комментарии:

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

To flup: Будете ли использовать код статуса 301 или 302 сохранять данные формы? Я пробовал посмотреть на это, и похоже, что он работает с «get», но мне нужно, чтобы он был отправлен с сообщением «post», поскольку это то, что ожидает платежный шлюз.

К imthepitts: Мы получаем его как данные формы.

To Revent: Проблема заключается в том, что заказы вообще не создаются (поэтому информация о клиенте и заказе просто находится во временных таблицах корзины/клиента/заказа). Кажется, что страница, которая должна обрабатывать данные формы с платежного шлюза, недоступна. Я добавил некоторые записи на эту страницу, но моя компания так испугалась, что они отключили платежи по кредитным картам, и поэтому я не получаю никаких данных. Если я смогу убедить их в том, что я внедрил хорошее решение для регистрации, чтобы быстро определить буксируемые заказы, они вернут его обратно.

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

To Nenotlep: Я знаю, что я сказал AJAX, но я хотел бы больше узнать о вашей идее. Может ли вызов страницы регистрации вмешиваться в отправку формы? Я предполагаю, что он будет настроен так, что функция будет запускаться в событии «onclick» для кнопки формы, а затем форма представления будет действовать как обычно? Если это легко настроить, возможно, это будет хороший способ сделать это.

Я думаю о попытке решения Санджива, поскольку это похоже на то, что я планировал делать в любом случае, но я действительно хотел бы услышать больше о идее AJAX, если это действительно так просто, главным образом потому, t изменить опыт работы с клиентами вообще (в отличие от просмотра экрана перенаправления).

Дополнительный ответ Стиву:

Я ценю ваш вклад, и обычно я люблю преподавать себе новые вещи, но я просто слишком перегружен прямо сейчас, чтобы даже думать о решении новой технологии.

+1

Я собирался предложить простой регистратор AJAX, но хорошо. Это очень простая вещь для создания; при простейшем запросе GET на URL-адрес, который имеет один параметр, например «site.fi/log?msg=UserFoobarSentPostThing» и серверы просто прямо, заставляя сообщение в вашу систему ведения журнала. Хорошо, что некоторые примитивные фильтрации данных могут быть полезны только в случае вредоносных запросов, но на самом деле очень просто построить что-то вроде этого, даже если это AJAX :) – Nenotlep

+2

На вашем сайте обработки кредитных карт должен быть журнал транзакций, уже , Если нет, я бы настоятельно предложил вам найти лучшего поставщика. –

+0

Возможно, у вас может быть кнопка «платить с помощью кредитной карты» на URL-адрес вашего собственного сайта, регистрироваться при попадании в нее, а затем отправить [HTTP 301 или 302] (http://en.wikipedia.org/wiki/HTTP_302), чтобы перенаправить браузер на фактический сайт кредитной карты. См. Http://stackoverflow.com/questions/2503300/how-do-you-redirect-in-coldfusion-and-control-the-status-code-ie-301- instead – flup

ответ

4

Я работаю на платежном шлюзе и имею ту же проблему, что и ваша. Это было мое решение -

  1. Опубликовать значения на промежуточной странице, называемой «requestHandler.cfm».

  2. requestHandler.cfm сохраняет значения в таблице базы данных.

  3. Продолжить создание формы < > со всеми необходимыми значениями как < введено скрыто >. Поместите кнопку «Отправить», а также JavaScript, чтобы запустить «отправить» через 2 секунды. Также отметьте, что «Если страница не обновляется через какое-то время, нажмите кнопку« Отправить »». Поскольку вы не собираетесь делать какие-либо проверки в форме, кнопка «отправить» просто отправит форму с активным JavaScript или без него.
  4. Компания Creditcard будет обрабатывать информацию и отвечать на нее со значениями на странице «responseHandler.cfm».
  5. Я буду обновлять свои данные на основе «первичного значения ключа», отправленного им. (Или просто любые ссылки, которые могут идентифицировать пользователя)

базы данных пример таблицы

DatabaseDesign

  • TransactionID будет «0» по умолчанию, и изменится число заданное кредитная карточка
  • Платный флаг, который по умолчанию «N», должен быть изменен на «Y»
  • Фактическая сумма - это то, что Я отправил для оплаты с кредитной карты пользователя.
  • Платная сумма должна соответствовать фактической сумме. Это поможет мне найти, если детали подделываются в любом случае пользователем или средним человеком.
+0

2 секунды кажется длиннее, чем необходимо. –

+1

Перенаправление запроса с использованием кода состояния 302 является способом HTTP для этого. Вам не нужен javascript. – flup

+0

Спасибо! Это похоже на то, о чем я думал, но мне нравится добавление примечания, чтобы сообщить пользователю нажать «отправить», если они не перенаправлены сразу. – bansheekitty

0

Рукопожатие:

Когда пользователь попадает на сайт платежной, вы должны включать в себя уникальный идентификатор distingush порядок, например, OrderID. У вашего поставщика платежей должны быть какие-то пользовательские поля для вашего собственного использования. Затем, когда пользователь будет возвращен на ваш сайт, данные ответа сайта оплаты должны включать идентификатор OrderID.Таким образом, вы можете сопоставить их. Другими словами, происходит «рукопожатие».

перемежающаяся успешная оплата:

На слушателе, страница, на которую возвращается платеж провайдер данные форм, вы должны осуществлять журнал для записи, откуда она называется страница и какие данные передаются.

«... должен изменить действие формы на страницу на нашем сайте, зарегистрировать попытку платежа, а затем отправить форму еще раз в компанию кредитных карт». Это приемлемое решение.

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