Биллинговая система Nodeny
24 Апреля 2024, 10:56:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: 1 ... 4 5 [6] 7 8
  Печать  
Автор Тема: Модуль терминалов Приват24  (Прочитано 36280 раз)
gen PSI
NoDeny
Пользователь
*

Карма: -5
Offline Offline

Сообщений: 55


Просмотр профиля
« Ответ #75 : 10 Апреля 2021, 21:40:34 »

С шаблонами понятно более-менее. Но  какой надо добавить параметр в ссылке для Привата  , чтоб номер договора сразу был подхвачен ?
Пробовал так, не катит.
https://next.privat24.ua/payments/form/{"companyID":"НепонимающийНепонимающийНепонимающий","contract":"номер договора","form":{"query":"NAME Company"}}
Может у кого то есть пример.
Записан
gen PSI
NoDeny
Пользователь
*

Карма: -5
Offline Offline

Сообщений: 55


Просмотр профиля
« Ответ #76 : 12 Апреля 2021, 12:49:28 »

Получилось сделать верную ссылку через токен .
Ссылку с токеном дал приват, а я вставил нужную переменную(номер договора).
Очень надеюсь , что как то на вики Ноудени появится простая инструкция как  добавить сию кнопку в ЛК, ведь это действительно удобно.
Для тех кто будет делать с нуля - в папке /usr/local/nodeny/web/user/ в моем случае был изменён locals.pl под эта задачу.
Собственно ссылка с логотипом приват24:

<a href='h_ttps://next.privat24.ua/payments/form/{"token":"XXXXXX-XXXX-XXX-XXXX-XXXXXXXX","personalAccount":"$usr->{contract}"}'><img src="ваша путь/P24logo.png" width="80" height="80" border="0"'>Перейти на сайт Приват24</a></p>

Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #77 : 12 Апреля 2021, 16:41:11 »

Проще было в /usr/local/nodeny/web/tmpl/user/base.html заменить
Код:
{% include 'menu.html' menu=user_info.plugin_menu %}
на
Код:
{% include 'menu.html' menu=user_info.plugin_menu user_info=user_info %}
а в /usr/local/nodeny/web/tmpl/user/menu.html
Код:
<div class='navmenu paysystems_links' ....>
    ....
</div>
добавить
Код:
<a href='https://next.privat24.ua/payments/form/{"token":"XXXXXX-XXXX-XXX-XXXX-XXXXXXXX","personalAccount":"{{ user_info.contract }}"}'><img src="ваша путь/P24logo.png" width="80" height="80" border="0"'>Приват24</a>
Записан
gen PSI
NoDeny
Пользователь
*

Карма: -5
Offline Offline

Сообщений: 55


Просмотр профиля
« Ответ #78 : 12 Апреля 2021, 20:31:27 »

Спасибо за подсказку.
Жаль вы раньше этого не написали . Уверен ,что для вас это проще , но я сделал как смог в виду отсутствия инструкций и не столь высоких знаний системы как у вас.
Записан
WideAreaNetwork
Старожил
****

Карма: 1
Offline Offline

Сообщений: 358


Просмотр профиля Email
« Ответ #79 : 03 Ноября 2021, 10:05:50 »

та же тема и у нас, так как никто не написал здесь ответа, прошу помочь тех кто уже настроил, и так приват спрашивает
Цитировать
вот краткое описание основных методов

Идентификация плательщика (Поиск) (метод Search) Данный сервис служит для проверки корректности введенного идентификатора Плательщика в Биллинговой системе Предприятия. Ответ может содержать суммы задолженности абонента. Результат ответа должен возвращать информацию только об одном Плательщике.

Проверка возможности записи информации о принятом платеже (метод Check) Данный сервис служит для проверки возможности записи Предприятием информации о принятом платеже в свою билинговую систему,
клиент отправляет платеж в корзину для дальнейшей оплаты > вам отправляется методом check информация о будущем платеже что бы вы его проверили и если что могли отклонить
при положительном ответе на check (или когда check-а нет) клиенту предлогается оплатить данный платеж,добавлять платеж в билинг, основываясь на check - не совсем верно. Клиент создает платеж. доавбляет его в корзину, на этом этапе мы отпраляем вам запрос Check. получаем подтвенрждение, тем самым допуская клиента к оплате. Далее клиента на свое усмотрение может оплатить сразу, может позже, может вообще не платить. Когда клиент выполняет оплату платежа с успешным Check, мы отправим вам запрос Pay. Это значит, что деньги с клиента мы уже взяли, с последующим перечислением на расчетный счет получателя средств. Поэтому платеж лучше учитывать в билинге по успешному Pay, на Check и Pay мы передаем идентификатор платежа, он уникален в нашей базе, также запрос Check может быть выполнен не единожды, с одинаковым id платежа,при Check нам нужно сохранить платеж, и только когда получаем Pay, тогда уже добавлять его в биллинг.Check у нас может быть посылаться несколько раз, у нас не используется единственный вызов, чек не зависит от кэша

