2016-12-22 4 views
0

Я новичок как разработчик Prestashop, и я пытаюсь создать PaymentModule. Я должен показать свой способ оплаты, но я не могу продолжить покупку, потому что я не очень хорошо знаю, что он работает.Prestashop displayPaymentReturn hook url

Кто-нибудь знает, где я должен перенаправить, чтобы запустить мой метод hoodDisplayPaymentReturn?

Я буду очень рад, если кто-нибудь объяснит мне всю навигационную карту, чтобы совершить покупку.

В любом случае, где я могу найти связь между крючками и страницами?

ответ

0

, когда у меня есть новый модуль для оплаты, я полагаюсь на самый простой, предоставляемый PrestaShop: bankwire.

внутри вы можете найти 3 крючка.

HookPayment:

public function hookPayment($params) 
{ 
    if (!$this->active) 
     return; 
    if (!$this->checkCurrency($params['cart'])) 
     return; 

    $this->smarty->assign(array(
     'this_path' => $this->_path, 
     'this_path_bw' => $this->_path, 
     'this_path_ssl' => Tools::getShopDomainSsl(true, true).__PS_BASE_URI__.'modules/'.$this->name.'/' 
    )); 
    return $this->display(__FILE__, 'payment.tpl'); 
} 

hookDisplayPaymentEU:

public function hookDisplayPaymentEU($params) 
{ 
    if (!$this->active) 
     return; 

    if (!$this->checkCurrency($params['cart'])) 
     return; 

    $payment_options = array(
     'cta_text' => $this->l('Pay by Bank Wire'), 
     'logo' => Media::getMediaPath(_PS_MODULE_DIR_.$this->name.'/bankwire.jpg'), 
     'action' => $this->context->link->getModuleLink($this->name, 'validation', array(), true) 
    ); 

    return $payment_options; 
} 

hookPaymentReturn:

public function hookPaymentReturn($params) 
{ 
    if (!$this->active) 
     return; 

    $state = $params['objOrder']->getCurrentState(); 
    if (in_array($state, array(Configuration::get('PS_OS_BANKWIRE'), Configuration::get('PS_OS_OUTOFSTOCK'), Configuration::get('PS_OS_OUTOFSTOCK_UNPAID')))) 
    { 
     $this->smarty->assign(array(
      'total_to_pay' => Tools::displayPrice($params['total_to_pay'], $params['currencyObj'], false), 
      'bankwireDetails' => Tools::nl2br($this->details), 
      'bankwireAddress' => Tools::nl2br($this->address), 
      'bankwireOwner' => $this->owner, 
      'status' => 'ok', 
      'id_order' => $params['objOrder']->id 
     )); 
     if (isset($params['objOrder']->reference) && !empty($params['objOrder']->reference)) 
      $this->smarty->assign('reference', $params['objOrder']->reference); 
    } 
    else 
     $this->smarty->assign('status', 'failed'); 
    return $this->display(__FILE__, 'payment_return.tpl'); 
} 
0

Чтобы разработать платежный модуль, вы должны использовать 2 основных крючка: payment и paymentReturn.

В крючке payment вы должны указать свой вариант оплаты с конкретной информацией. Проверьте модуль bankwire, чтобы увидеть рабочий пример. В поле paymentReturn вы должны указать информацию о подтверждении платежа (или ошибке).

Когда пользователь нажимает ссылку на вашу опцию платежа (отображается в payment hook), вы должны выполнить некоторую проверку и обработку. После того, как платеж выполнен (успешно или нет), вы должны позвонить в свою функцию модуля validateOrder (это функция родительского класса PaymentModule вашего модуля). После этого вы должны быть перенаправлены на контроллер, который будет выполнять крючок paymentReturn.

Это основной процесс. Я настоятельно рекомендую вам проверить банковские линии и другие платежные модули, чтобы лучше понять, как сделать свой собственный платежный модуль, потому что это непростая задача для новичков.

Удачи.