Qué tal nuevamente.
Analizando el código que nos compartes me encantaría hacer un comentario:
Si estás haciendo una búsqueda sobre attachments no es necesario utilizar el filtro has_attachments puesto que ya estás trabajando con dicha colección. Attachments::get tiene la funcionalidad de traer todos los documentos que son archivos adjuntos i.e. attachments.
Sin embargo, entendiendo un poco más el flujo que deseas seguir te recomiendo que hagas una consulta previa en transacciones. Por ejemplo:
$options = [
‘has_attachment’ => true,
‘keywords’ => ‘emitidas’,
];
$transactions = paybook\Transaction::get($session, null, $options);
Importante: aquí options va en la tercera posición a diferencia de Attachments::get. Aquí si es necesario el filtro has_attachments puesto que estás haciendo una consulta en Transactions.
Una vez hecho esto puedes iterar en las transacciones y encontrarás que cada transacción tiene un atributo attachments. Podrías hacer algo como esto:
foreach ($transactions as $i => $transaction) {
$id_attachment = $transaction->attachments[0][‘id_attachment’]
…
…
}
Teniendo el objeto attachment, puedes descargar el archivo adjunto fácilmente:
$id_attachment = $attachment[‘id_attachment’];
$xml_parsed = paybook\Attachment::get($session, null, $id_attachment, $extra = true);
Tenemos un recurso en PHP que te puede ser de mucha utilidad, básicamente es un ejemplo de como descargar los archivos adjuntos ligados a transacciones:
“https://github.com/Paybook/sync-php/tree/master/examples/json_invoices”
Puedes tomar éste script como base y únicamente agregarle el filtro por keywords = ‘emitidas’.
Debe funcionar