<?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; } }
<?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));
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); }