0 Пользователей и 1 Гость просматривают эту тему.
  • 49 Ответов
  • 5972 Просмотров
*

vitalikos

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Модуль оплаты что не так ?
« : 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

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #1 : 27.08.2014, 12:39:30 »
а что это такое? это платежный шлюз или что? или типа робокассы?

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

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Модуль оплаты что не так ?
« Ответ #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/>";

то с какого перепугу они должны устанавливаться? :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

vitalikos

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #3 : 27.08.2014, 13:09:59 »
dmitry_stas Спасибо за подсказку... но ....
Приведу текст из описания API:
Спойлер
[свернуть]
То есть автор документа свято верит в себя ^-^.
Я как понимаю, что на момент начало Аутентификации куки еще как бы нет... Но исходя из кода не понятно что же тогда передать вместо $cookies в первый раз?
« Последнее редактирование: 27.08.2014, 13:19:25 от vitalikos »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Модуль оплаты что не так ?
« Ответ #4 : 27.08.2014, 14:00:41 »
понятия не имею. видимо надо обратиться к автору :) ну или не проверять куки в первый вызов функции.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

vitalikos

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #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

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #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

  • Легенда
  • 13151
  • 1234 / 8
Re: Модуль оплаты что не так ?
« Ответ #7 : 27.08.2014, 15:48:41 »
я извиняюсь, вот все что вы написали, какое отношение это имеет к кукам и их неустановке? или я не понял, и проблема с куками решена?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

vitalikos

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #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

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #9 : 29.08.2014, 16:26:14 »
 8)
После нервотрепки с 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

  • Легенда
  • 13151
  • 1234 / 8
RE: Модуль оплаты что не так ?
« Ответ #10 : 29.08.2014, 17:17:03 »
если скажем одновременно на сайте в одно и тоже время скрипт будет обрабатывать более одного пользователя?

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

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

нужны для передачи параметров между магазином и платежным сервисом и проверки оплаты соответственно. опять таки, теоретически обойтись без них можно. но во-первых это изобретение велосипеда, а во-вторых судя по коду у вас в частности пока это не получилось :) например, откуда методу complete известно о $myparams ?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

vitalikos

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #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

  • Легенда
  • 13151
  • 1234 / 8
Re: Модуль оплаты что не так ?
« Ответ #12 : 11.09.2014, 11:48:17 »
showEndForm и complete вызываются в абсолютно разных скриптах. используйте например сессию для передачи параметров между ними.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

vitalikos

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #13 : 17.09.2014, 11:48:59 »
... используйте например сессию для передачи параметров между ними.

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

Считываем данные:
Спойлер
[свернуть]

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

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Модуль оплаты что не так ?
« Ответ #14 : 17.09.2014, 12:07:01 »
в checkTransaction возвращайте array(0, 'тут ваш текст ошибки'). посмотрите в плагине пейпела например
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

vitalikos

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #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);
 }

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

vitalikos

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #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" - если сервер вернул ошибку

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

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

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

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

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