Запись платежа (метод Pay) Данный сервис служит для передачи Предприятию информации о принятом платеже, после проведения платежа, для пользователя, мы свяжемся с вами по методу PAY - информационный метод и уведомим вас что платеж состоялся и в вашу сторону будут направленны денежные средства по такому то платежу за такой то заказ.PAY присылается той компании на которую идет оплата, а не той которая совершает оплату, запрос Pay мы отправляем после того как с клиента возьмем деньги, это уведомление о том что клиент оплатил. Независимо от вашего ответа pay деньги будут отправлены на расчетный счет компании, Pay отправляем 40 раз, в течение 2,5-3ч. Если же от вас получена критическая ошибка записи (код 7 или 8 ), дальнейшие попытки записи прекращаем, если нужно уведомление о возможности оплаты до того как с клиента были взяты деньги - это метод Check (проверка возможности оплаты), запрос идентичен Pay с той разницей, что при отказе на Check от вас деньги с клиента взяты не будут.Чтоб платеж не проводился нужно реализовать метод Check (проверка возможности оплаты) и браковать платеж на методе Check не доходя до метода Pay, тогда оплата не будет совершена.

минимальный набор методов:
Поиск (Search), Запись платежа (Pay)

Рекомендуемый набор методов:
Поиск (Search), Проверка на запись (Check), Запись платежа (Pay)

для самостоятельного использования, дергать запросы :
примером отправки будет работа POSTer - для Firefox или для Chrome
h t t p : / / code.google.com/p/chrome-poster
или
попробуйте через RESTClsent

обмен данными осуществляется посредством HTTP|HTTPS  запросов методом POST
xml передается как RAW файл без присвоения какого либо имени,в зависемости от того как вы у себя организуете сервер запросы будут идти или по HTTP или по HTTPS

схема работы:
мы посылаем вам запрос,
вы -ответ

дайте разрешение на доступ нашим адресам:
217.117.64.232
217.117.68.232

Какие методы стандартного протокола будем настраивать ?
например:
Поиск (Search), Проверка на запись (Check), Запись платежа (Pay)

кто какие методы выбрал для работы модуля?
Записан
WideAreaNetwork
Старожил
****

Карма: 1
Offline Offline

Сообщений: 358


Просмотр профиля Email
« Ответ #80 : 03 Ноября 2021, 16:45:28 »

