gen PSI
NoDeny
Пользователь
Карма: -5
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
Сообщений: 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
|
|
« Ответ #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
Сообщений: 55
|
|
« Ответ #78 : 12 Апреля 2021, 20:31:27 » |
|
Спасибо за подсказку. Жаль вы раньше этого не написали . Уверен ,что для вас это проще , но я сделал как смог в виду отсутствия инструкций и не столь высоких знаний системы как у вас.
|
|
|
Записан
|
|
|
|
WideAreaNetwork
|
|
« Ответ #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
|
|
« Ответ #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
Старожил
Карма: -4
Offline
Сообщений: 282
|
|
« Ответ #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}, на
|
|
|
Записан
|
|
|
|
WideAreaNetwork
|
|
« Ответ #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
|
|
« Ответ #83 : 03 Ноября 2021, 20:07:14 » |
|
наверное должно возвращать номер договора, если его нет то и поле пустое, правильно? не у всех абонентов есть заполненное поле Договор тогда можно contract заменить к примеру на одно из id, login, ppc ?
|
|
|
Записан
|
|
|
|
SerjioMati
NoDeny
Старожил
Карма: -4
Offline
Сообщений: 282
|
|
« Ответ #84 : 03 Ноября 2021, 20:59:45 » |
|
наверное должно возвращать номер договора, если его нет то и поле пустое, правильно? не у всех абонентов есть заполненное поле Договор тогда можно contract заменить к примеру на одно из id, login, ppc ? так
|
|
|
Записан
|
|
|
|
WideAreaNetwork
|
|
« Ответ #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
|
|
« Ответ #86 : 05 Ноября 2021, 07:49:34 » |
|
Может кто поделится настройками в билинге и скинет файл p24.pl Пару дней не можем запустить (
|
|
|
Записан
|
|
|
|
WideAreaNetwork
|
|
« Ответ #87 : 05 Ноября 2021, 12:56:29 » |
|
вот еще скрин настроек в билинге, может я чего не так сделал
|
|
|
Записан
|
|
|
|
Jovani
NoDeny
Постоялец
Карма: -9
Offline
Сообщений: 234
|
|
« Ответ #88 : 05 Ноября 2021, 13:57:30 » |
|
вот еще скрин настроек в билинге, может я чего не так сделал
У нас так работает.
|
|
|
Записан
|
|
|
|
WideAreaNetwork
|
|
« Ответ #89 : 05 Ноября 2021, 14:00:53 » |
|
Уже заработало, после выставления Запит Check в якості billIdentifier приймає id користувача
в "да" Спасибо всем кто помагал.
|
|
|
Записан
|
|
|
|
|