Форум русской поддержки Joomla!® CMS
04.12.2016, 22:28:05 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

Модуль оплаты что не так ?

 (Прочитано 2184 раз)
0 Пользователей и 1 Гость смотрят эту тему.
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« : 27.08.2014, 12:33:02 »

Доброго времени суток.
Разрабатываю модуль оплаты для JoomShopping 3.15.3, версия Joomla 2.5.22 Stable
Модуль работает с API описанным в документе по этой ссылке: http://www.hutkigrosh.by/Docs/API%20%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0%20%D0%A5%D1%83%D1%82%D0%BAi%20%D0%93%D1%80%D0%BE%D1%88.ru.pdf

На первых порах решил не заморачиваться на формировании данных из заказа и тупо определил все необходимые для отправки переменные вручную в функции showPaymentForm($params, $pmconfigs), которая вызывается на стадии выбора способа оплаты.
В ней соответственно происходит аутентификация, отправка запроса на добавление нового счета в систему и завершение сеанса.
За отправку данных отвечает функция: sendToHG( $req, $url, $data, $cookies, $method )
Вот сам код:
Показать текстовый блок

Суть проблемы в следующем: в функции должна происходить установка cookies, полученный набор cookies необходимо использовать в последующих вызовах других методов,
но черт возьми этого не происходит! Куки не устанавливаются (Появляется сообщение: COOKIES не определены !). Я уже задолбался!
Помогите кто советом если можете, почему cookies пустые?

Код функции:
Код:
function sendToHG( $req, $url, $data, $cookies, $method ) //отправляет данные на сервер
 {
  echo "<br/>";
  var_dump($data);
  echo "<br/>";
  $req -> setUrl( $url );
  $req -> setHeaders( array( "Content-Type" => "application/json",
                             "Accept" => "application/json",
                             "Content-Length" => strlen($data)
                           )
                    );
  $req -> setMethod( $method );
  $req -> setRawPostData( $data );
  $req -> enableCookies();
  if( $cookies != null ) $req->setCookies( $cookies );
    else echo "<br/>COOKIES не определены !</br/>";
  $req -> send();
  return $req -> getResponseBody();
 }


P.S. В результате отсутствия куки сервер возвращает:  "{"status":3221291523,"billID":0}", то есть новый счет в систему не добавлен, ошибка 3221291523, из описания API: "Общая ошибка выставления счета". Связывался с представителем платежной системы, просил посмотреть лог на сервере, ответили что (дословно): "Забыли прицепить куки".
 !
« Последнее редактирование: 11.09.2014, 10:34:33 от vitalikos » Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #1 : 27.08.2014, 12:39:30 »

а что это такое? это платежный шлюз или что? или типа робокассы?

Что бы не флудить, описание сервиса по этой ссылке: http://www.hutkigrosh.by/
Записан
dmitry_stas
Профи
********

Репутация: +795/-4
Offline Offline

Сообщений: 7741



« Ответ #2 : 27.08.2014, 12:42:22 »

глубоко не вникал но исходя из того, что вы вызываете
Цитировать
$result = $this->SendToHG($req, $url, $data, null, HTTP_METH_POST);

а в function sendToHG( $req, $url, $data, $cookies, $method ) проверка
Цитировать
if( $cookies != null ) $req->setCookies( $cookies );
    else echo "<br/>COOKIES не определены !</br/>";

то с какого перепугу они должны устанавливаться? Azn
Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #3 : 27.08.2014, 13:09:59 »

dmitry_stas Спасибо за подсказку... но ....
Приведу текст из описания API:
Показать текстовый блок
То есть автор документа свято верит в себя Smiley.
Я как понимаю, что на момент начало Аутентификации куки еще как бы нет... Но исходя из кода не понятно что же тогда передать вместо $cookies в первый раз?
« Последнее редактирование: 27.08.2014, 13:19:25 от vitalikos » Записан
dmitry_stas
Профи
********

Репутация: +795/-4
Offline Offline

Сообщений: 7741



« Ответ #4 : 27.08.2014, 14:00:41 »

понятия не имею. видимо надо обратиться к автору Azn ну или не проверять куки в первый вызов функции.
Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #5 : 27.08.2014, 14:41:20 »

Обратился к автору, точнее к авторам...
Ответ: "Если бы куки не цеплялись, то было бы при выставлении счета Access Denied. У Вас явно проблема с датами. Погуглите формирование даты в миллисек json."