Цитировать
{"DT":"2021.11.03 12:30:41.443"
"REF":"SEARCH"
URI":"internet//cgi-bin/p24.pl"

"REQUEST_BODY":
"<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Transfer action="Search" interface="Debt" xmlns="debt.privatbank.ua/Transfer">
<Data xsi:type="Payer" xmlns:xsi="w3.org/2001/XMLSchema-instance">
<Unit name="bill_identifier" value="111111"/>
</Data>
</Transfer>"

"RESPONSE_BODY":
"<?xml version="1.0" encoding="UTF-8"?> 
<Transfer action="Search" interface="Debt" xmlns="debt.privatbank.ua/Transfer">
    <Data xmlns:xsi="w3.org/2001/XMLSchema-instance" xsi:type="DebtPack">
      <PayerInfo billIdentifier="490" ls="">
        <Fio>Іванов Іван Іванович</Fio>
      </PayerInfo>
      <ServiceGroup>
        <DebtService metersGlobalTarif="0" serviceCode="96">
          <CompanyInfo>
            <CompanyCode>2222222222</CompanyCode>
</CompanyInfo>
          <DebtInfo amountToPay="0" debt="0">
            <Balance>1005</Balance>
          </DebtInfo>
          <PayerInfo billIdentifier="490" ls="">
            <Fio>Іванов Іван Іванович</Fio>
          </PayerInfo>
          <ServiceName>Телекомунікаційні послуги</ServiceName>
        </DebtService>
      </ServiceGroup>
    </Data>
  </Transfer>


Цитировать
пожалуста для нормального формирования шаблонов заполните пустые значения ls=""

например так
<PayerInfo billIdentifier="490" ls="490">

Это скинул приват, что такое  ls и где его выставлять?
Записан
SerjioMati
NoDeny
Старожил
*

Карма: -5
Offline Offline

Сообщений: 280


Просмотр профиля
« Ответ #81 : 03 Ноября 2021, 16:53:44 »

Цитировать
{"DT":"2021.11.03 12:30:41.443"
"REF":"SEARCH"
URI":"internet//cgi-bin/p24.pl"

"REQUEST_BODY":
"<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Transfer action="Search" interface="Debt" xmlns="debt.privatbank.ua/Transfer">
<Data xsi:type="Payer" xmlns:xsi="w3.org/2001/XMLSchema-instance">
<Unit name="bill_identifier" value="111111"/>
</Data>
</Transfer>"

"RESPONSE_BODY":
"<?xml version="1.0" encoding="UTF-8"?>  
<Transfer action="Search" interface="Debt" xmlns="debt.privatbank.ua/Transfer">
    <Data xmlns:xsi="w3.org/2001/XMLSchema-instance" xsi:type="DebtPack">
      <PayerInfo billIdentifier="490" ls="">
        <Fio>Іванов Іван Іванович</Fio>
      </PayerInfo>
      <ServiceGroup>
        <DebtService metersGlobalTarif="0" serviceCode="96">
          <CompanyInfo>
            <CompanyCode>2222222222</CompanyCode>
</CompanyInfo>
          <DebtInfo amountToPay="0" debt="0">
            <Balance>1005</Balance>
          </DebtInfo>
          <PayerInfo billIdentifier="490" ls="">
            <Fio>Іванов Іван Іванович</Fio>
          </PayerInfo>
          <ServiceName>Телекомунікаційні послуги</ServiceName>
        </DebtService>
      </ServiceGroup>
    </Data>
  </Transfer>


Цитировать
пожалуста для нормального формирования шаблонов заполните пустые значения ls=""

например так
<PayerInfo billIdentifier="490" ls="490">

Это скинул приват, что такое  ls и где его выставлять?
файл p24.pl
191 рядок забери # а якщо потрібно щоб був ppc
то заміни
Код:
#ls             => $user->{contract},
на
Код:
ls=> $user->{id},
Записан
WideAreaNetwork
Старожил
****

Карма: 1
Offline Offline

Сообщений: 358


Просмотр профиля Email
« Ответ #82 : 03 Ноября 2021, 18:03:16 »

что такое ls не знаю, но он встречается в 142 строке
Цитировать
{
    my($it) = @_;
    my $p = $it->{input};
    my $user = $it->Get_account($p->{Data}{Unit}{value});
    my $data = $it->{data}{Transfer}{Data};
    $data->{'xsi:type'} = 'PayersTable';
    $data->{Headers} = {
        'Header' => [{
            name => 'fio'
        },{
            name => 'ls'
        }]
    };
    $data->{Columns} = {
        'Column' => [
            { Element => [ $user->{fio} ] },
            { Element => [ $user->{id} ] },
        ]
    };

204 строка
Цитировать
my $data = $it->{data}{Transfer}{Data};
    $data->{'xsi:type'} = 'DebtPack';
    my $bill_identifier = $it->{account_type} eq 'contract' ? $user->{contract} : $user->{id};
    $data->{PayerInfo} = {
        billIdentifier => $bill_identifier,
        ls             => $user->{contract},
        Fio            => [ $user->{fio} ],

223 строка
Цитировать
ServiceName       => [ $it->{ServiceName} ],
            # Destination       => [ $it->{Destination} ],
            PayerInfo => {
                billIdentifier => $bill_identifier,
                ls            => $user->{contract},
                Fio           => [ $user->{fio} ],

коментить все три нужно?
Записан
WideAreaNetwork
Старожил
****

Карма: 1
Offline Offline

Сообщений: 358


Просмотр профиля Email
« Ответ #83 : 03 Ноября 2021, 20:07:14 »

Код:
ls             => $user->{contract}
наверное должно возвращать номер договора, если его нет то и поле пустое, правильно?

не у всех абонентов есть заполненное поле Договор

тогда можно contract заменить к примеру на одно из id, login, ppc ?
Записан
SerjioMati
NoDeny
Старожил
*

Карма: -5
Offline Offline

Сообщений: 280


Просмотр профиля
« Ответ #84 : 03 Ноября 2021, 20:59:45 »

Код:
ls             => $user->{contract}
наверное должно возвращать номер договора, если его нет то и поле пустое, правильно?

не у всех абонентов есть заполненное поле Договор

тогда можно contract заменить к примеру на одно из id, login, ppc ?
так
Записан
WideAreaNetwork
Старожил
****

Карма: 1
Offline Offline

Сообщений: 358


Просмотр профиля Email
« Ответ #85 : 04 Ноября 2021, 11:20:56 »

сейчас новая ошибка при проверке Check
Цитировать
{"DT":"2021.11.04 10:44:59.444"
"REF":"CHECK"
URI":"h_t_t _p_internet//cgi-bin/p24.pl",

REQUEST_BODY":
"<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Transfer action="Check" interface="Debt" xmlns="h_t_t _p_debt.privatbank.ua/Transfer">
<Data xsi:type="Payment" id="4787447628" number="0.0.2327296844.1" xmlns:xsi="h_t_t _p_w3.org/2001/XMLSchema-instance">
<CompanyInfo/>
<PayerInfo ls="222222" billIdentifier="490">
<Fio>Іванов
Іван Іванович</Fio>
</PayerInfo>
<BankInfo/>
<TotalSum>1.00</TotalSum>
<CreateTime>2021-11-04T10:44:59.355+02:00</CreateTime>
<ServiceGroup>
<Service serviceCode="96" sum="1.00">
<PayerInfo/>
<CompanyInfo/>
<BankInfo/>
</Service>
</ServiceGroup>
</Data>
</Transfer>"

"RESPONSE_BODY":
"<?xml version="1.0" encoding="UTF-8"?>  <Transfer action="Check" interface="Debt" xmlns="h_t_t _p_debt.privatbank.ua/Transfer">
    <Data code="2" xmlns:xsi="h_t_t _p_w3.org/2001/XMLSchema-instance" xsi:type="ErrorInfo">
      <Message>Account not found</Message>
    </Data>
  </Transfer>
"


как ее решить?

Код:
my $it = nod::paysystem->new(
    system          => 'privat24',  # Имя платежной системы (латиница т.к. лог имя_ok.log)
    account_type    => 'ppc',
    account_as_dopfield => '',
    input_params    => {
        format  => 'xml',           # Запрос от платежной системы: query / xml / json
    },
    output          => {
        format  => 'xml',
    },
    max_query_len           => 5000,# Максимальная длина запроса в байтах
    err_psystem_data        => 99,  # Код ошибки, который необходимо вернуть если платежная система прислала
                                    # некорректные данные. Скорее всего это будет код близкий к ситуации
                                    # "если послать теже данные, то ошибка повторится"
    err_account_not_found   => 2,   # Код ошибки, который необходимо вернуть в случае, если клиент с заданным
                                    # id не найден в системе. Если платежная система не принимает коды ошибок,
                                    # а только описание ошибки - игнорируйте данный код.
    data            => {
        Transfer => {
            xmlns     => 'h_t_t _p_debt.privatbank.ua/Transfer',
            interface => 'Debt',
            action    => 'unknown',
            Data      => {
                'xmlns:xsi' => 'h_t_t _p_w3.org/2001/XMLSchema-instance',
                'xsi:type'  => 'ErrorInfo',
            }
        },
    },

    # --- Название услуги ---
    ServiceName       => 'Доступ к сети Интернет',

    # --- Назначение платежа ---
    Destination       => 'Оплата за услугу "Доступ к сети Интернет"',

    # --- Код услуги ---
    serviceCode       => 96,
);
Записан
WideAreaNetwork
Старожил
****

Карма: 1
Offline Offline

Сообщений: 358


Просмотр профиля Email
« Ответ #86 : 05 Ноября 2021, 07:49:34 »

Может кто поделится настройками в билинге и скинет файл p24.pl
Пару дней не можем запустить (
Записан
WideAreaNetwork
Старожил
****

Карма: 1
Offline Offline

Сообщений: 358


Просмотр профиля Email
« Ответ #87 : 05 Ноября 2021, 12:56:29 »

вот еще скрин настроек в билинге, может я чего не так сделал
Записан
Jovani
NoDeny
Постоялец
*

Карма: -9
Offline Offline

Сообщений: 234


Просмотр профиля
« Ответ #88 : 05 Ноября 2021, 13:57:30 »

вот еще скрин настроек в билинге, может я чего не так сделал


У нас так работает.
Записан
WideAreaNetwork
Старожил
****

Карма: 1
Offline Offline

Сообщений: 358


Просмотр профиля Email
« Ответ #89 : 05 Ноября 2021, 14:00:53 »

Уже заработало, после выставления
Код:
Запит Check в якості billIdentifier приймає id користувача
в "да"

Спасибо всем кто помагал.
Записан
Страниц: 1 ... 4 5 [6] 7 8
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!