/** * Execute curl call to api * * @param String $url * @param String $request * @param Array $params * @return Array */ static function callCurl($url, $request, $params = null) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $request); if (!isset($params)) { $params = 'no data'; } $configEntity = WrapperConfig::configEntity(); if ($request == 'POST') { $dataString = json_encode($params); curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length:' . strlen($dataString), 'F-PLUGIN: 60db2b9bf9790c1f4826429aee141291a6090c37', 'F-API-KEY:' . $configEntity['apiKey'], 'F-SECRET-KEY:' . $configEntity['apiSecret'])); } else { curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'F-PLUGIN: 60db2b9bf9790c1f4826429aee141291a6090c37', 'F-API-KEY:' . $configEntity['apiKey'], 'F-SECRET-KEY:' . $configEntity['apiSecret'])); } //Curl Logs $fp = fopen(dirname(__FILE__) . '/logs/errorlog.txt', 'a') or die('can not open log file'); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_STDERR, $fp); try { $data = curl_exec($ch); curl_close($ch); } catch (Exception $e) { print 'Exception occured: ' . $e->getMessage(); } //Api Logs $apiLogFile = dirname(__FILE__) . '/logs/apilog.txt'; $fh = fopen($apiLogFile, 'a') or die('can not open log file'); $logRow = '[' . date('d-m-Y h:s:i') . '] api_url: ' . $url . ' | api_request: ' . $request . ' | api_params: ' . json_encode($params) . ' | config_vars: ' . json_encode($configEntity) . ' | api_response: ' . $data . "\n"; fwrite($fh, $logRow); fclose($fh); //return array return json_decode($data); }
/** * Set IVA * * @param String $iva */ static function setIVA($iva) { self::$iva = $iva; }
/** * Update client information and create Invoice * * @param Int $orderNum * @param Array $orderItems * @param Array $clientData * @param String $serieInvoices * @param Int $clientW * @param String $paymentMethod * @return Array */ static function createInvoice($orderNum, $orderItems, $clientData, $serieInvoices, $clientW, $paymentMethod, $numerocuenta) { if ($clientData[0] == "") { return array('Error' => 'No se ha recibido el UID del cliente.'); } $configEntity = WrapperConfig::configEntity(); $client_uid = $clientData[0]["value"]; $clientRFC = $clientData[4]['value']; $clientFactura = self::getClient($clientRFC); $params = array('nombre' => $clientData[5]["value"], 'apellidos' => $clientData[6]["value"], 'email' => $clientData[7]["value"], 'telefono' => $clientData[8]["value"], 'razons' => $clientData[9]["value"], 'rfc' => $clientData[4]["value"], 'calle' => $clientData[10]["value"], 'numero_exterior' => $clientData[11]["value"], 'numero_interior' => $clientData[12]["value"], 'codpos' => $clientData[13]["value"], 'colonia' => $clientData[14]["value"], 'estado' => $clientData[16]["value"], 'ciudad' => $clientData[15]["value"], 'delegacion' => $clientData[15]["value"], 'save' => true, 'client_reference' => $clientW); if ($clientFactura->status == 'error') { $clientUrl = $configEntity['apiUrl'] . 'clients/create'; } else { $clientUrl = $configEntity['apiUrl'] . 'clients/' . $client_uid . '/update'; } $request = 'POST'; $processClient = WrapperApi::callCurl($clientUrl, $request, $params); if ($processClient->status != 'success') { return array('Error' => 'Ha ocurrido un error. Por favor revise sus datos e inténtelo de nuevo.'); } $itemsCollection = json_decode($orderItems); $invoiceConcepts = array(); //Adding concepts to invoice foreach ($itemsCollection as $value) { $productPrice = 0; if ($configEntity["iva"] == 'on') { $productPrice = $value->amount / 1.16; } else { $productPrice = $value->amount; } $product = array('cantidad' => 1, 'unidad' => 'Servicio', 'concept' => $value->description, 'precio' => $productPrice, 'subtotal' => $productPrice * 1); array_push($invoiceConcepts, $product); } if ($numerocuenta == '') { $num_cta = 'No Identificado'; } else { $num_cta = $numerocuenta; } $invoiceData = array('rfc' => $clientRFC, 'items' => $invoiceConcepts, 'numerocuenta' => $num_cta, 'formapago' => 'Pago en una Sola Exhibición', 'metodopago' => $paymentMethod, 'currencie' => 'MXN', 'iva' => 1, 'num_order' => $orderNum, 'seriefactura' => $serieInvoices, 'send_email' => true, 'save' => 'true'); $invoiceUrl = $configEntity['apiUrl'] . 'invoice/create'; $request = 'POST'; $createInvoice = WrapperApi::callCurl($invoiceUrl, $request, $invoiceData); if ($createInvoice->status != 'success') { return array('Error' => $createInvoice->message); } return $createInvoice; }
/** * Class constructor - initialize static configurations * * @param Array $vars */ function WrapperApp() { WrapperConfig::load(); }
<?php $invoices = WrapperHelper::getInvoices(); $index = 0; $configEntity = WrapperConfig::configEntity(); $systemURL = $configEntity['systemURL']; ?> <style media="screen"> .label-danger { background-color: #d9534f; } .label-success { background-color: #5cb85c; } table.dataTable thead th { background-image: url("../images/sort_asc.png"); background-color: #2A5E90; color: #FFFFFF; } .dataTables_wrapper .dataTables_paginate .paginate_button.current, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover, .dataTables_wrapper .dataTables_paginate .paginate_button:hover{ background: #2A5E90; color: #FFFFFF !important; border-color: #46b8da; } </style> <input type="hidden" id="systemURL" value="<?php echo $systemURL; ?> " />