Comments (147)
quiero consumir la libreria
algo asi pero no se como hacerlo con mi propio form
from sufel.
lo que es obligatorio es esto (web de consulta para los usuarios), enviar mail es opcional.
Sufel es un API REST, el ui lo hice con angular. Tu puedes hacer tu propia interfaz y consumir el servicio, los endpoint estan definidos aqui
from sufel.
Es multiempresa, los pasos que tendrias que hacer son:
/company/create
Crear la empresa/company/add-document
Agregar un documento (xml + pdf )
Para consultar un comprobante los pasos serian:
/client/auth
Consulta segun los datos del comprobante (serie, fecha, total, etc)/client/document/xml
Descarge el xml con el token devuelto por/client/auth
/client/document/pdf
Descarge el pdf con el token devuelto por/client/auth
from sufel.
se necesita todos esos datos ?
o solo la carpeta vendor
from sufel.
estoy perdido verdad ? :')
from sufel.
si, sufel no es una libreria, es una aplicación API REST lista para ser desplagada a algun hosting, en tu caso es el cliente el que tienes que crear , puedes hacerlo usando jquery + ajax
from sufel.
podrias darme un ejemplo por favor ? nunca use una api rest
from sufel.
por ejemplo con ajax jquery , para verificar que se encuentra el comprobante:
var data = {
emisor: "2000000001",
tipo: "01",
documento: "F001-1",
fecha: "2018-03-12T00:00:00",
total: 213.23
};
$.ajax({
url: 'http://domain.com/api/client/auth',
type: 'POST',
dataType: 'json',
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data),
success: function (r) {
console.log(r.token);
}
});
from sufel.
entonces solo subo la carpeta sufel-master a un hosting y envio los datos directamente con este codigo?
from sufel.
si, o también puedes subir el archivo sufel.phar.zip que ya incluye las dependencias instaladas con composer, solo tienes que cambiar la configuracion de base de datos en el index.php
dentro del zip,
Las extensiones de php habilitadas son:
- zip
- pdo_mysql
Para poder consultar primero debes subir un xml + pdf, la documentacion del api esta aqui
from sufel.
ya subi sufel.phar.zip al hosting y cree la bd ahora en que directorio subo el xml y el pdf
from sufel.
from sufel.
from sufel.
despues de crear la base de datos, necesitas crear las tablas, aqui estan los querys, los archivos se suben por el API, para que los registre en la base de datos y posteriormente se pueda consultar.
veo que hace falta un manual.
from sufel.
la bd con las tablas y la conexion tambien ya esta, pero codigo para subir los archivos ? o como se hace
from sufel.
ahora desde mi local host estoy usando esto al hacer click espero "algo"
from sufel.
:'(
from sufel.
tienes que subir los archivos para poder consultar, aqui esta la documentacion del API , los archivos se envian codificado en base64
{
xml: "--content-base64-xml--",
pdf: "--content-base64-pdf--"
}
from sufel.
dame un ejemplo amigo por favor como subir un archivo desde localhost a mi hosting http://rodolfomv.com/
from sufel.
from sufel.
from sufel.
y el jquery?
from sufel.
no es esa foto que subi el jquery ? :(
from sufel.
en que lado colocaste el jquery.
ejm:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
from sufel.
ahh que imbecil soy!!!
from sufel.
from sufel.
creo que la direccion esta mal ? o que puede ser ese error
from sufel.
from sufel.
segun la documentacion los aprametros son incorrectos, pero no veo el error en el codigo
from sufel.
from sufel.
ayudame amigo en que estoy fallando
from sufel.
requiere autenticacion, el valor que pusiste en SUFEL_ADMIN=xxxxx , tienes que enviarlo en la url.
/api/company/create?token=xxxxx
from sufel.
hola amigo con el token ya me registra la compañia, mi duda sigue siendo al subir el archivo tiene que ser con un imput (type file) ?
from sufel.
en la documentación dice "string" o solamente es el nombre lo que se sube ? entonces como harian para descargar el pdf o el xml
from sufel.
from sufel.
from sufel.
Para subir el archivo tendrías que hacerlo usando PHP, el token de administrador es solo para crear las empresas, como es multiempresa cada una tiene que autenticarse aqui : /company/auth
se tiene que enviar esto:
{
"ruc": "20000000001",
"password": "xxxxxx"
}
esto devolvera un token :
{
"token": "tyyuuidgguiiixdhhh",
"expire": 222
}
from sufel.
Después de tener el token podras enviar el archivo:
$xml = base64_encode(file_get_contents("2222.xml"));
$pdf= base64_encode(file_get_contents("2222.pdf"));
$content = ['xml' => $xml, 'pdf' => $pdf];
$headers = ['Authorization' => 'Bearer YOUR-TOKEN-HERE'];
en php que libreria usas para realizar peticiones HTTP?
ejm: curl
from sufel.
no se me ocurre como enviar esos datos amigo
from sufel.
si pudieras copiar es codigo aqui como texto y no imagen podria ayudarte
from sufel.
disculpa no se como se ordena D:
from sufel.
$xml = base64_encode(file_get_contents("10486113532-01-F001-000100.xml"));
$pdf= base64_encode(file_get_contents("10486113532-01-F001-000100.pdf"));
$content = ['xml' => $xml, 'pdf' => $pdf];
$headers = ['Authorization' => 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzY29wZSI6WyJjb21wYW55Il0sInJ1YyI6IjEwNDg2MTEzNTMyIiwiZXhwIjoxNTIxNjYzMjg3fQ.urQL9i1r9ku2p3uin0E16NUBbYlk1nWIVBUXq6nWdPw'];
function myFunction() {
var data = {
xml: "$xml",
pdf: "$pdf"
}
$.ajax({
url: 'http://localhost:82/sufel/api/company/add-document?Authorization=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzY29wZSI6WyJjb21wYW55Il0sInJ1YyI6IjEwNDg2MTEzNTMyIiwiZXhwIjoxNTIxNjYzMjg3fQ.urQL9i1r9ku2p3uin0E16NUBbYlk1nWIVBUXq6nWdPw',
type: 'POST',
dataType: 'json',
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data),
success: function (r) {
console.log(r.token);
}
});
}
from sufel.
$xml = base64_encode(file_get_contents("10486113532-01-F001-000100.xml"));
$pdf= base64_encode(file_get_contents("10486113532-01-F001-000100.pdf"));
$content = ['xml' => $xml, 'pdf' => $pdf];
?>
function myFunction() {
var data = {
xml: "<?php echo $xml?>",
pdf: "<?php echo $pdf?>"
}
$.ajax({
url: 'http://localhost:82/sufel/api/company/add-document',
type: 'POST',
dataType: 'json',
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data),
headers: {
Authorization: "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzY29wZSI6WyJjb21wYW55Il0sInJ1YyI6IjEwNDg2MTEzNTMyIiwiZXhwIjoxNTIxNjYzMjg3fQ.urQL9i1r9ku2p3uin0E16NUBbYlk1nWIVBUXq6nWdPw"
}
success: function (r) {
console.log(r);
}
});
}
from sufel.
perfecto amigo ya me guarda el archivo probe hacer la consulta y es correcto, ahora no se como capturo la respuesta y lo muestro(solo aparece en consola) o como puede descargar o ver el pdf
from sufel.
function myFunction() {
var data = {
emisor: "10486113532",
tipo: "01",
documento: "F001-000100",
fecha: "2018-03-15",
total: 120.00
};
$.ajax({
url: 'http://localhost:82/sufel/api/client/auth',
type: 'POST',
dataType: 'json',
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data),
success: function (r) {
console.log(r.token);
}
});
}
from sufel.
estas son las url para consultar:
/client/document/info
/client/document/xml
/client/document/pdf
se tiene que enviar el token que te devolvio arriba en los headers del ajax
from sufel.
todo sale asi, pero los consultantes no podran usar asi :'v
from sufel.
es formato raw del PDF, hay unas librerias para guardar ese pdf como el que se usa en sufel-angular,
from sufel.
alguna forma de abrir o mostrar el info o pdf que no sea en la consola ?
from sufel.
si puedes guiarte del ejemplo sufel-angular, alli hace todos los pasos que has hecho
from sufel.
la verdad no entiendo nada de sufel-angular :c
from sufel.
hola amigo, por alguna razón ahora me vuelve a decir "401 (Unauthorized)" envie otro documento y copie el token y nada :( (las api rest son muy complicados :'()
from sufel.
el tema es la seguirdad, el token expira en pocas horas, por ello te devuelve un token y expire (esta en formato), alli verificas que el token ya vencio y tienes que volver a solicitarlo como la primera vez.
var expire = new Date(data.expire * 1000);
console.log(expire);
con eso puedes saber la fecha y hora exacta de expiracion
from sufel.
este es el ultimo paso que me falta y es lo mas complicado :( como programo para que se suba a la api automaticamente al recibir el cdr, si nisiquiera logro mostrar la info,pdf o xml al hacer la consulta al api peor aun teniendo que cambiar los tokens :(
from sufel.
subir los comprobantes eso se puede hacer desde PHP, no te recomiendo que lo hagas por js, por que tendrías que colocar el token. y entonces cualquiera podria subir los archivos. En php todo se realizaria desde el servidor.
from sufel.
y como subiria y consultaria sinajax y jquery ? como se hace en php
from sufel.
lo que quiero es eso que desde mi servidor mismo se suba y tambien se consulte
from sufel.
para ello se usa curl (php-extension), tambien hay librerias como Guzzle, php-curl-class
http://php.net/manual/es/book.curl.php
from sufel.
me das un codigo basico amigo para subir el archivo ?
from sufel.
estoy probando con este codigo y nisiquiera habre solo se queda cargando
`<?php
$url = 'http://localhost:82/sufel/api/company/auth';
$data = array("ruc" => "10486113532", "password" => "fer123");
$data = json_encode($data);
echo CurlSendPostJson($url,$data);
function CurlSendPostJson($url='http://localhost:82/sufel/api/company/auth',$datajson){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $datajson);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($datajson)));
return $result = curl_exec($ch);
}
?>`
from sufel.
$url = 'http://localhost:82/sufel/api/client/document/info';
$data = array("emisor" => "10486113532",
"tipo" => "01",
"documento" => "F001-000100",
"fecha" => "2018-03-15",
"total" => 120.00
);
$data = json_encode($data);
// Send post data Json format
echo CurlSendPostJson($url,$data);
// send curl post
function CurlSendPostJson($url,$datajson){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $datajson);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($datajson)));
//curl_setopt($ch,CURLOPT_HEADER, true); //if you want headers
return $result = curl_exec($ch);
}
from sufel.
LO ENVIE TAMBIEN CON GET Y NO RETORNA NADA NI BOTA ERROR NADA DE NADA
from sufel.
con este codigo me retorna el token y expire]
$url = 'http://localhost:82/sufel/api/company/auth';
// Curl get method
$data = array("ruc" => "10486113532",
"password" => "fer123"
);
$data = json_encode($data);
echo CurlSendPostJson($url,$data);
// send curl post
function CurlSendPostJson($url,$datajson){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $datajson);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($datajson)));
//curl_setopt($ch,CURLOPT_HEADER, true); //if you want headers
return $result = curl_exec($ch);
}
from sufel.
from sufel.
pero para hacer consulta para el pdf,info,xml
nada no encuentro referencia
from sufel.
tambien se tiene que enviar token ?
$xml = base64_encode(file_get_contents("10486113532-01-F001-000100.xml"));
$pdf= base64_encode(file_get_contents("10486113532-01-F001-000100.pdf"));
$url = 'http://localhost:82/sufel/api/company/add-document';
// Curl get method
$data = array("xml" => $xml,
"pdf" => $pdf
);
$data = json_encode($data);
echo CurlSendPostJson($url,$data);
// send curl post
function CurlSendPostJson($url,$datajson){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $datajson);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($datajson)));
//curl_setopt($ch,CURLOPT_HEADER, true); //if you want headers
return $result = curl_exec($ch);
}
from sufel.
y el token de seguridad para subir el documento.
array('Content-Type: application/json','Content-Length: ' . strlen($datajson), 'Authorization: Bearer TOKEN');
from sufel.
ya me sale amigo, lo que no entiendo es como hago para enviarlo directamente desde mi sistema al momento de recibir el cdr ya que generar primero el token luego configurar para enviar el xml y pdf me resulta impensable tiene que ser automatico todo
from sufel.
iluminame giansalex tu eres el unico que puede ayudarme, ya tengo alg cerebral tratando de encontrar una solucion
from sufel.
como haria amigo para decodificar(base64_decode($pdf)) un pdf que guarde en mi bd y mostrarlo
from sufel.
probe con este codigo y manda error
$xml = base64_encode(file_get_contents("10486113532-01-F001-000052.xml"));
$pdf= base64_encode(file_get_contents("10486113532-01-F001-000052.pdf"));
$name = base64_decode($pdf);
//file_get_contents is standard function
$content = $name;
header('Content-Type: application/pdf');
header('Content-Length: '.strlen( $content ));
header('Content-disposition: inline; filename="'.$name.'"');
header('Cache-Control: public, must-revalidate, max-age=0');
echo $content;
from sufel.
y si uso las consultas de sunat no sirve ? :'( no puedo usar la api rest no lo entiendo
from sufel.
la consulta de SUNAT solo te permite saber si el comprobante ha sido informado, pero no tienes acceso al XML ni PDF
from sufel.
existe alguna manera de usar sufel sin el token ? solo enviar y consutlar
from sufel.
o como podria hacer otro sistema o codigo y alojarlo en un hosting donde solo se suba y consulte archivos ayudame amigo
from sufel.
de la misma forma, si ya los tienes guardado los archivos, solo creas un formulario con los datos a consultar, luego en el servidor consultas en la base de datos, si existe la venta devuelves los archivos
from sufel.
esta bien amigo lo hare siguiendo tu modelo, es recomendable subir los archivos en base64 o puedo hacerlo como archivos .pdf y .xml ?
from sufel.
lo intentare hoy mas con sufel solo amigo ayudame a capturar el token env ariables al recibirlos por curl
from sufel.
este codigo me regresa el token y expire y me los muestra en pantalla y quiero ponerlos en variables como seria ?
$url = 'http://localhost:82/sufel/api/company/auth';
// Curl get method
$data = array("ruc" => "10000000002",
"password" => "fer123"
$data = json_encode($data);
echo CurlSendPostJson($url,$data);
// send curl post
function CurlSendPostJson($url,$datajson){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $datajson);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($datajson)));
//curl_setopt($ch,CURLOPT_HEADER, true); //if you want headers
return $result = curl_exec($ch);
from sufel.
from sufel.
en el result te devuelve un cadena json:
$result = curl_exec($ch);
$obj = json_decode($result);
return $obj->token;
from sufel.
quiero ponerlo $token = "tokenrecibido" , $expire = "expirerecibido"
from sufel.
Notice: Trying to get property 'token' of non-object in C:\xampp\htdocs\sufel\auth.php on line 20
si no le pongo return no funciona ?
$result = curl_exec($ch);
$obj = json_decode($result);
echo $obj->token;
from sufel.
probablemente no recibiste respuesta, json_decode retorna false si no pudo decodificar:
$result = curl_exec($ch);
$obj = json_decode($result);
if ($obj === false) {
return;
}
$token = $obj->token;
$expire =$obj->expire;
from sufel.
me bota error cuando no tiene return, y cuando pongo return se imprime solo en la pantalla en un array
Notice: Trying to get property 'token' of non-object in C:\xampp\htdocs\sufel\auth.php on line 24
Notice: Trying to get property 'expire' of non-object in C:\xampp\htdocs\sufel\auth.php on line 25
from sufel.
pero al parecer no decodifica el array y lo pone en las variables
from sufel.
no reconoce las variables cuando quiero usar fuera de la funcion CurlSendPostJson
from sufel.
es por que solo existen dentro de la funcion, por ello debes retornarlos, o retornar $obj
y afuera acceder a token y expire
from sufel.
$url = 'http://localhost:82/sufel/api/company/auth';
// Curl get method
$data = array("ruc" => "10000000002",
"password" => "fer123"
);
$data = json_encode($data);
echo CurlSendPostJson($url,$data);
function CurlSendPostJson($url,$datajson){
// send curl post
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $datajson);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($datajson)));
//curl_setopt($ch,CURLOPT_HEADER, true); //if you want headers
$result = curl_exec($ch);
$obj = json_decode($result);
return $obj;
}
echo $token = $obj->token;
from sufel.
Notice: Undefined variable: obj in C:\xampp\htdocs\sufel\auth.php on line 22
Notice: Trying to get property 'token' of non-object in C:\xampp\htdocs\sufel\auth.php on line 22
from sufel.
$obj solo existe dentro de la funcion tienes que capturarlo al retornar el valor de la funcion.
$obj = function_to_request();
from sufel.
no se si soy un bruto de m... XD pero no sale
from sufel.
maldita sea tan complicado es obtener una maldita variable de una función ?
from sufel.
lo hice ahora sin funcion
$url = 'http://localhost:82/sufel/api/company/auth';
// Curl get method
$data = array("ruc" => "10000000002",
"password" => "fer123"
);
$data = json_encode($data);
// send curl post
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($data)));
//curl_setopt($ch,CURLOPT_HEADER, true); //if you want headers
$result = curl_exec($ch);
$obj = json_decode($result);
from sufel.
al darle echo a $result me muestra el array pero al poenr este codigo echo $token=$obj->token; me dice:
Notice: Trying to get property 'token' of non-object in
from sufel.
y al usar esto echo $token=$obj['token'];
echo $expire=$obj['expire'];
no muestra nada :(
from sufel.
tal vez sea la version de PHP, pero el json_decode debe devolver un object, prueba viendo que tipo de datos salen:
var_dump($obj);
from sufel.
null
from sufel.
mi php es 7.2.0
from sufel.
y en result:
$result = curl_exec($ch);
var_dump($result);
from sufel.
Related Issues (15)
- Convert sufel to package
- API Idempotente para agregar documentos
- Adaptando a sufel para UBL2.1 HOT 7
- Como consumir sufel?
- Descarga de XML devuelve caracteres errados HOT 7
- publish to phar
- especificar que carpeta contiene los archivos a subir HOT 5
- diferenciar el mensaje de respuesta cuando el documento ya existe en la BD HOT 1
- Pruebas para anular documento HOT 1
- Enviar correo al guardar el documento HOT 3
- Consulta por user & password
- download file as binary
- Voided document
- Add Storage Provider
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sufel.