Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/11/2013, 13:53
kiko's
 
Fecha de Ingreso: julio-2005
Mensajes: 310
Antigüedad: 18 años, 9 meses
Puntos: 36
Respuesta: "Transacciones" PHP

Os lo explico con código:

Código PHP:
 // Si la petición es correcta y segura
            
if (strcasecmp($peticion->firma$firma) == 0) {
                
                if (
$peticion->coderror == '000' || ($peticion->coderror == '002' && $peticion->deserror 'IdTransaccion repetido. (03010000017)' )) {
                    
$bookings = array();
                    
// Update bookings
                    
$transaccionesToBookings Admin_Model_TransaccionToBooking::getByTransaccionId($peticion->idtransaccion);
                    foreach (
$transaccionesToBookings as $transaccionToBooking) {
                        
$booking Admin_Model_Booking::getById($transaccionToBooking->bookingId);
                        
$booking->depositIsPaid 1;
                        
$booking->isConfirmed 1;
                        
$booking->update();
                        
$bookings[] = $booking;
                    }

                    
// Update transaccion
                    
$transaccion Admin_Model_Transaccion::getByTransaccionId($peticion->idtransaccion);
                    
$transaccion->isPaid 1;
                    
$transaccion->update();
                    
                    
// Send Email Confirmation
                    
$this->_sendBookingEmail($bookings$booking->getCustomer(), $transaccion);
                }
                
                
$paymentData = array();
                
$paymentData['amount'] = $transaccion->amount;
                
$paymentData['concept'] = $peticion->coderror ' - ' $peticion->deserror;
                
$paymentData['transaction'] = $peticion->idtransaccion;
                
$paymentData['payment_method'] = 'TPV';
                
Admin_Model_Payment::createNewPayment($paymentData); 
Todo viene a raíz de un problema que tuve hoy. La funcion $this->_sendBookingEmail() falló. Entonces se ejecutaron todas las instrucciones hasta ahí, actualizando la base de datos. Pero al detenerse en esa línea debido al fallo el script no continuó, luego en la base de datos faltaba la información que proporciona la última instrucción:
Admin_Model_Payment::createNewPayment($paymentData )
Esa instrucción añade una nueva fila con los datos del pago.

El código anterior en resumidas cuentas haría:

- comprueba que la petición viene del TPV
- marca las reservas como pagadas
- envía email de confirmación
- añade el resultado de la operación a la base de datos (puede ser una operación fallida o no).