Перейти к содержимому


Модуль оплаты Единая касса


  • Вы не можете ответить в тему
Сообщений в теме: 102

#1 vsupport

    Продвинутый пользователь

  • Администраторы
  • 758 сообщений
Репутация: 31
Ассистент

Отправлено 27 March 2011 - 06:51 PM

Шаг 1. Загрузка модуля оплаты на сервер


1. Скопируйте файл w1.php на сайт в папку с модулями ShopCMS (путь указан от корня скрипта): core/modules/payment.

2. Откройте для редактирования файл: core/functions/setting_functions.php.

В конце файла найдите строку:
?>

и вставьте перед ней следующий код:
function setting_HASH_METOD_SELECT($_SettingID){
  $Options = array(array('title'=>ADMIN_NOT_DEFINED, 'value'=>0,));
  $Currencies = currGetAllCurrencies();
  $Options = array(
	array(
	  'title' => 'MD5',
	  'value' => 2
	  ),
	array(
	  'title' => 'SHA1',
	  'value' => 3
	)
  );
  return setting_SELECT_BOX($Options, $_SettingID);
}
function setting_WMI_CURRENCY_SELECT($_SettingID){
  $Options = array(array('title'=>ADMIN_NOT_DEFINED, 'value'=>0,));
  $Currencies = currGetAllCurrencies();
  $Options = array(
	array(
	'title' => 'Российские рубли',
	'value' => 643
	),
	array(
	  'title' => 'Украинские гривны',
	  'value' => 980
	),
	array(
	  'title' => 'Американские доллары',
	  'value' => 840
	),
	array(
	  'title' => 'Евро',
	  'value' => 978
	)
  );
  return setting_SELECT_BOX($Options, $_SettingID);
}

Сохраните измененный файл.

3. Откройте для редактирования файл: core/includes/helper.php.

В конце файла найдите строку:
?>
и вставьте перед ней следующий программный код:
// Helper for W1
// Result Url - index.php?w1=yes (POST method)
if(isset($_REQUEST["w1"])){
  $result = '';
  // Проверка наличия необходимых параметров в POST-запросе
  if (!isset($_POST["WMI_SIGNATURE"]))
	$result = 'WMI_RESULT=Retry&WMI_DESCRIPTION=Отсутствует электронная подпись платежа';
  if (!isset($_POST["WMI_PAYMENT_NO"]))
	$result = 'WMI_RESULT=Retry&WMI_DESCRIPTION=Отсутствует идентификатор заказа';
  if (!isset($_POST["WMI_ORDER_STATE"]))
	$result = 'WMI_RESULT=Retry&WMI_DESCRIPTION=Отсутствует состояние оплаты заказа';
  if ($result == ''){
	$orderID = (int) $_REQUEST["WMI_PAYMENT_NO"];
	$q = db_query("select paymethod from ".ORDERS_TABLE." where orderID=".$orderID);
	$order = db_fetch_row($q);
	if ($order){
	  $paymentMethod = payGetPaymentMethodById($order["paymethod"]);
	  $currentPaymentModule = modGetModuleObj($paymentMethod["module_id"], PAYMENT_MODULE);
	  if ($currentPaymentModule != null){
		$result = $currentPaymentModule->after_payment_php($orderID, $_REQUEST);
	  } else {
		$result = 'WMI_RESULT=Retry&WMI_DESCRIPTION=Магазин не может обработать платеж из-за повреждения модуля оплаты "Единый кошелек"';
	  }
	} else {
	  $result = 'WMI_RESULT=Retry&WMI_DESCRIPTION=Заказ #'.$orderID.' не найден в базе магазина';
	}
  }
  if ($result != '') die($result);
}

Сохраните измененный файл.

4. Откройте для редактирования файл: core/includes/transaction_result.php.

Найдите строку:
if(isset($_REQUEST["LMI_PAYMENT_NO"])) $orderID = (int)$_REQUEST["LMI_PAYMENT_NO"];

После нее вставьте строку:
if(isset($_REQUEST["WMI_PAYMENT_NO"])) $orderID = (int)$_REQUEST["WMI_PAYMENT_NO"];

Сохраните полученные изменения.

Шаг 2. Установка и настройка модуля в панеле администратора ShopCMS

1. Откройте панель администратора ShopCMS и зайдите в раздел «Модули оплаты». Для модуля «Единая касса» нажмите по ссылке «Инсталлировать».
Изображение

2. В списке установленных модулей появится «Единая касса». Для изменения настроек нажмите «Редактировать».
Изображение

3. Следуя подсказкам, укажите значения настроек модуля.
Изображение

Параметры «Секретный ключ» и «Тип цифровой подписи» должны соответствовать настройкам из личного кабинета. После редактирования настроек, сохраните изменения.

