Авторизация  
ZM

Модуль кредита от Почты Банка

Рекомендуемые сообщения

ZM

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

Начнем...

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

  class kupivkredit {
    var $code, $title, $description, $enabled;

// class constructor
    function __construct() {
      global $order;

      $this->code = 'kupivkredit';
      $this->title = MODULE_PAYMENT_KUPIVKREDIT_TEXT_TITLE;
      $this->public_title = MODULE_PAYMENT_KUPIVKREDIT_TEXT_PUBLIC_TITLE;
      $this->description = MODULE_PAYMENT_KUPIVKREDIT_TEXT_ADMIN_DESCRIPTION;
      $this->icon = DIR_WS_ICONS . 'kupivkredit.png';
      $this->sort_order = MODULE_PAYMENT_KUPIVKREDIT_SORT_ORDER;
      $this->enabled = ((MODULE_PAYMENT_KUPIVKREDIT_STATUS == 'True') ? true : false);

        $this->form_action_url = 'https://loans.tinkoff.ru/api/partners/v1/lightweight/create';

Теперь я собираюсь на основе этого модуля сделать копию с изменением kupivkredit переменных на kupivkreditp переменную путем добавления P - (почта банк)

Делаю копию файла и меняю переменные через замену в блокноте ищем kupivkredit и меняем на kupivkreditp отлично замены прошли.

Сохраняем файл и не забываем назвать его kupivkreditp.php т.к класс который прописан должен вроде совпадать с названием файла.

ок тут разобрались переменные поменяли идем дальше....

Есть файлик в lang/russian/modules/payment/kupivkredit.php

С ним мы делаем все тоже самое и меняем титлы и строчки на свои..

Так же мы знаем чтобы выводилась картинка оплаты модуля нужен файлик с логотипом кредитора его мы закидываем в /images/icons/ и называем kupivkreditp.png

И так, на данном этапе мы работали с 3 файлами

321.png.3a988331fca2bbae6452828d20d98311

  • /includes/modules/payment/kupivkreditp.php 
  •  
    /lang/russian/modules/payment/kupivkreditp.php
  •  
    /images/icons/kupivkreditp.png
 
Далее следует инструкция от почта банка..
 
И тут я столкнулся с тем что запрос идет не через api а через POS от сюда вопрос модуль для почты банка пишется по такому же принципу или для POS 
 
Вот краткая инструкция от почты банка..
 

Руководство по подключению виджета POS кредитования в Интернет-магазине партнера

Для подключения виджета в интернет-магазине, Вам понадобится:

1) Возможность вносить изменения в шаблоны страниц Вашего интернет-магазина.

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

· Информация о точке выдачи

· Наименовании товара (наименование, категория, количество, цена)

· Данные покупателя (Имя, телефон)

Эти данные должны будут быть переданы скрипту Почта Банк, добавленному ранее на страницу, дальнейшие задачи по загрузке, показу и помощи в заполнении анкеты скрипт возьмёт на себя.

1. Подключение виджета.

 

Скрипт Почта Банка должен быть подключен странице в момент её загрузки, он находится на серверах Почта-Банк.

 

Код виджета для встраивания на страницу интернет-магазина:

<div id="pos-credit-container"></div> <script src="https://my.pochtabank.ru/sdk/v1/pos-credit.js"></script> <script> var options = <json>;// json описан в п.2 window.PBSDK.posCredit.mount('#pos-credit-container', options); // подписка на событие завершения заполнения заявки window.PBSDK.posCredit.on('done', function(id){ console.log('Id заявки: ' + id) }); // При необходимости можно убрать виджет вызвать unmount // window.PBSDK.posCredit.unmount('#pos-credit-container'); </script> При необходимости можно подключать скрипт асинхроннно, например с помощью Jquery $.getScript(url, successCallback)

При необходимости можно подключать скрипт асинхроннно, например с помощью Jquery $.getScript(url, successCallback)

2. Вид и формат данных, который необходимо передать скрипту в переменной options:

{ ttCode: '010300100021', ttName: 'г. Москва, Преображенская пл. 8', fullName: 'Иванов Иван Иванович', phone: '9251112233', manualOrderInput: true, order: [ { category: '212', model: 'Сковорода', mark: 'Tefal', quantity: 1, price: 3400.99 }, { category: '212', model: 'Наименование товара на бумажных накладных', quantity: 2, price: 400 } ] };

 

Где:

Название Обязательность Описание

ttCode Да Код торговой точки, полученной от Почта Банк

ttName Да Адрес пункта выдачи товара

fullName Нет ФИО покупателя. Если не передано, то клиент должен будет сам ввести данные

phone Нет Телефон в формате 9161234567. Если не передано, то клиент должен будет сам ввести данные

manualOrderInput Нет Передавать значение true, если клиент должен сам заполнять заказ

order Да, если отсутствует поле manualOrderInpet или manualOrderInput=false Объект, содержащий в себе заказ клиента. Должен содержать хотя бы одну позицию

order.category Нет Код категории товара из справочника товаров. Если не передано, то будет отправлена категория «Общее»

order.model Нет Модель товара

order.mark Нет Марка товара

order.quantity Нет Количество, целое число

order.price Да Цена товара в рублях

3. Передача справочных значений в параметры скрипта

При заключении договора с Почта Банком партнер получает справочник категорий товаров и идентификаторов своих торговых точек.

Для корректной работы партнер должен в полях ttCode и ttName передавать корректную связку идентификатора точки из справочника и ее адрес.

Для корректной работы партнер должен каждому наименованию товара проставить соответствие категории из справочника кодов товаров для ее передачи в поле order.category. Если партнер не использует справочник товаров, то в скрипте нужно передавать параметр manualOrderInput: true и не передавать объект order.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
VaM
3 часа назад, ZM сказал:

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

Начнем...

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


  class kupivkredit {
    var $code, $title, $description, $enabled;

// class constructor
    function __construct() {
      global $order;

      $this->code = 'kupivkredit';
      $this->title = MODULE_PAYMENT_KUPIVKREDIT_TEXT_TITLE;
      $this->public_title = MODULE_PAYMENT_KUPIVKREDIT_TEXT_PUBLIC_TITLE;
      $this->description = MODULE_PAYMENT_KUPIVKREDIT_TEXT_ADMIN_DESCRIPTION;
      $this->icon = DIR_WS_ICONS . 'kupivkredit.png';
      $this->sort_order = MODULE_PAYMENT_KUPIVKREDIT_SORT_ORDER;
      $this->enabled = ((MODULE_PAYMENT_KUPIVKREDIT_STATUS == 'True') ? true : false);

        $this->form_action_url = 'https://loans.tinkoff.ru/api/partners/v1/lightweight/create';

Теперь я собираюсь на основе этого модуля сделать копию с изменением kupivkredit переменных на kupivkreditp переменную путем добавления P - (почта банк)

Делаю копию файла и меняю переменные через замену в блокноте ищем kupivkredit и меняем на kupivkreditp отлично замены прошли.

Сохраняем файл и не забываем назвать его kupivkreditp.php т.к класс который прописан должен вроде совпадать с названием файла.

ок тут разобрались переменные поменяли идем дальше....

Есть файлик в lang/russian/modules/payment/kupivkredit.php

С ним мы делаем все тоже самое и меняем титлы и строчки на свои..

Так же мы знаем чтобы выводилась картинка оплаты модуля нужен файлик с логотипом кредитора его мы закидываем в /images/icons/ и называем kupivkreditp.png

И так, на данном этапе мы работали с 3 файлами

321.png.3a988331fca2bbae6452828d20d98311

  • /includes/modules/payment/kupivkreditp.php 
  •  
    /lang/russian/modules/payment/kupivkreditp.php
  •  
    /images/icons/kupivkreditp.png
 
Далее следует инструкция от почта банка..
 
И тут я столкнулся с тем что запрос идет не через api а через POS от сюда вопрос модуль для почты банка пишется по такому же принципу или для POS 
 
Вот краткая инструкция от почты банка..
 

Руководство по подключению виджета POS кредитования в Интернет-магазине партнера

Для подключения виджета в интернет-магазине, Вам понадобится:

1) Возможность вносить изменения в шаблоны страниц Вашего интернет-магазина.

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

· Информация о точке выдачи

· Наименовании товара (наименование, категория, количество, цена)

· Данные покупателя (Имя, телефон)

Эти данные должны будут быть переданы скрипту Почта Банк, добавленному ранее на страницу, дальнейшие задачи по загрузке, показу и помощи в заполнении анкеты скрипт возьмёт на себя.

1. Подключение виджета.

 

Скрипт Почта Банка должен быть подключен странице в момент её загрузки, он находится на серверах Почта-Банк.

 

Код виджета для встраивания на страницу интернет-магазина:


<div id="pos-credit-container"></div> <script src="https://my.pochtabank.ru/sdk/v1/pos-credit.js"></script> <script> var options = <json>;// json описан в п.2 window.PBSDK.posCredit.mount('#pos-credit-container', options); // подписка на событие завершения заполнения заявки window.PBSDK.posCredit.on('done', function(id){ console.log('Id заявки: ' + id) }); // При необходимости можно убрать виджет вызвать unmount // window.PBSDK.posCredit.unmount('#pos-credit-container'); </script> При необходимости можно подключать скрипт асинхроннно, например с помощью Jquery $.getScript(url, successCallback)

При необходимости можно подключать скрипт асинхроннно, например с помощью Jquery $.getScript(url, successCallback)

2. Вид и формат данных, который необходимо передать скрипту в переменной options:


{ ttCode: '010300100021', ttName: 'г. Москва, Преображенская пл. 8', fullName: 'Иванов Иван Иванович', phone: '9251112233', manualOrderInput: true, order: [ { category: '212', model: 'Сковорода', mark: 'Tefal', quantity: 1, price: 3400.99 }, { category: '212', model: 'Наименование товара на бумажных накладных', quantity: 2, price: 400 } ] };

 

Где:

Название Обязательность Описание

ttCode Да Код торговой точки, полученной от Почта Банк

ttName Да Адрес пункта выдачи товара

fullName Нет ФИО покупателя. Если не передано, то клиент должен будет сам ввести данные

phone Нет Телефон в формате 9161234567. Если не передано, то клиент должен будет сам ввести данные

manualOrderInput Нет Передавать значение true, если клиент должен сам заполнять заказ

order Да, если отсутствует поле manualOrderInpet или manualOrderInput=false Объект, содержащий в себе заказ клиента. Должен содержать хотя бы одну позицию

order.category Нет Код категории товара из справочника товаров. Если не передано, то будет отправлена категория «Общее»

order.model Нет Модель товара

order.mark Нет Марка товара

order.quantity Нет Количество, целое число

order.price Да Цена товара в рублях

3. Передача справочных значений в параметры скрипта

При заключении договора с Почта Банком партнер получает справочник категорий товаров и идентификаторов своих торговых точек.

Для корректной работы партнер должен в полях ttCode и ttName передавать корректную связку идентификатора точки из справочника и ее адрес.

Для корректной работы партнер должен каждому наименованию товара проставить соответствие категории из справочника кодов товаров для ее передачи в поле order.category. Если партнер не использует справочник товаров, то в скрипте нужно передавать параметр manualOrderInput: true и не передавать объект order.

Ну если основы php совсем не знаете, от вряд ли что-то получится.

Если знаете, то для начала есть смысл начать с этой темы - 

 

т.е. как сделать клон простого модуля оплаты.

Идти надо от простого к сложному.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
KoVaLsKy

Могу написать\дописать модуль.  Пишите в ЛС. Возьму не много за него

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ZM

А почему могут переменные не отображаться если файл с переменными лежит в ланге в модулях оплаты и наз-ся также как описание процедур тоесть kupivkreditp? 

22222222222222222.png

Просто есть вот эти запросы от старого модуля с которого я копировал код и в нем есть цифры я не совсем понимаю что они указывают но в новом модуле указал их тоже может нужно их сменить?

  vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_PAYMENT_KUPIVKREDIT_STATUS', 'True', '6', '3', 'vam_cfg_select_option(array(\'True\', \'False\'), ', now())");
      vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_KUPIVKREDIT_ALLOWED', '', '6', '4', now())");
      vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_KUPIVKREDIT_SHOPID', 'test_online', '6', '5', now())");
      vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_KUPIVKREDIT_SHOWCASEID', 'test_online', '6', '6', now())");
      vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_KUPIVKREDIT_SORT_ORDER', '0', '6', '7', now())");
      vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, use_function, set_function, date_added) values ('MODULE_PAYMENT_KUPIVKREDIT_ZONE', '0', '6', '8', 'vam_get_zone_class_title', 'vam_cfg_pull_down_zone_classes(', now())");
      vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_KUPIVKREDIT_PROMOCODE', 'default', '6', '9', now())");
      vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, use_function, date_added) values ('MODULE_PAYMENT_KUPIVKREDIT_ORDER_STATUS_ID', '0', '6', '10', 'vam_cfg_pull_down_order_statuses(', 'vam_get_order_status_name', now())");

 

Просто основывая на мануале или словах Александра модуль переделать не сложно но почему то сложностей много и ответов тоже почти нет..

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ZM

И например в мануале вобще не понятно чем обьясняется замена данных строчек и как это работает...

Затем нам нужно исправить все SQL запросы типа insert, проще говоря, смысл в том, чтобы перенести текст (название и описание настроек модуля) из SQL запросов в языковой файл, т.к. текст мы уже перенесли, теперь нужно удалить его из insert запросов. Удаляем из запроса поля configuration_title и configuration_description, а также значения для этих полей, т.е., к примеру, нам нужно исправить:

      vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Check/Money Order Module', 'MODULE_PAYMENT_WEST_STATUS', 'True', 'Do you want to accept Check/Money Order payments?', '6', '1', 'vam_cfg_select_option(array(\'True\', \'False\'), ', now());");

На:

      vam_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_PAYMENT_WEST_STATUS', 'True', '6', '1', 'vam_cfg_select_option(array(\'True\', \'False\'), ', now());");

Хотя цифры тут тоже не меняные 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
VaM

Наверное потому что надо знать основы php, mysql как минимум.

Каждую тонкость описать невозможно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ZM

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
VaM
10 час назад, ZM сказал:

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

Сделайте для начала всё в точности, как написано в faq.

Там полностью рабочий вариант.

А потом уже свой модуль делайте.

Если нет описаний, видимо, нет перевод для настроек в /lang/russian/modules/payment/ваш-файл

Все описания из этого файла идут.

Например там нет описания MODULE_PAYMENT_WEST_STATUS

т.е. констант:

MODULE_PAYMENT_WEST_STATUS_TITLE

MODULE_PAYMENT_WEST_STATUS_DESC

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ZM

Ну в том то и прикол что файлик лежит там под названием kupivkreditp.php 

В нем эти строки..

define('MODULE_PAYMENT_kupivkreditp_TEXT_TITLE', 'Почта Банк Кредит Онлайн');
define('MODULE_PAYMENT_kupivkreditp_TEXT_PUBLIC_TITLE', 'Почта Банк Кредит Онлайн');
define('MODULE_PAYMENT_kupivkreditp_TEXT_ADMIN_DESCRIPTION', 'Модуль оплаты Почта Банк Кредит Онлайн');
define('MODULE_PAYMENT_kupivkreditp_TEXT_DESCRIPTION', 'После нажатия кнопки Подтвердить заказ Вы перейдёте на сайт КупиВкредит для подтверждения заказа.');
  
define('MODULE_PAYMENT_kupivkreditp_STATUS_TITLE' , 'Разрешить модуль КупиВкредит');
define('MODULE_PAYMENT_kupivkreditp_STATUS_DESC' , 'Вы хотите разрешить использование модуля при оформлении заказов?');
define('MODULE_PAYMENT_kupivkreditp_ALLOWED_TITLE' , 'Разрешённые страны');
define('MODULE_PAYMENT_kupivkreditp_ALLOWED_DESC' , 'Укажите коды стран, для которых будет доступен данный модуль (например RU,DE (оставьте поле пустым, если хотите что б модуль был доступен покупателям из любых стран))');
define('MODULE_PAYMENT_kupivkreditp_SHOPID_TITLE' , 'shopId:');
define('MODULE_PAYMENT_kupivkreditp_SHOPID_DESC' , 'Укажите Ваш shopId');
define('MODULE_PAYMENT_kupivkreditp_SHOWCASEID_TITLE' , 'showcaseId:');
define('MODULE_PAYMENT_kupivkreditp_SHOWCASEID_DESC' , 'Укажите Ваш showcaseId');
define('MODULE_PAYMENT_kupivkreditp_SORT_ORDER_TITLE' , 'Порядок сортировки');
define('MODULE_PAYMENT_kupivkreditp_SORT_ORDER_DESC' , 'Порядок сортировки модуля.');
define('MODULE_PAYMENT_kupivkreditp_ZONE_TITLE' , 'Зона');
define('MODULE_PAYMENT_kupivkreditp_ZONE_DESC' , 'Если выбрана зона, то данный модуль оплаты будет виден только покупателям из выбранной зоны.');
define('MODULE_PAYMENT_kupivkreditp_PROMOCODE_TITLE' , 'promoCode');
define('MODULE_PAYMENT_kupivkreditp_PROMOCODE_DESC' , 'Укажите promoCode, если есть.');
define('MODULE_PAYMENT_kupivkreditp_ORDER_STATUS_ID_TITLE' , 'Укажите оплаченный статус заказа');
define('MODULE_PAYMENT_kupivkreditp_ORDER_STATUS_ID_DESC' , 'Укажите оплаченный статус заказа.');

 

И точно таки же строчки для вывода этого текста указаны в самом модуле после переделки ну это я описывал в начале поста, просто не пойму почему он их не подхватывает, даже при установке модуля в базе данных строчки появляются в конфигураторе 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
VaM
10 час назад, ZM сказал:

И точно таки же строчки для вывода этого текста указаны в самом модуле после переделки ну это я описывал в начале поста, просто не пойму почему он их не подхватывает, даже при установке модуля в базе данных строчки появляются в конфигураторе 

Чудес не бывает.

Для начала просто сделайте клон модуля как написано на - 

 

 

По коду Вашему и так видно, что у Вас например контанта текстовая MODULE_PAYMENT_kupivkreditp_STATUS

Почему с маленьких букв?!

Если так прописана константа в lang/russian файле, то именно так должна быть прописана и в самом коде модуля в /includes/modules/payment

Что в коде модуля.

В общем, это всё Ваши ошибки, поэтому в faq и написано подробно, что и как делать.

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
ZM

Понял, регистр видимо виноват? ) спасибо буду побывать, но модуль будет сделать и выложен бесплатно для всех  вот увидите ) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
VaM
31 минуты назад, ZM сказал:

Понял, регистр видимо виноват? ) спасибо буду побывать, но модуль будет сделать и выложен бесплатно для всех  вот увидите ) 

Понятное дело, что в названии констнт дело.

Я ж дал пример на инструкцию как делать клон, идти нужно от простого к сложного.

Для начала просто сделайте то, что написано в статье про клон.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация