Загрузка данных
 
Логин:   Пароль:      
Регистрация   Забыли пароль?

15 горячих:

Публикации с меткой «eCommerce»

andriyУра, обновление ImageCMS до версии 2.5.0

imagecms shop 2.5.0Представляю Вашему вниманию новую версию ImageCMS 2.5.0.

Изменения коснулись как ядра системы, так и модулей ImageCMS и ImageCMS Shop.

Во-первых: система полностью переведена на новую версию CodeIgniter 2.0.

По ImageCMS сделаны следующие разработки:
- Сделана возможность для Галереи загружать все изображения одним архивом.
- Сделана возможность изменить дату добавления для статьи.
- Сделан виджет для выбора языков на фронте.
- Сделана возможность для дополнительного поля textarea добавлять редактор tinymce.
- Сделана возможность присваивать дополнительные поля для категории root
- Сделана возможность удалить всю папку кеша.
- Исправлена ошибка с переключением фотографий, когда указан идентификатор языка.
- Исправленя ошибка с переводом меню.
- Сделана возможность переносить альбомы фотогалереи из категории в категорию.
- Исправлена ошибка с отображением альбомов категории в фотогалереи в админпанели.
- Исправлена ошибка при создании меню на «категорию».
- Исправлена критическая ошибка, которая возникала при переключении языка.
- Исправлен баз в админчасти при редактировании профиля пользователя.

По ImageCMS Shop сделаны следующие разработки:
- Сделана возможность создавать и присваивать склады для продуктов.
- Исправлена ошибка с отображением Title на странице отображения товара.
- Сделана возможность присваивать скидки для зарегистрированных пользователей.
- Сделана возможность в поле количество в корзине вводить данные вручную, а не методом селекта.
- Сделана возможность изменить дату создания товара.
- Сделана возможность добавлять товары в корзину через ajax.
- Сделана возможность в настройках указать количество символов после комы для цены.
- Сделана возможность категории делать неактивными.
- Сделана возможность просматривать коменты к товарам со страницы администрирования магазином.
- Сделана возможность при создании свойства выбрать «не показывать на странице товара».
- Исправлена ошибка — в админке в списке валют на активной валюте нет альта.
- Исправлена ошибка с поиском по цене, когда выбрана не дефолтная валюта.
- Исправлен ряд ошибок связанных с выбором способа доставки.
- Сделана возможность просматривать заказы в режиме зарегистрированного пользователя.

За помощь в поиске, исправлении багов, предоставлении идей для модулей благодарим активных пользователей и партнеров системы.

Скачать новую версию можно по ссылке: www.imagecms.net/download

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

Все замечания принимаются во внимание.
andriy 28 апреля 2011 16:17 комментариев: 1401
:) 1 :(

taptakauthorize.net — подключение и работа

Довелось мне делать интернет магазин, в котором оплату нужно было проводить кредитными картами. И всё не беда, если бы заказчика устроил PayPal .Точнее тогда я об этом ещё не знал. Заказчик имел мерчант-аккаунт на authorize.net. В ходе поисков нормальной системы оплаты авторайз был мною отброшен по причине убогости сайта. Сайт оставляет ощущение, что проект давно заброшен, и никто им не занимается. Ну да ладно. Клиент всегда прав. Итак.

Что делает в первую очередь разработчик столкнувшись с задачей стандартной, но доселе им не реализованной? Правильно! Идёт в интернет и ищет готовые решения. Не исключено что это я плохой пользователь Гугла. Но, тем не менее — все готовые реализации были не более чем копиями sample кода взятого на сайте конторы. Ни тебе комментариев в коде, ни тебе сопроводительной записки.

Следующий шаг: курениечтение мануала на сайте разработчика. Единственное что помог сделать мануал — понять, что на самом деле лишнее в сэмпл коде. Далее я предлагаю свои советы по работе с данным сервисом. Это частично и перевод руководства, и личный опыт.


Для работы нужен либо merchant аккаунт, либо тест. Получить тестовый можно на сайте авторайз.нет

Следует отметить, что приходят эти данные в двух экземплярах: Card Not Present и Card Present. Первый это вариант когда продавец не получает в руки карточку для проверки введённых данных пользователем. Второй — наоборот. Нас интересует первый.

Есть несколько вариантов интеграции сервиса к себе на сайт.

1) Advanced Integration Method (AIM). Позволяет держать у себя форму, заполняемую покупателем и отправлять данные по SSL на сервер провайдера услуги (в нашем случае — Authorize.net)

