Funcionalidades en PHP

Buenas tardes, me encuentro avanzando ya el sitio pero uno de los requerimientos es el ordernar la informacion y veo que si tiene en las transacciones un order, pero no veo la forma correcta de hacer la peticion:

$trans = paybook\Transaction::get($session, $idUser); aqui pense en agregar un order=dt_transaction esto para ordernar por fecha de deposito sin embargo no me regresa nada.

Estuve leyendo esta infomacion aqui dice que si es posible solo no el agregarlo es mi dilema.

Por otra parte tambien qusiera saber si es posible al momento de traer las transacciones se puede hacer una distincion entre depositos y retiros ya que eso no lo localize en su documentacion

Espero puedan ayudarme ya que tengo la entrega el Jueves proximo :sweat_smile:.

Hola Argel buenas noches.

Respecto a la pregunta uno, si es posible. Cualquier parámetro opcional del API REST lo puedes mandar a través de la librería de PHP por medio del parámetro options que recibe el método get, por ejemplo:

$options = [
‘order’ => ‘dt_transaction’,
];

$bank_transactions = paybook\Transaction::get($session, null, $options);

foreach ($bank_transactions as $key => $bank_transaction) {
print_r($bank_transaction->description.’ '.$bank_transaction->dt_transaction);
}

El parámetro options es un array cuyas llaves (keys) son cualquier parámetro opcional y los valores (values) son los valores que quieras mandar para esos parámetros opcionales. Importante en caso del método transactions.get el parámetro options es el que ocupa la tercera posición.

Respecto a la pregunta dos, de momento con el API no puedes filtrar (en la consulta) entre depósitos y retiros. Sin embargo, al momento que ya tienes las transacciones puedes checar el signo de la propiedad “amount” si éste es negativo es un retiro y si es positivo es un depósito.

Saludos.

Excelente Hugo muchisimas gracias con eso es mas que suficiente! que tengas un muy buen fin de semana espero ya dejarlos descanzar jajaja… :grin:

Buenas tardes

Existe una forma de mandar llamar el API dentro de un controlador, solo la puedo inicializar y utiliza de dentro de las View en cakePHP.

me marca error de que no conoce el controlador paybook (lo cual es correcto por que no existe tal)
o de momento solo se puede utilizar de esta forma…

Error:

Class ‘App\Controller\paybook\Paybook’ not found
Error

Al inicializar el API

**$PAYBOOK_API_KEY = ‘MY_APIKEY’; **
paybook\Paybook::init($PAYBOOK_API_KEY);

Saludos!

Hola Argel. Buen día. Para usar la librería en un controlador debes poner al inicio del código de éste lo siguiente:

use paybook;

Con eso ya no debes tener problema de importación.

Saludos.

Hugo primero que nada gracias por la solucion,

en este momento me encuentro queriendo procesar la informacion para treaerme el XML pero no se si lo esoy haciendo coreectamente ya que unicamente me trae el comprobante… asi lo pido:

me marca eror 403 la pagina cuando quiero agregar el codigo… si me podria decir la forma correcta de traer todo el xml se los agradeceria en este momento solo se trae esto:

Pero requiero a info del emisor y del receptor…

saludos…

Hola Argel. Buenos días.

Te comento para tener acceso a toda la información del XML lo que tienes que hacer es descargar estos archivos, o bien, su contenido. Para esto tienes que hacer uso de la clase Attachment que te permitirá descargar todos los archivos adjuntos, en este caso XMLs de algún usuario.

Ahora bien, puesto que Paybook maneja todo tipo de transacciones (bancarias y CFDIs) los archivos adjuntos pueden tener diferentes formatos e.g. PDF, XML, etc. En particular al consultar los catálogos del API verás los siguientes tipos de archivos adjuntos:

  1. CFDI (XML)
  2. CFDI (PDF)
  3. Cancellation Acknowledgment
  4. Sample XML

Entonces lo conveniente es filtrar los archivos adjuntos para obtener aquellos que tienen el formato que a ti te interesa, en este caso CFDI (XML). Lo primero es obtener el id del tipo de archivo adjunto de tu interés:

$attachment_types = paybook\Catalogues::get_attachment_types($session);
$xml_attachment_type_id = null;
foreach ($attachment_types as $index => $attachment_type) {
if ($attachment_type->name == ‘CFDI (XML)’) {
$xml_attachment_type_id = $attachment_type->id_attachment_type;
break;
}
}

Una vez que ya tiene el tipo de archivo adjunto que quieres descargar puedes hacer la consulta con la clase Attachment para traer todos los archivos de este tipo:

$options = [
    'id_attachment_type' => $xml_attachment_type_id,
];
$sat_attachments = paybook\Attachment::get($session, null, null, null, $options);

Importante Argel, esto te regresará un arreglo con metadata de todos los archivos adjuntos, más no los archivos adjuntos en sí, el siguiente paso consistiría en que por cada elemento del arreglo tienes que descargar el contenido, esto lo haces de la siguiente manera:

foreach ($sat_attachments as $index => $sat_attachment) {
    $url = $sat_attachment->url;
    $id_attachment = substrr($url, 1, strlen($url));
    $xml_attached = paybook\Attachment::get($session, null, $id_attachment);
}

$xml_attached será el contenido de cada XML descargado en “string”. Teniendo acceso a éste tu ya puedes parsearlo al formato que requieras para tener acceso a la información de éste.

Espero sea de tu ayuda esta información. Saludos.

Buenas tardes,

Gracias por la respuesta.

El dia de ayer tuve una reunion con el cliente en el que se vieron varios puntos y algunos de ellos acerca de la API pondre aqui las dudas aunque en realidad son de diferentes temas como el caso de Widget que no es tema de PHP igual si quieren que se haga una tema nuevo haya me comentan y lo hacemos…

Empecemos…

1.- La posibilidad poder omitir el SAT del widget.
2.- Si es puede quitar el Powered by Paybook del widget.
3.- Me comenta que el manejo de las operaciones de cuando es un retiro y cuando es un deposito en no lo ve como nos comentaron que funcionaba, es decir que si la cantidad es menor a 0 es un retiro y si es mayor es un deposito, ya que agrego una tarjeta de credito de american express y sale invertido y despues agrego una cuenta de debito y sus actividades salen alreves es decir los depositos traen valor negativo y sus retiros valor positivo ( si requieren verlo ya se encuentra en el sitio la informacion para verla directamente).
4.- Si existe la manera de mantener al dia las operaciones de tarjetas de debito ya que con la cuenta e Amex si se trae hasta el mas reciente pero en la de debito no trae nada del mes de Septiembre siendo que la informacion se pidio el dia de ayer, es decir se esta omitiendo todas las transacciones del mes acutual lo cual es un punto relevante para el funcionamiento del sitio.

Quedo en espera de sus comentarios, Saludos!