Погуглил, нашел: http://msdn.microsoft.com/ru-ru/library/bb412170(v=vs.110).aspx
Суть:
Показать текстовый блок

Спросил годится ли mktime() из PHP, мне ответили: "Если по аналогии PHP, то да. Только у нас количество миллисекунд…. в 1000 раз меньше."
Теперь сижу и думаю........
Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #6 : 27.08.2014, 15:33:50 »

Да еханый бабай!
Формирую даты так:
Код:
$currdate = time();
$currdate_plus_5days = $currdate + 432000000; //+5 суток
$dt = $currdate;
mas['dueDt'] = "/"."Date(".$dt.")"."/"; //срок оплаты счета
$dt = $currdate_plus_5days;
$mas['addedDt'] = "/"."Date(".$dt.")"."/"; //дата выставления счета
И вот так:
Код:
$currdate = round( time() / 1000 );
$currdate_plus_5days = round ($currdate + (432000000 / 1000)); //+5 суток
$dt = $currdate;
mas['dueDt'] = "/"."Date(".$dt.")"."/"; //срок оплаты счета
$dt = $currdate_plus_5days;
$mas['addedDt'] = "/"."Date(".$dt.")"."/"; //дата выставления счета
После преобразования в JSON получается:
Код:
"{"eripId":10844001,"invId":"0","dueDt":"\/Date(1409138596)\/","addedDt":"\/Date(1841138596)\/","fullName":"\u0418\u0432\u0430\u043d\u043e\u0432 \u0418\u0432\u0430\u043d \u0418\u0432\u0430\u043d\u043e\u0432\u0438\u0447","mobilePhone":"+375447713295","notifyByMobilePhone":false,"email":"gilmor.by@gmail.com","notyfyByEmail":false,"amt":3860000,"curr":"BYR","statusEnum":-1,"products":{"invItemId":"\u0410\u0440\u0442\u0438\u043a\u0443\u043b 1-1\u041c\u0422","desc":"\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0442\u043e\u0432\u0430\u0440 1","count":1,"amt":1860000}}"
Или так:
Код:
"{"eripId":10844001,"invId":"0","dueDt":"\/Date(1409139)\/","addedDt":"\/Date(1841139)\/","fullName":"\u0418\u0432\u0430\u043d\u043e\u0432 \u0418\u0432\u0430\u043d \u0418\u0432\u0430\u043d\u043e\u0432\u0438\u0447","mobilePhone":"+375447713295","notifyByMobilePhone":false,"email":"gilmor.by@gmail.com","notyfyByEmail":false,"amt":3860000,"curr":"BYR","statusEnum":-1,"products":{"invItemId":"\u0410\u0440\u0442\u0438\u043a\u0443\u043b 1-1\u041c\u0422","desc":"\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0442\u043e\u0432\u0430\u0440 1","count":1,"amt":1860000}}"
Для первого и второго варианта соответственно.

И никакого толку.... Может опять туплю?
« Последнее редактирование: 27.08.2014, 15:38:24 от vitalikos » Записан
dmitry_stas
Профи
********

Репутация: +795/-4
Offline Offline

Сообщений: 7741



« Ответ #7 : 27.08.2014, 15:48:41 »

я извиняюсь, вот все что вы написали, какое отношение это имеет к кукам и их неустановке? или я не понял, и проблема с куками решена?
Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #8 : 27.08.2014, 17:15:53 »

я извиняюсь, вот все что вы написали, какое отношение это имеет к кукам и их неустановке? или я не понял, и проблема с куками решена?
Судя по ответу разработчика API :
Цитировать
"Если бы куки не цеплялись, то было бы при выставлении счета Access Denied. У Вас явно проблема с датами. Погуглите формирование даты в миллисек json."
Я понял что решена, хотя лично у меня есть сомнения...
Сейчас веду активную переписку по теме cookies и формирования даты с разработчиком API.

P.S. Так же пробую изменить подход к отправке запросов на сервер с использованием cURL из PHP (смущают выскакивающие предупрещдения PHP о том что использование функций библиотеки PECL_HTTP является устаревшим ).
По результатам отпишусь.
« Последнее редактирование: 27.08.2014, 17:21:40 от vitalikos » Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #9 : 29.08.2014, 16:26:14 »

 Cool