2) Server Integration Method (SIM). Практически то-же самое только вам предоставят ещё и html форму.

Как выбрать API?

шаг 1: выбор типа работы. У нас это Card Not Present.

шаг 2: есть ли на вашем хосте SSL? если есть — можно использовать AIM, если нет — нужно использовать SIM.

шаг 3: нужно ли вам что бы форма указывала на ваш домен? если да — нужно использовать AIM, если нет — можно SIM

шаг 4: нужно ли запоминать сессию пользователя в процессе оплаты. Да — только AIM, нет — можно SIM

В моём случае походил только вариант AIM. Поэтому о нём и поговорим. К слову сказать — SIM практически ни чем не отличается.
1) Массив параметров для проведения транзакции.

Что нам нужно? Merchant или test аккаунт.

$auth_net_login_id и $autn_net_tran_key — логин и ключ транзакции.

приходят они на почту в таком виде:
API Login: 6zz6m5N4Et
Transaction Key: 9V9wUv6Yd92t27t5
это тестовый аккаунт, так что не нужно сразу потирать ручки
<code class="php">$authnet_values = array
(
“x_login” => $auth_net_login_id,
“x_version” => “3.1″,
“x_delim_char” => “|”,
“x_delim_data” => “TRUE”,
“x_url” => “FALSE”,
“x_type” => “AUTH_CAPTURE”,
“x_method” => “CC”,
“x_tran_key” => $auth_net_tran_key,
“x_relay_response” => “FALSE”,
“x_card_num” => “4242424242424242″,
“x_exp_date” => “1209″,
“x_description” => “Recycled Toner Cartridges”,
“x_amount” => “12.23″,
“x_first_name” => “Charles D.”,
“x_last_name” => “Gaulle”,
“x_address” => “342 N. Main Street #150″,
“x_city” => “Ft. Worth”,
“x_state” => “TX”,
“x_zip” => “12345″,
“CustomerBirthMonth” => “Customer Birth Month: 12″,
“CustomerBirthDay” => “Customer Birth Day: 1″,
“CustomerBirthYear” => “Customer Birth Year: 1959″,
“SpecialCode” => “Promotion: Spring Sale”,
);</code>


Этот массив взят из семпл кода. Давайте разберёмся, что же это всё значит и нужно ли оно нам на самом деле.

Обязательные параметры:

x_login — API Login ID.

x_tran_key — Transaction Key

x_type — тип транзакции.

Типы транзакций:

AUTH_CAPTURE — авторизация и оплата. Всё в одном флаконе. Проверка карточки и если всё хорошо — проводим сразу и оплату.

AUTH_ONLY — только авторизация. Проверка карты на валидность. Из ответа нужно сохранить Transaction ID

PRIOR_AUTH_CAPTURE — завершает транзакцию, которая успешно прошла авторизацию. Для этого и нужен Transaction ID. Требования: оригинальная транзакция была проведена не позднее 30 дней; получен валидный tansaction Id; оригинальная транзакция не проведена, не истекла, не было ошибки: сумма меньше или равна сумме из оригинальной транзакции. Оригинальная транзакция — проведённая методом AUTH_ONLY, в результате чего был получен Transaction ID.

CAPTURE_ONLY — завершает транзакцию, которая не была послана на шлюз или требует голосового подтверждения. По сути — ручное подтверждение в merchant интерфейсе. То есть продавец должен вручную на сайте авторайза подтвердить эту транзакцию. Добавляется обязательный параметр:

x_auth_code=Authorization Code

CREDIT — используется для возврата уже проведённой транзакции. Дополнительные параметры:

x_trans_id=Transaction ID
x_card_num=полный номер карты или последние 4 цифры
Требования: транзакция была успешно проведена и был получен Transaction ID; сумма для возврата меньше или равна оплаченной сумме; если возврат делался частями — сумма меньше или равна оплаченной; возврат проводится не позднее 120 дней.