4. Далее необходимо разрешить оплату через модуль «Единая касса». Перейдите в раздел «Варианты оплаты».

5. Создайте нужный вариант оплаты и выберете для него модуль «Единая касса».
Изображение

Сохраните изменения. Теперь покупатели смогут оплачивать заказы из Единого кошелька.

Шаг 3. Размещение рекламных материалов на сайте

1. Для размещения рекламных и информационных материалов о «Едином кошельке» создайте и включите новый блок на сайте. Для этого перейдите в раздел «Управление блоками».
Изображение

2. Нажмите ссылку «Добавить блок».
Изображение

3. Заполните данные по блоку.
Изображение

4. В поле «Содержимое блока» вставьте рекламные материалы «Единой кассы». Для генерации кода содержимого блока можно использовать конструктор информера.
Изображение

5. Сохраните новый блок и убедитесь в том, что он включен и появился на сайте.
Изображение

Результат может выглядеть так:
Изображение

Вы можете создать неограниченное число блоков с разными материалами и разным размещением и отображением и настроить их так, как Вам удобно.

Прикрепленный файл  ek.zip   3.39К   23 Количество загрузок:
  • 0

#2 vsupport

    Продвинутый пользователь

  • Администраторы
  • 758 сообщений
Репутация: 31
Ассистент

Отправлено 15 August 2011 - 10:10 AM

Видео урок по установки данного модуля

  • 0

#3 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 17 September 2011 - 10:23 PM

вопрос, работает отлично со всеми браузерами кроме IE, выдает "Неверное значение ЭЦП для переданного заказа", у меня одного так, или у всех?
  • 0
Изображение Изображение Изображение

#4 vsupport

    Продвинутый пользователь

  • Администраторы
  • 758 сообщений
Репутация: 31
Ассистент

Отправлено 03 October 2011 - 03:05 PM

вопрос, работает отлично со всеми браузерами кроме IE, выдает "Неверное значение ЭЦП для переданного заказа", у меня одного так, или у всех?

У меня работает отлично!
  • 0

#5 boyyy7

    Новичок

  • Пользователи
  • Pip
  • 7 сообщений
Репутация: -1
Начинающий

Отправлено 22 November 2011 - 09:52 PM

Ребят подскажите! Почему у меня в helper.php разные сиволы, а не нормальный код?
  • 0

#6 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 28 November 2011 - 08:44 PM

У меня работает отлично!

а можно пример сюда или в ЛС, где реально работает модуль при попытке оплаты из IE
  • 0
Изображение Изображение Изображение

#7 Go_Blin

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 44 сообщений
Репутация: 0
Начинающий

Отправлено 07 January 2012 - 11:55 PM

Согласен. В Хроме работает, а в IE нет. отправил запрос в w1 может подскажут
  • 0

#8 Go_Blin

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 44 сообщений
Репутация: 0
Начинающий

Отправлено 12 January 2012 - 11:39 AM

Апдэйт

Прикрепленный файл  ShopCMS.zip   3.66К   9 Количество загрузок:
Вот апдэйт для единой кассы, чтобы работало под IE
  • 0

#9 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 12 January 2012 - 03:27 PM

кто то уже ставил,

список отличий:
1)добавлено

'settings_html_function' => 'setting_CHECK_BOX(',
'sort_order' => 1,
);
$this->SettingsFields['CONF_PAYMENTMODULE_WMI_PTENABLED_MCOMMERCE'] = array(
'settings_value' => '1',
'settings_title' => 'Оплата с баланса мобильного телефона',
'settings_description' => 'Разрешить оплату заказа через сотовых операторов',

$fields1{"QiwiWalletRUB"} = 1;

$fields{"WMI_PTENABLED"} = 1;
}

if($this->_getSettingValue('CONF_PAYMENTMODULE_WMI_PTENABLED_MCOMMERCE')){
$fields1{"BeelineRUB"} = 1;
$fields1{"MtsRUB"} = 1;
$fields1{"MegafonRUB"} = 1;


$fields1{"BankTransferRUB"} = 1;
$fields1{"BankTransferUAH"} = 1;
$fields1{"BankTransferUSD"} = 1;
$fields1{"BankTransferZAR"} = 1;
$fields1{"BankTransferKZT"} = 1;
$fields1{"CreditCardRUB"} = 1;


$fields1{"AnelikRUB"} = 1;
$fields1{"LiderRUB"} = 1;

2)изменено

str_replace("[orderID]",$orderID,$this->_getSettingValue('CONF_PAYMENTMODULE_WMI_DESCRIPTION'));" на
BASE64:".base64_encode(str_replace("[orderID]",$orderID,$this->_getSettingValue('CONF_PAYMENTMODULE_WMI_DESCRIPTION')));

