Magento, Creando Modulo webpay problemas en mostrar orden de compra

paolo

Miembro Activo
Se incorporó
30 Marzo 2016
Mensajes
6
Estoy creando un componente para pagar a través de webpay.

Cuando el pago es fallidop y llama a la pagina Failure.php necesito que esta muestre algunos datos de la Orden de compra (numero) pero no logro hacerlo.

En general necesito mostrar la orden de compra en la pagina(vista) Failure.php

Alguien sabe como hacer esto, necesito esta ayuda urgente o me van a despedir.
 

nibal2

pajarón nuevo
MOD
Se incorporó
15 Junio 2007
Mensajes
2.897
Hace tiempo hice uno, me base en este http://www.magentochile.cl/blog/wikis-magento/wiki-modulo-webpay-para-magento-version-rc1/

Si mal no recuerdo, cuando se realiza el pago, guardaba la id del pedido, con el mismo generaba la id con que se manejan los logs. Así, cuando tenía el retorno de transbank, podía leer el resultado.

Estos datos los guardaba en una tabla, en la DB, si era fallido o verdadero tomaba de ahí los datos necesarios, y guardaba los registros.

Lo estás creando o estas modificando uno existente?
 
Upvote 0

paolo

Miembro Activo
Se incorporó
30 Marzo 2016
Mensajes
6
El problema no es cuando el pago se relaizo bien, lo que necesito es cuando el usuario intenta pagar pero transbank rechaza el pago, este lo redirige a la pagina Failure.php y la vista de este necesito decir que su compra fue fallida y corresponde a la orden de compra n° 5 (ejemplo), y lo que no logro es obtener los datos de la orden de compra desde la vista Failure.php.

Espero se entienda!!
 
Upvote 0

paolo

Miembro Activo
Se incorporó
30 Marzo 2016
Mensajes
6
Esto es parte del controlado llamado Failure.php acá recupero el TBK_ORDEN_COMPRA y TBK_ID_SESION , el TBK_ORDEN_COMPRA es el id del pedido pero necesito el numero de la orden de compra que es la numero 5

El archivo se llama Failure.php y muestra la vista indicando al usuario que la compra fue rechazada y el numero de su orden de compra es: (no sale)
Gracias por tu ayuda..


public function execute()
{

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$this->_customerSession = $objectManager->create('Magento\Customer\Model\Session');

if ($this->_customerSession->isLoggedIn()) {
$this->_customerSession->getCustomerId();
}


if (!$this->getRequest()->isPost()) {
return;
}



try {
$data = $this->getRequest()->getPostValue();
$tbkIdSession = $data['TBK_ID_SESION'];
$tbkOrdenCompra = $data['TBK_ORDEN_COMPRA'];
// aca obtengo:
// el numero del pedido y el id session
// El numero que obtengo con $tbkOrdenCompra es el numero del pedido que
// 82 y lo que necesito es la orden de compra es la 00005



$this->_view->loadLayout();
$failureBlock = $this->_view->getLayout()->getBlock('checkout.failure');

$failureBlock->setQuote($tbkOrdenCompra);

$this->_view->renderLayout();

return;
} catch (\Magento\Framework\Exception\LocalizedException $e) {
$this->messageManager->addExceptionMessage(
$e,
$e->getMessage()
);
} catch (\Exception $e) {
$this->messageManager->addExceptionMessage(
$e,
__('We can\'t place the order.')
);
}
/** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
$resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
return $resultRedirect->setPath('checkout/cart');
}
 
Upvote 0

paolo

Miembro Activo
Se incorporó
30 Marzo 2016
Mensajes
6
Ahora si, habían unas lineas demas, asi esta el controller original.

public function execute()
{
if (!$this->getRequest()->isPost()) {
return;
}



try {
$data = $this->getRequest()->getPostValue();
$tbkIdSession = $data['TBK_ID_SESION'];
$tbkOrdenCompra = $data['TBK_ORDEN_COMPRA'];
// aca obtengo:
// el numero del pedido y el id session
// El numero que obtengo con $tbkOrdenCompra es el numero del pedido que
// 82 y lo que necesito es la orden de compra es la 00005



$this->_view->loadLayout();
$failureBlock = $this->_view->getLayout()->getBlock('checkout.failure');

$failureBlock->setQuote($tbkOrdenCompra);

$this->_view->renderLayout();

return;
} catch (\Magento\Framework\Exception\LocalizedException $e) {
$this->messageManager->addExceptionMessage(
$e,
$e->getMessage()
);
} catch (\Exception $e) {
$this->messageManager->addExceptionMessage(
$e,
__('We can\'t place the order.')
);
}
/** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
$resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
return $resultRedirect->setPath('checkout/cart');
}
 
Upvote 0

paolo

Miembro Activo
Se incorporó
30 Marzo 2016
Mensajes
6
Todavia no llego a la de éxito, copiare lo que pueda hacer a la de falla, y es lo único que me falta para terminar el proyecto, o me despiden....que mal
 
Upvote 0

nibal2

pajarón nuevo
MOD
Se incorporó
15 Junio 2007
Mensajes
2.897
Orden de compra, es algo que agregaron adicional? no recuerdo que tenga por defecto ordenes de compra.

Si es algo adicional, podrías hacer una consulta directa a la DB para obtener el numero de la orden de compra utilizando el id del pedido.
 
Upvote 0
Subir