После нервотрепки с cookies, а затем и с формированием даты получился работоспособный вариант, правда пришлось отказаться от способа описанного в документации API и реализовать все через cURL:
Показать текстовый блок

Все работает.

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

Например может быть тупой вопрос, но все же, будет ли корректно работать код:
Код:
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__)."/cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__)."/cookies.txt");
если скажем одновременно на сайте в одно и тоже время скрипт будет обрабатывать более одного пользователя?

Так же хотелось бы спросить, так как сам не допер: для каких целей в модуле оплаты используются функции: getUrlParams($pmconfigs) и checkTransaction($pmconfigs, $order, $act). Я обошелся без них.


P.S. Если кто нибудь столкнется с формированием даты для последующей передачи на сервер в формате JSON, позволю себе дать совет: в Google Chrome есть консоль, написав в которой new Date(число) и нажав Enter вам отобразится дата и время (удобно).
« Последнее редактирование: 29.08.2014, 16:57:59 от vitalikos » Записан
dmitry_stas
Профи
********

Репутация: +795/-4
Offline Offline

Сообщений: 7741



« Ответ #10 : 29.08.2014, 17:17:03 »

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

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

для каких целей в модуле оплаты используются функции: getUrlParams($pmconfigs) и checkTransaction($pmconfigs, $order, $act). Я обошелся без них.

нужны для передачи параметров между магазином и платежным сервисом и проверки оплаты соответственно. опять таки, теоретически обойтись без них можно. но во-первых это изобретение велосипеда, а во-вторых судя по коду у вас в частности пока это не получилось Azn например, откуда методу complete известно о $myparams ?
Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #11 : 11.09.2014, 10:22:20 »

Цитировать
по коду у вас в частности пока это не получилось например, откуда методу complete известно о $myparams ?

Я извиняюсь за тупой вопрос, но все же, а как передать свою переменную которая формируется в функции showEndForm($pmconfigs, $order) в функцию complete($pmconfigs, $order, $payment), что бы в ней можно было бы проанализировать значение переменной ?

Судя по коду из payment.php нужно использовать функции:
Код:
function getParams()
{
 return $this->_ps_params;
}
и
Код:
function setParams($params)
{
 $this->_ps_params = $params;
}
но что то не выходит.... точнее не могу догнать КАК!

пробовал так (в showEndForm):
Код:
$myparams['bill_status'] = $bill_status;
$myparams['bill_id'] = $bill_id;
$this->setParams($myparams);

в complete():
Код:
$tmp = $this->getParams();
if ($tmp['bill_status'] == 0) echo "Все нормально!";
else die("ERROR");

P.S. Функции getParams() и setParams($params) описаны в моем модуле (тупо скопированы из payment.php)
« Последнее редактирование: 11.09.2014, 10:37:13 от vitalikos » Записан
dmitry_stas
Профи
********

Репутация: +795/-4
Offline Offline

Сообщений: 7741



« Ответ #12 : 11.09.2014, 11:48:17 »

showEndForm и complete вызываются в абсолютно разных скриптах. используйте например сессию для передачи параметров между ними.
Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #13 : 17.09.2014, 11:48:59 »

... используйте например сессию для передачи параметров между ними.

Спасибо за совет!
Получилось так (помещаем данные):
Показать текстовый блок

Считываем данные:
Показать текстовый блок

Вопрос: В случае если счет по каким то причинам не выставлен в систему, то происходит откат назад (на страницу подтверждения заказа) и вверху появляется надпись "Оплата отменена".
А можно ли как нибудь добавить к этой надписи свой текст, например "Код ошибки: 324567" ?
Записан
dmitry_stas
Профи
********

Репутация: +795/-4
Offline Offline

Сообщений: 7741



« Ответ #14 : 17.09.2014, 12:07:01 »

в checkTransaction возвращайте array(0, 'тут ваш текст ошибки'). посмотрите в плагине пейпела например
Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #15 : 17.09.2014, 13:01:17 »

Что то не получается... такое впечатление, что функция checkTransaction($pmconfigs, $order, $act) вообще не получает управление.
Почему?

Мой код:
Показать текстовый блок

