Wenn ein Kunde an die folgende URL zurückgegeben wird (Beispiel);Ist meine Bestellung vollständig und korrekt?
http://prestashop.dev/index.php?action=completed&controller=callback&fc=module&hmac={valid-hmac}&merchant_order_id=14&module=chippin
Nach einer erfolgreichen Zahlung wird es auf dieser FrontController Sub-Klasse aufrufen;
class ChippinCallbackModuleFrontController extends ModuleFrontController
{
public function postProcess()
{
$chippin = new Chippin();
$payment_response = new PaymentResponse();
$payment_response->getPostData();
// if a valid response from gateway
if(ChippinValidator::isValidHmac($payment_response)) {
// "action" is passed as a param in the URL. don't worry, the Hmac can tell if it's valid or not.
if ($payment_response->getAction() === "completed") {
// payment_response->getMerchantOrderId() will just return the id_order from the orders table
$order_id = Order::getOrderByCartId((int) ($payment_response->getMerchantOrderId()));
$order = new Order($order_id);
// this will update the order status for the benefit of the merchant.
$order->setCurrentState(Configuration::get('CP_OS_PAYMENT_COMPLETED'));
// assign variables to smarty (copied this from another gateway, don't really understand smarty)
$this->context->smarty->assign(
array(
'order' => $order->reference,
)
);
// display this template
$this->setTemplate('confirmation.tpl');
Ich bin ziemlich neu in Prestashop. Ich bin mir nur nicht sicher, ob das technisch erledigt ist oder nicht. Die confirmation.tlp
Ansicht wird mit der order->reference
angezeigt und der Bestellstatus wird auf "Completed" aktualisiert, aber ist das alles was ich brauche?
Gibt es noch weitere Überlegungen? Ich habe die Möglichkeit, an dieser Stelle einen hookDisplayPaymentReturn aufzurufen, aber warum sollte ich?
Ich habe anscheinend eine schöne Standardrückseite. Ist das genug;
Update - Muss ich rufen Sie einfach einen Haken so etwas wie;
public function displayPaymentReturn()
{
$params = $this->displayHook();
if ($params && is_array($params)) {
return Hook::exec('displayPaymentReturn', $params, (int) $this->module->id);
}
return false;
}
was so stattdessen die 'confirmation.tpl' Seite direkt aufzurufen, sollte ich es in das tun Haken? Oder haben Sie einfach eine leere Hook-Methode? - Siehe mein Update – mikelovelyuk
Sie verwenden eine Verknüpfung zum Anzeigen der Bestätigungsvorlage. In Wirklichkeit sollten Sie zum Order-Confirmation-Controller umleiten, der den Prozess für Sie übernimmt. Und in Ihrem Modul können Sie 'displayPaymentReturn' oder' displayOrderConfirmation' anhängen. Sehen Sie meine Bearbeitung –
Werfen Sie einen Blick auf 'Bankwire'-Modul (es ist ein Standard-Prestashop-Modul). Es ist ein wirklich einfaches Modul zu verstehen. –