vitalikos

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #17 : 13.10.2014, 17:39:59 »
Люди неужели никто советом не поможет? Или я всех достал "тупыми" вопросами?  :-(
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Модуль оплаты что не так ?
« Ответ #18 : 13.10.2014, 18:53:22 »
посмотрите в controller=checkout метод step7 . при $act = cancel до checkTransaction дело не доходит вообще. и с $act = return тоже есть нюансы. используйте другой $act (свой)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

vitalikos

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #19 : 01.11.2014, 12:46:28 »
Вообще засада....
Обновился до JoomShopping 3.19.2 модуль перестал работать.
Точнее он то вроде работает, но постоянно после нажатия кнопки "подтвердить" возвращается назад и пишет "оплата отменена" (причем обидно, что эта надпись появляется не всегда).... При этом счет в систему добавляется все равно...
Не подскажете в новой версии магазина изменилось что? в плане работы модулей оплаты?
*

vitalikos

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #20 : 01.11.2014, 13:14:22 »
посмотрите в controller=checkout метод step7 . при $act = cancel до checkTransaction дело не доходит вообще. и с $act = return тоже есть нюансы. используйте другой $act (свой)
Просветите недалекого... как "завести" свой act?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Модуль оплаты что не так ?
« Ответ #21 : 01.11.2014, 13:58:52 »
ну так где задаете всякие return_url  и так далее, пишите там свой act любой, например &act=norma. и потом в checkTransaction проверяете его
Код
if ($act=='norma') {
    //успешная оплата
} else {
    //не успешная
}
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

vitalikos

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #22 : 02.11.2014, 15:39:50 »
Вроде починил...
Спойлер
[свернуть]

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

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

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

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

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Модуль оплаты что не так ?
« Ответ #23 : 02.11.2014, 15:49:48 »
Почему не сохраняются заказы в магазине (раздел "Заказы")?

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

Так и не понял смысл этих $act, ну и до check transaction() управление так и не доходит. Ну да и хрен с ним.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

vitalikos

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #24 : 02.11.2014, 23:23:01 »
Уважаемый dmitry_stas, объясните пожалуйста для дибила на пальцах что я делаю не так в этом коде:
Спойлер
[свернуть]

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

Из описания работы системы:
Спойлер
[свернуть]

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

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

Подскажите пожалуйста!
« Последнее редактирование: 02.11.2014, 23:29:29 от vitalikos »
*

vitalikos

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #25 : 03.11.2014, 16:25:22 »
 ::) Итак мой убитый алкоголем и никотином мозг начал думать и кое до чего додумался:
Спойлер
[свернуть]

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

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

У меня существуют следующие статусы заказов:
(Название / Код / 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, 16:33:21 от vitalikos »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Модуль оплаты что не так ?
« Ответ #26 : 03.11.2014, 17: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

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #27 : 03.11.2014, 23: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() управление так и не доходит. Ну да и хрен с ним.
;D
« Последнее редактирование: 03.11.2014, 23:06:16 от vitalikos »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Модуль оплаты что не так ?
« Ответ #28 : 03.11.2014, 23:13:02 »
о, точно, в новых версиях в массиве есть еще 2 элемента. для сохранения транзакции. можно не использовать.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

vitalikos

  • Осваиваюсь на форуме
  • 37
  • 2 / 0
Re: Модуль оплаты что не так ?
« Ответ #29 : 04.11.2014, 16:46:14 »
Все не слава богу....  :'(
С $return и $cancel_return разобрался, все работает.

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

При извещении о платеже
После совершения удачного платежа, система webpay.by будет отсылать специально сформированный POST-запрос по адресу, указанному в поле wsb_notify_url Интернет-ресурса.
В этом запросе содержится информация по платежу. Полученную информацию Интернет-ресурс должен проверить в соответствии с требованиями выполнения заказа и ответить на запрос кодом: "HTTP/1.0 200 OK".

Поля, содержащиеся в запросе:
Спойлер
[свернуть]
-->
[свернуть]

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

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

И не париться?
« Последнее редактирование: 04.11.2014, 17:12:20 от vitalikos »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль карусели товаров JoomShopping на Swiper.js для Joomla

Автор sergeytolkachyov

Ответов: 1
Просмотров: 369
Последний ответ 10.01.2024, 19:54:00
от sergeytolkachyov
Модуль Сбероплата - перестал корректно завершать заказы

Автор urry

Ответов: 6
Просмотров: 466
Последний ответ 28.11.2023, 17:10:54
от kit2m2
Убрать модуль в карточке товара JoomShopping

Автор alexkraym

Ответов: 35
Просмотров: 4411
Последний ответ 21.08.2023, 07:17:53
от delchev
WT JShopping Cart - модуль Bootstrap 5 корзины для JoomShopping 5 и Joomla 4

Автор sergeytolkachyov

Ответов: 3
Просмотров: 1843
Последний ответ 23.04.2023, 09:37:35
от sergeytolkachyov
Есть ли бесплатный модуль вывода товаров для JoomShopping?

Автор Damarkuzz

Ответов: 8
Просмотров: 647
Последний ответ 29.07.2022, 15:43:48
от kit2m2