Функция checkTransaction:
Код:
function checkTransaction($pmconfigs, $order, $act)
 {
  if ( (!isset($_SESSION['bill_status'])) or (!isset($_SESSION['bill_id'])) ) die ("Bill ID or Bill Status is not Define!");
  $bill_status = $_SESSION['bill_status'];
  $bill_id = $_SESSION['bill_id'];
  if($bill_status == 0) return array(1, "Номер заказа для оплаты: ".$order->order_number);
     else return array(0, "Код ошибки: ".$bill_status);
 }

Что я делаю Неправильно? Почему надпись не добавляется? Angry
« Последнее редактирование: 17.09.2014, 13:05:30 от vitalikos » Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #16 : 18.09.2014, 18:20:13 »

Причину почему функция checkTransaction($pmconfigs, $order, $act) не получает управление кажется понял, суть в этой строчке:

Код:
<form id="paymentform" action="<?php if($bill_status == 0) echo $return; else if($bill_status != 0) echo $cancel_return;?>" name="paymentform" method="post">

то есть у меня авторизация, выставление счета и выход осуществляется в функции showEndForm($pmconfigs, $order), а затем в зависимости от того какой результат вернул сервер происходит переадресация либо на:
($return) JURI::root(). "index.php?option=com_jshopping&controller=checkout&task=step7&act=return&js_paymentclass=pm_hg" -если счет успешно добавлен в систему
либо на
($cancel_return) JURI::root(). "index.php?option=com_jshopping&controller=checkout&task=step7&act=cancel&js_paymentclass=pm_hg" - если сервер вернул ошибку

Во всех модулях доступных для скачивания(которые я видел) адрес скрипта обрабатывающего форму равен адресу сервиса платежной системы, но все скрипты которые я видел не требуют предварительной авторизации (или аутентификации), а у меня сперва надо залогинится, потом попытаться добавить счет в систему, ну и в конце выйти..... Sad

Я так полагаю что нужно "разбить" скрипт на части таким образом, чтобы перед отправкой формы произошла авторизация, после отправки счет добавился (или не добавился) в платежную систему, ну и соответственно отключиться от сервера.
Затем необходимо обработать результат ответа сервера. Если все good, то функция complete($pmconfigs, $order, $payment) должна написать фразу: "Номер заказа для оплаты 0000001", ну а если что то не так (счет не добавлен), произойдет возврат на страницу подтверждения заказа с надписью "Оплата отменена" + к этой надписи функция checkTransaction($pmconfigs, $order, $act) добавит фразу: "Код ошибки: 1234567890".

Так должно быть если я правильно понял логику работы....

Проблема в том, что я не могу догнать КАК? (в какие функции "рассовать" авторизацию, выставление счета и выход?)......

Прошу помощи в наставлении на путь истинный! !
« Последнее редактирование: 18.09.2014, 18:23:47 от vitalikos » Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #17 : 13.10.2014, 17:39:59 »