VOID — для отмены отправленной транзакции, что бы избежать её обработки. Дополнительный параметр: x_trans_id=Transaction ID


x_amount — сумма перевода с двумя знаками после точки. Например: 8.95 или 10.00. Длина до 15 символов.

x_card_num — от 13 до 16 цифр — номер карты без пробелов. Если x_type=CREDIT — только последние 4 цифры.

x_exp_date — дата истечения карты. Форматы: MMYY, MM/YY, MM-YY, MMYYYY, MM/YYYY, MM-YYYY

x_trans_id — transaction ID. Нужен только если x_type=CREDIT, PRIOR_AUTH_CAPTURE, или VOID

x_auth_code — 6 символов. Код авторизации оригинальной транзакции не проведённой на шлюзе. Нужен только если x_type=CAPTURE_ONLY

Остальные парметры в принципе понятны и так. О них при желании можно почитать в руководстве.

Опишу только приведённые в примере.

x_version — опционально но очень рекоммендовано. Версия транзакции покупателя. Формат: 3.1 Версия указывает на список полей, которые продавец получит в ответе сервера.

x_delim_char — опционально. Символ которым будут разделятся данные в строке ответа.

x_delim_data — требуется для AIM транзакций. Указывается для получени разграниченного ответа.

x_url — в руководстве не описан. Но насколько я понял — это урл на который будет сделан редирект покупателя просле проведения транзакции.

x_method — опционально. Метод оплаты: CC(credit card) или ECHECK(electronic check). Формат: CC, ECHECK.

x_relay_response — в руководстве не описан. Оо

x_description — опционально. Описание транзакции. До 255 символов.

x_first_name, x_last_name, x_address, x_city, x_state, x_zip, CustomerBirthMonth, CustomerBirthDay, CustomerBirthYear — данные покупателя. Опционально.

SpecialCode — в руководстве не описан.
2) Подготовка данных к отправке.
<code class="php">fields = “”;
foreach( $authnet_values as $key => $value ) $fields .= “$key=” . urlencode( $value ) . “&”;</code>


3) Отправка данных

<code class="php">$ch = curl_init(”https://test.authorize.net/gateway/trans…”);
//верхняя строка для тест аккаунтов, нижняя для merchant
// $ch = curl_init(”https://secure.authorize.net/gateway/tra…”);
curl_setopt($ch, CURLOPT_HEADER, 0); // установить на 0 что бы убрать header info из ответа
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // возвращает ответ если 1
curl_setopt($ch, CURLOPT_POSTFIELDS, rtrim( $fields, “& ” )); // использование HTTP POST to для отправки данных
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // раскомментировать, если не получаете вообще никакого ответа от сервера.
$resp = curl_exec($ch); //execute post and get results
curl_close ($ch);</code>



4) В сэмпл коде сделан вывод всех параметров приходящих в ответе сервера. Я сократил этот код для вывода нужных данных.

<code class="php"> for($j=1; $j <= $h; $j++){
$p = strpos($text, “|”);
$p++;
$pstr = substr($text, 0, $p);

//подготавливает текст и возвращает пары имя->значение
$pstr_trimmed = substr($pstr, 0, -1); // удаляет “|” в конце строки.

if($pstr_trimmed==”"){
$pstr_trimmed=”NO VALUE RETURNED”;
}

if ($j == 1) {
$fval=”";
if($pstr_trimmed==”1″){
$fval=”Approved”;
}elseif($pstr_trimmed==”2″){
$fval=”Declined”;
}elseif($pstr_trimmed==”3″){
$fval=”Error”;
}
}elseif ($j == 7){
// transaction ID
$trans_id = $pstr_trimmed;
}
// убрать часть, которую уже определили, и работать с оставшейся строкой.
$text = substr($text, $p);
}
</code>


Вот собственно и всё. Это так сказать минимум необходимый для проведения успешной транзакции. Надеюсь эта статья кому-то пригодится
taptak 25 августа 2009 17:54 комментариев: 1
:) 1,01 :(
© 2008 | О сайте | Инструкции | Обратная связь
© Powered by BigStreet

Работа с БД:
 Время - 2.7858
 Запросов - 5
Работа с кэшем:
 Время - 0.0022
 Записей - 1
 Прочтений - 5
Общее время:
 2.8234

sych