2013-07-02 7 views
2

Я создаю форму для отправки Authorize.net с использованием DPM. Я считаю, что срок действия кредитной карты должен быть отформатирован как yyyy/dd в одной переменной.authorize.net dpm дата истечения срока действия кредитной карты поле выбора

Я хотел бы использовать два поля в моей форме html: одно раскрывающееся поле выбора для месяца и другое для даты. Как я могу объединить два поля формы html в одну переменную, чтобы она была отправлена ​​Authorize.net как одна правильно отформатированная переменная на submit?

Я подозреваю, что это может быть сделано с помощью javascript, однако он должен работать каждый раз, даже если javascript отключен.

Спасибо за любую помощь или альтернативные предложения.

+0

Я не уверен, что можно изменить принятый ответ, но я бы рекомендовал вам это сделать. – Jason

ответ

-1

Если вы хотите, чтобы он работал без JavaScript, вам понадобится дополнительный шаг для обработки отправки формы, а затем отобразите окончательную информацию для пользователя. Затем они могут отправить его Authnet для использования DPM.

+0

ОК, это имеет смысл. Однако, если я сделаю эту обработку, а затем покажу информацию обратно пользователю для отправки на Authorize.net, должен ли я соответствовать требованиям PCI, чтобы информация о кредитной карте обрабатывалась на моем сервере? – JayK

+1

Как я понимаю, это приведет к поражению точки использования DPM по той причине, которую вы предлагаете. –

6

Вот как я справился с этим.

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

Вы определенно не хотите размещать содержимое формы на исходном сервере, так как это поражает точку использования Direct Post Method.

Вот базовый код с помощью JQuery.

<form id="cart-form" action="..."> 
... 

Expiration Date: 
<div id="exp_date_wrap"> 
    <input name="x_exp_date" type="text" /> (format: mm/yy) 
</div> 

<select name="x_cc_month" id="x_cc_month" style="display:none"> 
    <option value="">-- month --</option> 
    ... 
</select> 

<select name="x_cc_year" id="x_cc_year" style="display:none"> 
    <option value="">-- year --</option> 
    ... 
</select> 

<script> 
    $('#exp_date_wrap').hide(); 
    $('#x_cc_month, #x_cc_year').show(); 

    $('#cart-form').submit(function() { 
    $('#x_exp_date').val(
     $('#x_cc_month :selected').val() + '/' + 
     $('#x_cc_year :selected').val() 
    ); 
    }); 
</script> 

</form> 
+1

Я бы не стал использовать атрибут name в полях x_cc_month и x_cc_year (т. Е. Не дать им имя). Таким образом, они не будут отправлены в точку доступа Authorize.Net DPM. Просто идентификаторов будет достаточно. Если они будут отправлены, то они будут обработаны как настраиваемые поля и будут отправлены обратно на ваш сайт на страницу обратного вызова (ретрансляции), которая возвращает вопросы PCI на передний план. Но в остальном это отличное решение. – Jason