Люди неужели никто советом не поможет? Или я всех достал "тупыми" вопросами?  :-(
Записан
dmitry_stas
Профи
********

Репутация: +795/-4
Offline Offline

Сообщений: 7741



« Ответ #18 : 13.10.2014, 18:53:22 »

посмотрите в controller=checkout метод step7 . при $act = cancel до checkTransaction дело не доходит вообще. и с $act = return тоже есть нюансы. используйте другой $act (свой)
Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #19 : 01.11.2014, 13:46:28 »

Вообще засада....
Обновился до JoomShopping 3.19.2 модуль перестал работать.
Точнее он то вроде работает, но постоянно после нажатия кнопки "подтвердить" возвращается назад и пишет "оплата отменена" (причем обидно, что эта надпись появляется не всегда).... При этом счет в систему добавляется все равно...
Не подскажете в новой версии магазина изменилось что? в плане работы модулей оплаты?
Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #20 : 01.11.2014, 14:14:22 »

посмотрите в controller=checkout метод step7 . при $act = cancel до checkTransaction дело не доходит вообще. и с $act = return тоже есть нюансы. используйте другой $act (свой)
Просветите недалекого... как "завести" свой act?
Записан
dmitry_stas
Профи
********

Репутация: +795/-4
Offline Offline

Сообщений: 7741



« Ответ #21 : 01.11.2014, 14:58:52 »

ну так где задаете всякие return_url  и так далее, пишите там свой act любой, например &act=norma. и потом в checkTransaction проверяете его
Код:
if ($act=='norma') {
    //успешная оплата
} else {
    //не успешная
}
Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #22 : 02.11.2014, 16:39:50 »

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

Так и не понял смысл этих $act, ну и до check transaction() управление так и не доходит. Ну да и хрен с ним.

Вопрос в другом:
Покупка осуществляется без регистрации (но данные пользователь все равно вносит: email, телефон, адрес).
В настройках способа оплаты тип установлен "Расширенный".

Почему не сохраняются заказы в магазине (раздел "Заказы")?

При этом если поставить тип способа оплаты "Простой", то заказы сохраняются, но модуль не работает!
В чем дело?
Как сделать так чтобы заказы сохранялись?
« Последнее редактирование: 02.11.2014, 16:45:42 от vitalikos » Записан
dmitry_stas
Профи
********

Репутация: +795/-4
Offline Offline

Сообщений: 7741



« Ответ #23 : 02.11.2014, 16:49:48 »

Почему не сохраняются заказы в магазине (раздел "Заказы")?

они сохраняются. только они не завершены. их можно увидеть если выбрать в списке заказов Не закончен: Показывать. а вот не завершены они потому что

Так и не понял смысл этих $act, ну и до check transaction() управление так и не доходит. Ну да и хрен с ним.
Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #24 : 03.11.2014, 00:23:01 »

Уважаемый dmitry_stas, объясните пожалуйста для дибила на пальцах что я делаю не так в этом коде:
Показать текстовый блок

Переадресация на сервис платежной системы происходит, после оплаты идет возврат на сайт и возвращаются две переменные: номер заказа и номер заказа в платежной системе.

Из описания работы системы:
Показать текстовый блок

Что нужно делать дальше чтобы заказ считался завершенным если $params['order_id'] = JRequest::getString("wsb_order_num"); и $params['wsb_tid'] = JRequest::getString("wsb_tid"); не пустые (то есть имеют значения)?

P.S. Я не пишу модули на заказ! Делаю Интернет-магазин для предприятия где работаю (за зарплату).... Все застопорилось на этих гребаных модулях оплаты, так как нужно чтобы счета добавлялись автоматически в систему, видете ли оператору в западло зайти в личный кабинет платежной системы и сделать счет....

Подскажите пожалуйста!
« Последнее редактирование: 03.11.2014, 00:29:29 от vitalikos » Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #25 : 03.11.2014, 17:25:22 »

 Roll Eyes Итак мой убитый алкоголем и никотином мозг начал думать и кое до чего додумался:
Показать текстовый блок

На конец то заказ автоматически завершается в случае успешной оплаты.
Реакцию скрипта на сбои в оплате не проверял, так как пока не знаю как заставить тестовый сервер вернуть ошибку.

Как всегда появились новые вопросы Smiley:

У меня существуют следующие статусы заказов:
(Название / Код / ID)
Ожидание подтверждения и оплаты / P / 1
Подтвержден и оплачен / C / 2
Отменен /   X / 3
Возврат / R / 4
Доставка / S / 5
Оплачено / O / 6
Завершен / F / 7
Подтвержден, но не оплачен / Z / 8

Каково было мое удивление, когда при успешном платеже заказу присвоился правильный статус "Подтвержден и оплачен", как JoomShopping догадался(вычислил и т. д.)?

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

Код:
return array(1,"Order_id".$order->order_id,$pmconfigs['wsb_tid'],"GOOD!");

В моем понимании "говорит JoomShopping": Оплата прошла, ID заказа, Номер внутри платежной системы, Текст описывающий транзакцию. Я прав?

Почему же тогда в админке если нажать на "молотки" (переход в Transaction заказа ) написано: 1, 2014-11-03 15:58:51, 1, Подтвержден и оплачен,   3 ?
Для кого (или чего) в return последние три параметра?
« Последнее редактирование: 03.11.2014, 17:33:21 от vitalikos » Записан
dmitry_stas
Профи
********

Репутация: +795/-4
Offline Offline

Сообщений: 7741



« Ответ #26 : 03.11.2014, 18:25:39 »

Цитировать
Как мне присваивать статус заказа тот который я хочу в зависимости от того что вернула платежная система?

для начала вам надо ассоциировать ваши статусы со типами статусов в ЖШ. для понимания посмотрите настройки пейпела и файл adminparamsform.php у него. типы статусов - я имею в виду в контроллере checkout массив
       
Код:
$types_status = array(0=>0, 1=>$pmconfigs['transaction_end_status'], 2=>$pmconfigs['transaction_pending_status'], 3=>$pmconfigs['transaction_failed_status'], 4=>$pmconfigs['transaction_cancel_status'], 5=>$pmconfigs['transaction_open_status'], 6=>$pmconfigs['transaction_shipping_status'], 7=>$pmconfigs['transaction_refunded_status'], 8=>$pmconfigs['transaction_confirm_status'], 9=>$pmconfigs['transaction_complete_status'], 10=>$pmconfigs['transaction_other_status'], 99=>0);

соответственно, после того как вы настроите эту привязку, вы при проверке в платежном плагине возвращаете номер в массиве статусов. например
Код:
return array(1, "Order_id".$order->order_id,$pmconfigs['wsb_tid'],"GOOD!");
означает что заказу будет присвоен статус, который привязан к $pm_params['transaction_end_status']  в adminparamsform.php

по поводу
Цитировать
В моем понимании "говорит JoomShopping": Оплата прошла, ID заказа, Номер внутри платежной системы, Текст описывающий транзакцию.
в том же контроллере если посмотреть, то в возвращаемом массиве используются всего 2 первых элемента. первый - это номер статуса. второй - это текст описания.
Код:
        $res = $payment_system->checkTransaction($pmconfigs, $order, $act);
        $rescode = $res[0];
        $restext = $res[1];
то, что вы туда напхали 100500 элементов - не имеет ни малейшего значения. и то, второй элемент используется только если номер статуса заказа
отличен от 1 (т.е. не transaction_end_status, т.е. по идее не оплачен, хотя строго говоря для transaction_end_status вы можете задать и любой другой статус вместо оплаченного, просто тогда в плагине при успешной оплате вам надо будет возвращать не 1), чтобы в случае неоплаты записать в лог текст ошибки.
Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #27 : 04.11.2014, 00:02:19 »

Спасибо большое за разъяснения, теперь вроде все понятно, но по поводу этого:
Цитировать
в том же контроллере если посмотреть, то в возвращаемом массиве используются всего 2 первых элемента. первый - это номер статуса. второй - это текст описания.
Код:
$res = $payment_system->checkTransaction($pmconfigs, $order, $act);
$rescode = $res[0];
$restext = $res[1];
Позволю не согласится.
У меня в файле (версия JS 3.19.2) присутствуют такие строки (от чего и вопрос для чего они служат):
Код:
$res = $payment_system->checkTransaction($pmconfigs, $order, $act);
$rescode = $res[0];
$restext = $res[1];
$transaction = $res[2];
$transactiondata = $res[3];
$status = $payment_system->getStatusFromResCode($rescode, $pmconfigs);
$order->transaction = $transaction;
$order->store();
$order->saveTransactionData($rescode, $status, $transactiondata);
.....
Внимание привлекло: $order->saveTransactionData($rescode, $status, $transactiondata);

Ну вообще то по большому счету, если Вы говорите, что они роли не играют, то и фиг с ними.
Главное чтобы это не было как в предыдущих постах ( (С)Мое ):
Цитировать
Так и не понял смысл этих $act, ну и до check transaction() управление так и не доходит. Ну да и хрен с ним.
Grin
« Последнее редактирование: 04.11.2014, 00:06:16 от vitalikos » Записан
dmitry_stas
Профи
********

Репутация: +795/-4
Offline Offline

Сообщений: 7741



« Ответ #28 : 04.11.2014, 00:13:02 »

о, точно, в новых версиях в массиве есть еще 2 элемента. для сохранения транзакции. можно не использовать.
Записан
vitalikos
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 38



« Ответ #29 : 04.11.2014, 17:46:14 »

Все не слава богу....  Cry
С $return и $cancel_return разобрался, все работает.

А вот по поводу $notify_url после прочтения Developer Guide у меня ступор.
Из описания работы системы:
Показать текстовый блок

Пробовал вот так:
Показать текстовый блок
Заказ висит не законченный..... Как принять POST ответ от платежной системы при уведомлении на notify_url?

Тупо написать
Код:
return array(1,'Order_id: '.$order->order_id);
?

И не париться?
« Последнее редактирование: 04.11.2014, 18:12:20 от vitalikos » Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet