<?php

require('Openpay/Openpay.php');

//Inicializamos variables
$_POST = json_decode(file_get_contents('php://input'), true);

// Datos del cliente
$nombre_cliente= $_POST['nombre_cliente'];
$email= $_POST['email'];
$no_cliente= $_POST['no_cliente'];

// Datos de la tarjeta
$token_id = $_POST['token_id'];
$deviceSessionId= $_POST['deviceSessionId'];

// Datos del plan
$id_servicio = $_POST['id_servicio'];
$concepto = $_POST['concepto'];
$nombre_concepto = $_POST['nombre_concepto'];
$precio_total = $_POST['precio_total'];

// Openpay keys
$openpay_id = $_POST["openpay_id"];
$private_key = $_POST["private_key"];

// Base de datos
$db = $_POST["db"];

   function generarPago(){
        $servername = "directoriofitness.com.mx";
        $db = "direct18_ProGymCloud";
        $username = "direct18";
        $password = "L4LL4v3M@3str@";

        $conn = new mysqli($servername,$username,$password, $db);

        date_default_timezone_set("America/Mexico_City");
        $hoy = date('Y-m-d');
        $fecha_fin = getVencimiento($hoy,$concepto);

        try {
            // Agregamos las keys para las librerís de 
            // Openpay::setProductionMode(true);
            $openpay = Openpay::getInstance($openpay_id, $private_key);
        
            $customer = array(
                 'name' => $nombre_cliente,
                //'phone_number' => $telefono,
                 'email' => $email);
        
            $chargeRequest = array(
                'method' => 'card',
                'source_id' => $token_id,
                'amount' => $precio_total,
                'description' => $nombre_concepto,		
                'device_session_id' => $deviceSessionId,
                'customer' => $customer);
            
            $charge = $openpay->charges->create($chargeRequest);
            
            $hoy = date('Y-m-d G:i:s', time());
            
            $consultaSocioServicio = "INSERT INTO socio_servicio(idServicio,idSocio,idSocioTitular,FechaSolicitud,FechaInscripcion) 
            VALUES('$id_servicio','$no_cliente','$no_cliente',NOW(),NOW());";  
            
            
            mysqli_query ($conn, $consultaSocioServicio);
            $idSocioServicio = mysqli_insert_id($conn);
            
            $consultaPagos = "INSERT INTO pagos(idSocio_servicio,Concepto,FechaPago,Importe,idUsuario,FechaInicio,FechaFin,idSucursal,Visible,Cancelado,Pago,Subtotal,CargoExtra) 
            VALUES('$idSocioServicio','$concepto','$hoy','$precio_total','2','$hoy','$fecha_fin','1','1','0','13','$precio_total','0');";
            
            mysqli_query ($conn, $consultaPagos);
            
            echo json_encode(200);
        
        } catch (OpenpayApiTransactionError $e) {
            echo json_encode('ERROR on the transaction: ' . $e->getMessage() . 
                  ' [error code: ' . $e->getErrorCode() . 
                  ', error category: ' . $e->getCategory() . 
                  ', HTTP code: '. $e->getHttpCode() . 
                  ', request ID: ' . $e->getRequestId() . ']', 0) ;
        
        } catch (OpenpayApiRequestError $e) {
            echo json_encode('ERROR on the request: ' . $e->getMessage(), 0);
        
        } catch (OpenpayApiConnectionError $e) {
            echo json_encode('ERROR while connecting to the API: ' . $e->getMessage(), 0);
        
        } catch (OpenpayApiAuthError $e) {
            echo json_encode('ERROR on the authentication: ' . $e->getMessage(), 0);
            
        } catch (OpenpayApiError $e) {
            echo json_encode('ERROR on the API: ' . $e->getMessage(), 0);
            
        } catch (Exception $e) {
            echo json_encode('Error on the script: ' . $e->getMessage(), 0);
        }
        
    }

    function getVencimiento($Fecha,$d){
    
        if($d==0)
            $d1 = date('Y-m-d', strtotime("+0 months", strtotime($Fecha)));
        else if($d==1)
            $d1 = date('Y-m-d', strtotime("+6 days", strtotime($Fecha)));
        else if($d==2)
            $d1 = date('Y-m-d', strtotime("+13 days", strtotime($Fecha)));
        else if($d==3)
            $d1 = date('Y-m-d', strtotime("+1 months", strtotime($Fecha)));
        else if($d==4)
            $d1 = date('Y-m-d', strtotime("+2 months", strtotime($Fecha)));
        else if($d==5)
            $d1 = date('Y-m-d', strtotime("+3 months", strtotime($Fecha)));
        else if($d==6)
            $d1 = date('Y-m-d', strtotime("+4 months", strtotime($Fecha)));
        else if($d==7)
            $d1 = date('Y-m-d', strtotime("+6 months", strtotime($Fecha)));
        else if($d==8)
            $d1 = date('Y-m-d', strtotime("+1 years", strtotime($Fecha)));
        else if($d==9)
            $d1 = date('Y-m-d', strtotime("-0 days", strtotime($Fecha)));
        else if($d == 97)
            $d1 = date('Y-m-d');
        else if($d == 98)
            $d1 = date('Y-m-d', strtotime("+1 months", strtotime($Fecha)));
        else if($d == 96)
            $d1 = date('Y-m-t', strtotime($Fecha));
        return $d1;
    }
?>