Как изменить статус заказа (через URL) и установить личный шаблон e-mail?

Автор dragonaze, 14 апреля 2015, 14:48:15

« назад - далее »

dragonaze

Привет Всем!

Создал свой метод оплаты скопируя Bankwire/Bank Cheque module. Во время заказа идет редирект на другом сайт.
Мне нужен менять статус ордера после возвращение на сайт (Кажется этот процесс идет по WebService).
Еще надо как-то создать свой статус как PS_OS_CHEQUE.

Прошу Ваша помошь.

Mr.Sen

В модуле определяете статус заказа в зависимоти от ответа сайта оплаты.
Например, если ОК, то статус MY_STATUS_ORDER или PS_OS_CHEQUE или ...
Свой статус можно создать программно или в ручную в заказы -> статусы.

dragonaze

Цитата: Mr.Sen от 14 апреля 2015, 15:03:01
В модуле определяете статус заказа в зависимоти от ответа сайта оплаты.
Например, если ОК, то статус MY_STATUS_ORDER или PS_OS_CHEQUE или ...
Свой статус можно создать программно или в ручную в заказы -> статусы.

Можно поподробнее в примерах?

tigran

Пример нужно брать у платежного сервиса, для которого пишите модуль. Что вроде такого:
$pay_sign = md5("$sum:$id_cart:$pay_password");
if($_REQUEST['SignatureValue']) == $pay_sign)) {
    // success
    // return "OK";
}

dragonaze

Цитата: tigran от 14 апреля 2015, 21:29:09
Пример нужно брать у платежного сервиса, для которого пишите модуль. Что вроде такого:
$pay_sign = md5("$sum:$id_cart:$pay_password");
if($_REQUEST['SignatureValue']) == $pay_sign)) {
    // success
    // return "OK";
}


Ya uje napisal svoy script cerez cURL, i ponimayu alqoritm cto nujno, no mne nujen sposob kak vse eto sdelat, to est mojno, kak?. obyasnite pojaluysta.

tigran

Если свой алгоритм, то как объяснять что нужно там делать?
В обычном варинате, есть ключ, ключ шифруется, с сайта оплаты возвращается ответ, сравнивается и по результату заказа или сохраняется, или отклоняется.
Но все хавист от сайта оплаты, то что он возвращает при успехе или ошибки оплаты.

dragonaze

Цитата: tigran от 19 апреля 2015, 11:13:23
Если свой алгоритм, то как объяснять что нужно там делать?
В обычном варинате, есть ключ, ключ шифруется, с сайта оплаты возвращается ответ, сравнивается и по результату заказа или сохраняется, или отклоняется.
Но все хавист от сайта оплаты, то что он возвращает при успехе или ошибки оплаты.

Давайте сделаем так - Вы можете мне сказать Этапы оплаты BankWire, то есть в каком файле что происходить )

mAgency

Вы читали - Creating a payment module ?
ЦитироватьValidating the payment
In order to register the payment validation, you must use the validateOrder() method from the PaymentModule class, using the following parameters:
(integer) id_cart: the ID of the cart to validate.
(integer) id_order_state: the ID of the order status (Awiting payment, Payment accepted, Payment error, etc.).
(float) amount_paid: the amount that the client actually paid.
(string) payment_method: the name of the payment method.
Файлы могут быть разные. Можете все делать в классе модуля. Главное чтобы создать заказ нужно использовать validateOrder и парамметры, что написаны в справке.

В модуле оплаты BankWire для этого используется конроллер - /modules/bankwire/controllers/front/validation.php
Для указания контроллера в шаблоне используется метод
/*
public function getModuleLink($module, $controller = 'default', array $params = array(), $ssl = null, $id_lang = null, $id_shop = null)
*/
{$link->getModuleLink('mymodule', 'mycontroller')}
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.

dragonaze

Цитата: mAgency от 20 апреля 2015, 10:47:55
Вы читали - Creating a payment module ?
ЦитироватьValidating the payment
In order to register the payment validation, you must use the validateOrder() method from the PaymentModule class, using the following parameters:
(integer) id_cart: the ID of the cart to validate.
(integer) id_order_state: the ID of the order status (Awiting payment, Payment accepted, Payment error, etc.).
(float) amount_paid: the amount that the client actually paid.
(string) payment_method: the name of the payment method.
Файлы могут быть разные. Можете все делать в классе модуля. Главное чтобы создать заказ нужно использовать validateOrder и парамметры, что написаны в справке.

В модуле оплаты BankWire для этого используется конроллер - /modules/bankwire/controllers/front/validation.php
Для указания контроллера в шаблоне используется метод
/*
public function getModuleLink($module, $controller = 'default', array $params = array(), $ssl = null, $id_lang = null, $id_shop = null)
*/
{$link->getModuleLink('mymodule', 'mycontroller')}