картами', на
картами и безналичными переводами',

поставил, потестил, вобщем все работает, лови +
(у меня единственное проблема с кодировкой при описании "Оплата заказа #22", вот слова "Оплата заказа выводятся в неправильной кодировке, но скорее всего это моя проблема а не общая")
  • 0
Изображение Изображение Изображение

#10 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 26 January 2012 - 02:28 AM

еще один отловленный глюк, доступных вариантов оплаты больше чем чекбоксов в настройке модуля, поэтому иногда валит ошибки в лог, чтобы исправить достаточно добавить
одну строчку "CONF_PAYMENTMODULE_WMI_PTENABLED_MCOMMERCE", в первый блок, чтобы получилось вот так

class CWMI extends PaymentModule {

function _initVars(){

$this->title = "Единая касса";
$this->description = "Модуль работает в режиме автоматической оплаты. Этот модуль можно использовать для автоматической продажи цифровых товаров. Настройки:
Адрес для оповещений - http(s)://".$_SERVER['HTTP_HOST']."/index.php?w1
Цифровая подпись(ЭЦП) - SHA1 или MD5. Не забудьте указать такой же параметр в настройках этого модуля.";
$this->sort_order = 0;
$this->Settings = array(
"CONF_PAYMENTMODULE_WMI_MERCHANT_ID",
"CONF_PAYMENTMODULE_WMI_CURRENCY_ID",
"CONF_PAYMENTMODULE_WMI_DESCRIPTION",
"CONF_PAYMENTMODULE_WMI_SECRET_KEY",
"CONF_PAYMENTMODULE_WMI_HASH_METOD",
"CONF_PAYMENTMODULE_WMI_STATUS_AFTER_PAY",
"CONF_PAYMENTMODULE_WMI_PTENABLED_INTERNET",
"CONF_PAYMENTMODULE_WMI_PTENABLED_TERMINAL",
"CONF_PAYMENTMODULE_WMI_PTENABLED_CARDS",
"CONF_PAYMENTMODULE_WMI_PTENABLED_MCOMMERCE",
"CONF_PAYMENTMODULE_WMI_PTENABLED_NAL"
);

}


  • 0
Изображение Изображение Изображение

#11 Perepelkin

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 38 сообщений
Репутация: 0
Начинающий

Отправлено 26 January 2012 - 07:48 PM

ShopCMS 3.0.0 Все установилось, настроилось и на этом все....Выбираю доставку, оплату, продолжить и вижу чистую страницу...в адресной строке: "/index.php?order4_confirmation=yes&order_success=yes&paymentMethodID=3&orderID=385" При этом товар из корзины пропадает, в почту приходит уведомление о успешном заказе, в админке новый заказ...

ЗЫ..Разобрался: заменил в модуле строки:
""
function after_processing_html( $orderID )
{
$order = ordGetOrder( $orderID );
$exhange_rate = 1;
$exhange_round = 2;

$order_amount = _formatPrice(roundf($order["order_amount"]*$exhange_rate), $exhange_round, ".", "");
""
На
""
function after_processing_html( $orderID )
{
$order = ordGetOrder( $orderID );
$order_amount = $order["order_amount"];

$exhange_rate = (float)$this->_getSettingValue('CONF_PAYMENTMODULE_WMI_MERCHANT_EXCHANGERATE');
if ( (float)$exhange_rate == 0 )
$exhange_rate = 1;
""
  • 0

#12 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 28 January 2012 - 03:04 AM

Дополнение
В данном модуле присутствуют не все виды оплаты, которые доступны в единой кассе, чтобы их добавить нужно:
Зайти на сайт _http://merchant.w1.ru/checkout/site/develope/

долистать до списка вариантов оплаты (выглядит он как на скрине ниже)
[ATTACH]308.vB[/ATTACH]

далее отредактировать w1.php добавляя идентификатор модуля оплаты (например добавим Приват24)

ищем строчку

if($this->_getSettingValue('CONF_PAYMENTMODULE_WMI_PTENABLED_CARDS')){
$fields1{"BankTransferRUB"} = 1;
$fields1{"BankTransferUAH"} = 1;

и добавляем идентификатор с сайта чтобы получилось примерно так

if($this->_getSettingValue('CONF_PAYMENTMODULE_WMI_PTENABLED_CARDS')){
$fields1{"Privat24UAH"} = 1;
$fields1{"BankTransferRUB"} = 1;
$fields1{"BankTransferUAH"} = 1;
  • 0
Изображение Изображение Изображение

#13 boyyy7

    Новичок

  • Пользователи
  • Pip
  • 7 сообщений
Репутация: -1
Начинающий

Отправлено 28 January 2012 - 09:33 PM

Так распиши по всем недоступным методам оплаты, а лучше выложи отредактироанный w1.php
  • 0

#14 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 28 January 2012 - 09:38 PM

Так распиши по всем недоступным методам оплаты, а лучше выложи отредактироанный w1.php


Расписал выше все подробно, а выкладывать файл смысла нет, так как единая касса активно развивается и добавляет новые методы оплаты, так что учимся сами редактировать файл, так это придется делать примерно раз в 2 месяца
  • 0
Изображение Изображение Изображение

#15 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 02 February 2012 - 11:46 AM

Кто пробывал прикручивать на ShopCMS 3.1.2 ? И есть ли какие проблемы ?


проблем нет, кроме кодировки при использовании base64 (уже в окне оплаты единной кассы выводит не "заказ #xxx" а "????? #xxx")
  • 0
Изображение Изображение Изображение

#16 5Nizza

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 37 сообщений
Репутация: 4
Начинающий

Отправлено 02 February 2012 - 07:20 PM

Спасибо за ответ. Base64 поидее то можно раскодить )) это же не зенд с обфускацией.
  • 0

#17 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 02 February 2012 - 07:25 PM

Спасибо за ответ. Base64 поидее то можно раскодить )) это же не зенд с обфускацией.


Вы чуть не то поняли, модуль открытый, формировка строки отправки WMI_DESCRIPTION согласно документациик единой кассе, при наличии кириллицы должна отправляться в формате BASE64:base64_encode , а вот у них оно по видимому как то непонятно работает, я уже с кодировками игрался, везде все норм, но в единой кассе все равно "???? #xxx".
  • 0
Изображение Изображение Изображение

#18 Bardachock

