public function pendingAction()
 {
     $paidCharges = $_GET['external_reference'];
     $status = $_GET['collection_status'];
     $status = $this->getStatusChar($status);
     $collection_id = $_GET['collection_id'];
     $entity = $_GET['payment_type'];
     $paidCharges = explode(',', $paidCharges);
     foreach ($paidCharges as $charge_id) {
         $charge = new PAP_Model_Charge();
         $charge->loadById($charge_id);
         $charge->setStatus($status);
         $charge->save();
         $payment = new PAP_Model_Payment();
         $payment->setAmount($charge->getAmount())->setControl($collection_id)->setChargeId($charge->getId())->setMethodId('MP')->setPaymentDate(date('Y-m-d H:i:s'))->setEntity($entity);
         $payment->save();
     }
 }
 public function save(PAP_Model_Charge $charge)
 {
     $data = array('user_id' => $charge->getUserId(), 'period' => $charge->getPeriod(), 'amount' => $charge->getAmount(), 'final_amount' => $charge->getFinalAmount(), 'discount' => $charge->getDiscount(), 'status' => $charge->getStatus(), 'created' => date('Y-m-d H:i:s'));
     try {
         if (null === ($id = $charge->getId())) {
             unset($data['charge_id']);
             $this->getDbTable()->insert($data);
         } else {
             $this->getDbTable()->update($data, array('charge_id = ?' => $id));
         }
     } catch (Exception $ex) {
         //TODO 6: Loguear intento de inserción duplicado
     }
 }
 public function sendpaymentAction()
 {
     $this->_helper->layout->setLayout('json');
     $callback = $this->getRequest()->getParam('jsoncallback');
     if ($callback != "") {
         // strip all non alphanumeric elements from callback
         $callback = preg_replace('/[^a-zA-Z0-9_]/', '', $callback);
     }
     $this->view->callback = $callback;
     $data = $this->_getParam("data");
     $payment_json = $data['data'][0];
     $charges = $payment_json['charges_ids'];
     $charges = explode(',', $charges);
     try {
         foreach ($charges as $charge_id) {
             $charge = new PAP_Model_Charge();
             $charge->loadById($charge_id);
             $payment = new PAP_Model_Payment();
             $payment->setAmount($charge->getAmount())->setChargeId($charge->getId())->setControl($payment_json['nro_tx'])->setMethodId($payment_json['operacion'])->setPaymentDate($payment_json['fecha']);
             if ($payment_json['operacion'] == "T") {
                 $payment->setEntity($payment_json['banco_origen']);
             } else {
                 $payment->setEntity($payment_json['banco_destino']);
             }
             $payment->save();
             $charge->setStatus('S');
             $charge->save();
         }
         $data = array();
         $data['result_code'] = '0';
         $data['result_message'] = 'Información del pago informada guardada con éxito.';
         $response = $this->getFrontController()->getResponse();
         $response->appendBody($callback . '(' . json_encode($data) . ')');
         $this->getFrontController()->setResponse($response);
     } catch (Exception $ex) {
         $data = array();
         $data['result_code'] = $ex->getCode();
         $data['result_message'] = 'Hubo un error guardando la información del pago. Por favor envíe un email a soporte@promosalpaso.com con dicha información.';
         $response = $this->getFrontController()->getResponse();
         $response->appendBody($callback . '(' . json_encode($data) . ')');
         $this->getFrontController()->setResponse($response);
     }
 }