ya vse eto prochital, s Validate u mena vse ok. a seycas vishlo sleduyushaya problema. ya ispolzovayu cURL v validate.php. no on ne xochet rabotat, i ne viydet ne odnoy oshibki.

mAgency

Может ваш хостинг не подерживает работу с cURL?
Проверку в модуле делали?
/* The cURL PHP extension must be enabled to use this module */
if (!function_exists('curl_version'))
{
        $this->_errors[] = $this->l('Sorry, this module requires the cURL PHP Extension (http://www.php.net/curl), which is not enabled on your server. Please ask your hosting provider for assistance.');
        return false;
}
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.

dragonaze

Цитата: mAgency от 20 апреля 2015, 11:09:00
Может ваш хостинг не подерживает работу с cURL?
Проверку в модуле делали?
/* The cURL PHP extension must be enabled to use this module */
if (!function_exists('curl_version'))
{
        $this->_errors[] = $this->l('Sorry, this module requires the cURL PHP Extension (http://www.php.net/curl), which is not enabled on your server. Please ask your hosting provider for assistance.');
        return false;
}


ne s serverom vse v poryadke. ya v otdelnom fayle proboval, rabotaet kak nado. a v kontrollere ne otvetchaet

mAgency

Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.

dragonaze

Цитата: mAgency от 20 апреля 2015, 11:20:04
class MyModuleValidationModuleFrontController extends ModuleFrontController
{
        // здесь код


ya uje viysanil problemu, a teper mne nujen postavit svoy status na valideorder: Configuration::get('PS_OS_MYOWN'). kak mojno delat?

DarinSr

ЦитироватьМожно добавить новый статус заказа в ручную в админке, а можно в модуле:
public function install()
{
// create new order status STATUSNAME
$mystatus = array(
'invoice' => 1,
'send_email' => 1,
'module_name' => $this->name,
'color' => 'RoyalBlue',
'unremovable' => 0,
'hidden' => 0,
'logable' => 1,
'delivery' => 0,
'shipped' => 0,
'paid' => 1,
'deleted' => 0
);

if(!Db::getInstance()->autoExecute(_DB_PREFIX_.'order_state', $mystatus, 'INSERT'))
return false;
$id_order_state = (int)Db::getInstance()->Insert_ID();
$languages = Language::getLanguages(false);
foreach ($languages as $language)
Db::getInstance()->autoExecute(_DB_PREFIX_.'order_state_lang', array('id_order_state'=>$id_order_state, 'id_lang'=>$language['id_lang'], 'name'=>'Status name', 'template'=>''), 'INSERT');
   
if (!@copy(dirname(__FILE__).DIRECTORY_SEPARATOR.'img'.DIRECTORY_SEPARATOR.'logo.gif', _PS_ROOT_DIR_.DIRECTORY_SEPARATOR.'img'.DIRECTORY_SEPARATOR.'os'.DIRECTORY_SEPARATOR.$id_order_state.'.gif'))
return false;
   
Configuration::updateValue('PS_OS_STATUSNAME', $id_order_state);

dragonaze

Цитата: DarinSr от 20 апреля 2015, 14:47:32
ЦитироватьМожно добавить новый статус заказа в ручную в админке, а можно в модуле:
public function install()
{
// create new order status STATUSNAME
$mystatus = array(
'invoice' => 1,
'send_email' => 1,
'module_name' => $this->name,
'color' => 'RoyalBlue',
'unremovable' => 0,
'hidden' => 0,
'logable' => 1,
'delivery' => 0,
'shipped' => 0,
'paid' => 1,
'deleted' => 0
);

if(!Db::getInstance()->autoExecute(_DB_PREFIX_.'order_state', $mystatus, 'INSERT'))
return false;
$id_order_state = (int)Db::getInstance()->Insert_ID();
$languages = Language::getLanguages(false);
foreach ($languages as $language)
Db::getInstance()->autoExecute(_DB_PREFIX_.'order_state_lang', array('id_order_state'=>$id_order_state, 'id_lang'=>$language['id_lang'], 'name'=>'Status name', 'template'=>''), 'INSERT');
   
if (!@copy(dirname(__FILE__).DIRECTORY_SEPARATOR.'img'.DIRECTORY_SEPARATOR.'logo.gif', _PS_ROOT_DIR_.DIRECTORY_SEPARATOR.'img'.DIRECTORY_SEPARATOR.'os'.DIRECTORY_SEPARATOR.$id_order_state.'.gif'))
return false;
   
Configuration::updateValue('PS_OS_STATUSNAME', $id_order_state);

a kak budet esli nujno dpoobavit neskolko statusov?