    Пользователь

  • Пользователи
  • PipPip
  • 14 сообщений
Репутация: 0
Начинающий

Отправлено 10 February 2012 - 06:46 AM

В общем у меня такая же проблема, с передачей описания заказа. На странице кассы получаю "Описание заказа ?????? ?????? #xx"
И еще если выбрать в настройках модуля одновременно "Оплата банковскими картами" и "Оплата наличными" то на странице кассы получаю вот такое сообщение "Неверное значение ЭЦП для переданного заказа". В любых других конфигурациях вроде работает, главное не совмещать "Оплата банковскими картами" и "Оплата наличными", как я понял.
Огромный минус в том, что если не успел нажать на ссылку "Оплатить заказ сейчас!", или по каким то причинам не завершил платеж сразу, повторная оплата заказа невозможна.
Я так понимаю надо допиливать самому, вписывая форму с ссылкой на кассу в истории заказов.

Если кто поборол эти проблемы отпишитесь.
  • 0

#19 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 10 February 2012 - 10:32 AM

В общем у меня такая же проблема, с передачей описания заказа. На странице кассы получаю "Описание заказа ?????? ?????? #xx"
И еще если выбрать в настройках модуля одновременно "Оплата банковскими картами" и "Оплата наличными" то на странице кассы получаю вот такое сообщение "Неверное значение ЭЦП для переданного заказа". В любых других конфигурациях вроде работает, главное не совмещать "Оплата банковскими картами" и "Оплата наличными", как я понял.
Огромный минус в том, что если не успел нажать на ссылку "Оплатить заказ сейчас!", или по каким то причинам не завершил платеж сразу, повторная оплата заказа невозможна.
Я так понимаю надо допиливать самому, вписывая форму с ссылкой на кассу в истории заказов.

Если кто поборол эти проблемы отпишитесь.


Повопросу кодировки, скорее всего как то интересно обрабатывается на стороне единой кассы, просто у многих значения в базе CP1251 а в WMI_DESCRIPTION при наличии кирилицы необходимо передавать BASE64: и в кодировке utf8, при использовании iconv работает отлично на всех base64 декодерах, кроме единой кассы, но времени глубже копать пока не было

Неверное значение ЭЦП - только в старой версии новую скачайте с офф сайта, я им отправлял правки и вроде бы они их внесли

[HIDE="1"]http://merchant.w1.ru/checkout/site/develope/modules/ShopCMS.aspx[/HIDE]

По поводу оплаты из личного кабинета то http://vsupport.club/t535.html
  • 0
Изображение Изображение Изображение

#20 Bardachock

    Пользователь

  • Пользователи
  • PipPip
  • 14 сообщений
Репутация: 0
Начинающий

Отправлено 10 February 2012 - 10:50 PM

Неверное значение ЭЦП - только в старой версии новую скачайте с офф сайта, я им отправлял правки и вроде бы они их внесли

В новой у меня тоже самое если выбрать чекбоксы, как описано выше.
  • 0