Example #1
0
<?php

$cliente = new Cliente($id_user);
$paquetes = imprimir_paquetes(false, false, $id_user);
$productos = get_productos();
$tarjetas = get_tarjetas($id_user);
$conekta = new Pago_Conekta();
/*SI NO HAY PAQUETES NOS VAMOS*/
if (!$paquetes) {
    return;
}
$html .= '<div id="editor_compras" class="editor" data-cliente="' . $cliente->ID . '">';
/*CABECERA*/
$html .= '<div class="cabecera_editor cabecera_edit_user"></div>';
$html .= '<div id="finalizar_compra_checkout">';
$html .= '<div class="contenedorbloque1compras">';
$html .= '<div id="cont_compra_paquetes" class="columna_compra tipo_tarjeta">';
$html .= '<div class="upcoming_reservations"><h2>Selecciona el paquete que deseas comprar</h2></div>';
if ($paquetes) {
    foreach ($paquetes as $paquete) {
        $data = $paquete->data;
        $html .= '<div class="paquete_compra paquete" data-idpaquete="' . $paquete->id . '" data-precio="' . $data['precio'] . '">' . '<span class="p_c_cantidad">' . $data['cantidad'] . '</span>' . '<span class="color_gris pa_chico chico_especial">clases</span><br/>' . '<span class="p_c_precio pa_chico">' . precio($data['precio']) . '</span>' . '<span class="pa_chico color_gris">Exp: ' . $paquete->fecha_expiracion($data['expiracion']) . '</span>' . '</div>';
    }
    unset($data);
}
$html .= '</div>';
$html .= '<div class="bloque_para_finalizar tipo_tarjeta" style="display:none;">';
$html .= '<div class="upcoming_reservations"><h2>Resumen de compra</h2></div>' . '<div id="subtotales_compra" class="tipo_tarjeta">' . '<div id="resumen_compra" class="color_gris"></div>' . '<div class="subtotal_compra color_gris"><strong>Subtotal:</strong><span class="precio"></span></div>' . '</div>';
$html .= '<div class="upcoming_reservations"><h2>Seleccione la tarjeta con la cual desea realizar la compra</h2></div>';
$html .= '<div class="columna_general tipo_tarjeta">';
$html .= '<div class="cont_tarjetas_info tarjetas_user">';
 public function process_payment($invitado = false, $guardar_tarjeta = false)
 {
     require_once "conekta/Conekta.php";
     Conekta::setApiKey($this->privatekey);
     /*CREAMOS USUARIO*/
     $id_comprador = get_user_meta($this->comprador, '_id_conekta', true);
     if (!$id_comprador) {
         try {
             $comprador = get_user_by('id', $this->comprador);
             $customer = Conekta_Customer::create(array("name" => $comprador->display_name, "email" => $comprador->user_email, "cards" => array($this->token)));
             update_user_meta($this->comprador, '_id_conekta', $customer->id);
             /*COMO ES LA PRIMERA VEZ CONFIGURAMOS EL TOKEN CON LA TARJETA ACTIVA DEL USUARIO*/
             $this->token = reset($customer->cards);
             $this->token = $this->token->id;
         } catch (Conekta_Error $e) {
             //El pago no pudo ser procesado
             $mensaje = $e->getMessage();
             $this->mensajes->add_error($mensaje);
             return;
         }
     } else {
         /*ES UN USUARIO YA CREADO*/
         /*TOCA COMPROBAR QUE EL TOKEN SEA EXISTENTE*/
         $tarjetas = get_tarjetas($this->comprador);
         if (!isset($tarjetas[$this->token]) && $guardar_tarjeta) {
             try {
                 /*añadimos tarjeta al usuario*/
                 $customer = Conekta_Customer::find($id_comprador);
                 $card = $customer->createCard(array('token' => $this->token));
                 $tarjeta = array('token' => $card->id, 'nombre' => $card->name, 'digitos' => $card->last4, 'brand' => $card->brand);
                 if ($guardar_tarjeta) {
                     guardar_tarjeta_en_user($tarjeta, $this->comprador);
                 }
                 $this->token = $tarjeta['token'];
             } catch (Conekta_Error $e) {
                 //El pago no pudo ser procesado
                 $mensaje = $e->getMessage();
                 $this->mensajes->add_error($mensaje);
                 return;
             }
         }
     }
     $data_user = get_user_by('id', $this->comprador);
     /*GENERAMOS DATOS DE TRANSACCION*/
     $transaccion = array("amount" => $this->monto, "currency" => "MXN", "description" => "Compra en Síclo.com", "card" => $this->token, "details" => array("email" => $data_user->user_email, "line_items" => array()));
     /*
      **GENERAREMOS LOS DATOS DE LOS LINE_ITEMS
      **TANTO EN PRODUCTOS COMO EN PAQUETES
      */
     if ($this->paquete_objeto) {
         $transaccion['details']["line_items"][] = array("name" => "Paquete de " . $this->paquete_objeto->data['cantidad'] . " clases", "unit_price" => $this->paquete_objeto->data['precio'], "description" => "Paquete de " . $this->paquete_objeto->data['cantidad'] . " clases", "quantity" => 1, "type" => "paquete-clases");
     }
     if ($this->productos) {
         foreach ($this->productos as $producto) {
             $transaccion['details']["line_items"][] = array("name" => $producto['producto']->titulo, "unit_price" => $producto['producto']->precio, "description" => $producto['producto']->titulo, "quantity" => $producto['cantidad'], "type" => "producto-back");
         }
     }
     //CREAR PEDIDO
     $args = array('post_title' => "", 'post_status' => 'pending', 'post_type' => 'pedido', 'post_author' => $this->comprador);
     $idPedido = wp_insert_post($args);
     if ($idPedido) {
         $this->idPedido = $idPedido;
         /*GUARDAMOS ENVÍO DE DATOS*/
         update_post_meta($idPedido, 'transaccion', $transaccion);
         update_post_meta($idPedido, '_info_paquete', $this->paquete_objeto);
         update_post_meta($idPedido, '_paquete', $this->paquete);
         update_post_meta($idPedido, '_productos', $this->productos);
         update_post_meta($idPedido, '_expiracion', $this->paquete_objeto->fecha_expiracion($this->paquete_objeto->data['expiracion'], true));
         /*SE GUARDA PARA MOSTRARLO EN EL HISTORIAL*/
     } else {
         $this->mensajes->add_error('No se ha podido finalizar la transaccion.');
         return;
     }
     $transaccion["reference_id"] = urlencode($idPedido);
     try {
         $pago = Conekta_Charge::create($transaccion);
         /*GUARDAMOS SIEMPRE RESPUESTA*/
         update_post_meta($idPedido, 'respuesta_transaccion', serialize($pago));
         $tarjeta = array('token' => $this->token, 'nombre' => $pago->payment_method->name, 'digitos' => $pago->payment_method->last4, 'brand' => $pago->payment_method->brand);
         if ($guardar_tarjeta) {
             guardar_tarjeta_en_user($tarjeta, $this->comprador);
         }
         mail_de_compra_clases($idPedido);
         $this->finalizar_compra($invitado);
         return;
     } catch (Conekta_Error $e) {
         //El pago no pudo ser procesado
         $mensaje = $e->getMessage();
         $this->mensajes->add_error($mensaje);
         /*GUARDAMOS SIEMPRE RESPUESTA*/
         update_post_meta($idPedido, 'respuesta_transaccion', $mensaje);
         return;
     }
 }
Example #3
0
<?php

require_once '../../../../../wp-load.php';
global $current_user;
$mensajes = new Mensajes();
if (!isset($_POST['security']) || !isset($_POST['token']) || !is_user_logged_in()) {
    $mensajes->add_error('6969');
    die($mensajes->imprimir('JSON'));
}
$tarjeta = $_POST['token'];
$pago = new Pago_Conekta();
$pago->set_tarjeta($tarjeta);
$pago->annadir_tarjeta($current_user->ID);
$tarjetas = get_tarjetas($current_user->ID);
$pago->mensajes->add_data(html_tarjetas($tarjetas, false, false));
die($pago->mensajes->imprimir('JSON', true));
Example #4
0
 function eliminar_tarjeta_en_user($tarjeta = false, $id_User = false)
 {
     if (!$tarjeta || !$id_User) {
         return;
     }
     $tarjetas = get_tarjetas($id_User);
     if (isset($tarjetas[$tarjeta])) {
         unset($tarjetas[$tarjeta]);
     }
     update_user_meta($id_User, '_tarjetas', $tarjetas);
 }