Reportes Las API de reportes son una colección de consultas administrativas que permiten que la aplicación de terceros realice operaciones como detalles de transacción, totales, cierre, copia de recibo, etc. GET Details (detalles) Esta solicitud recupera el reporte de transacciones financieras de la sesión activa en curso. Se envía a: https:// 172.20.10.1:2011/v1/reporting/details Petición No se requiere payload adicional. Respuesta La carga útil de respuesta exitosa incluye la lista detallada de transacciones realizadas durante la sesión: Los datos se resumen por tipo de transacción. Estos son ejemplos de petición y respuesta de GET Detalles. Aquí tienes los ejemplos en algunos lenguajes de programación. JavaScript - Fetch C# - HttpClient cURL - cURL Python - Requests Swift - URLSession Otros lenguajes var myHeaders = new Headers(); myHeaders.append("X-SOURCE", "APPNAME"); var requestOptions = { method: 'GET', headers: myHeaders, redirect: 'follow' }; fetch("https:// 172.20.10.1:2011/v1/reporting/details", requestOptions) .then(response => response.text()) .then(result => console.log(result)) .catch(error => console.log('error', error)); var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, "https:// 172.20.10.1:2011/v1/reporting/details"); request.Headers.Add("X-SOURCE", "APPNAME"); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); curl --location 'https:// 172.20.10.1:2011/v1/reporting/details' \ --header 'X-SOURCE: APPNAME' import requests url = "https:// 172.20.10.1:2011/v1/reporting/details" payload={} headers = { 'X-SOURCE': 'APPNAME' } response = requests.request("GET", url, headers=headers, data=payload) print(response.text) var request = URLRequest(url: URL(string: "https:// 172.20.10.1:2011/v1/reporting/details")!,timeoutInterval: Double.infinity) request.addValue("APPNAME", forHTTPHeaderField: "X-SOURCE") request.httpMethod = "GET" let task = URLSession.shared.dataTask(with: request) { data, response, error in guard let data = data else { print(String(describing: error)) return } print(String(data: data, encoding: .utf8)!) } task.resume() Puedes ver más ejemplos de lenguajes de programación en nuestra colección Postman. Este es el JSON de la respuesta y sus encabezados. Cuerpo Encabezados { "operation": "DETAILS", "result": { "VersionInfo": { "Release": "02.00", "Version": "02.00" }, "Operation": { "Payload": { "Merchant": { "Id": "329811087", "Location": "BADALONA", "Name": "Comercia Global Payments" }, "Report": { "BusinessUnit": { "Num": 1 }, "Currency": "978", "Date": "20200519", "FirstDate": "20200519", "FirstTransaction": "619145", "LastDate": "20200519", "LastTransaction": "619144", "Session": { "Date": "20200519", "Number": 14 }, "Time": "1943", "Transactions": [ { "AID": "A0000000041010", "ARC": "00", "ATC": "00253", "PSN": "00", "Amount": "130", "Authorization": "006074", "CardBank": "Comercia Global Payments", "CardHolder": "", "CardIssuer": "Credito", "CardNumber": "************3059", "CardTechnology": 1, "CardType": "", "Currency": "EUR", "Date": "20200519", "Id": "619145", "Language": "es", "Location": "BADALONA", "MerchantId": "329811087", "MerchantName": "Comercia Global Payments", "Modifiers": [], "OriginalTransactionDate": "", "OriginalTransactionId": "", "PinIndicator": 0, "SignatureIndicator": 1, "Status": "0", "Templates": [], "TerminalId": "00000001", "Time": "1942", "Type": "Payment" }, { "AID": "A0000000041010", "ARC": "00", "ATC": "00252", "PSN": "00", "Amount": "400", "Authorization": "006073", "CardBank": "Comercia Global Payments", "CardHolder": "", "CardIssuer": "Credito", "CardNumber": "************3059", "CardTechnology": 1, "CardType": "", "Currency": "EUR", "Date": "20200519", "Id": "619144", "Language": "es", "Location": "BADALONA", "MerchantId": "329811087", "MerchantName": "Comercia Global Payments", "Modifiers": [], "OriginalTransactionDate": "20200519", "OriginalTransactionId": "619142", "PinIndicator": 0, "SignatureIndicator": 1, "Status": "0", "Templates": [], "TerminalId": "00000001", "Time": "1941", "Type": "PreauthorizationConfirmation" } ], "TypeStatusReport": { "Amount": "530", "Quantity": 2, "Types": [ { "Payment": { "Indexes": [ 0 ], "Quantity": 1, "Amount": "130" } }, { "PreauthorizationConfirmation": { "Indexes": [ 1 ], "Quantity": 1, "Amount": "400" } } ] } }, "Session": { "Date": "20200519", "Number": 14 } }, "ResponseCode": "600" } } } Content-Type application/json Date Tue, 19 May 2020 16:49:58 GMT Access-Control-Allow-Credentials true Access-Control-Allow-Origin * Connection keep-alive Content-Encoding gzip Transfer-Encoding chunked GET Totals (totales) Recupera los totales del informe de transacciones financieras desde el último cierre del día, así como informes de transacciones categorizadas (como tipos de transacciones, categoría, multidivisa, etc.). Se envía a: https:// 172.20.10.1:2011/v1/reporting/totals Petición No se requiere payload adicional. Respuesta La respuesta de carga útil exitosa incluye la lista detallada de: Transacciones realizadas durante la sesión. Datos resumidos por tipo de transacción. Datos resumidos por categoría de transacción. ENCABEZADOS X-SOURCE NOMBRE DE LA APLICACIÓN ID de la aplicación de la persona que llama que identifica de forma exclusiva la aplicación que origina la solicitud de API. Estos son ejemplos de petición y respuesta de GET Totales. Aquí tienes los ejemplos en algunos lenguajes de programación. JavaScript - Fetch C# - HttpClient cURL - cURL Python - Requests Swift - URLSession Otros lenguajes var myHeaders = new Headers(); myHeaders.append("X-SOURCE", "APPNAME"); var requestOptions = { method: 'GET', headers: myHeaders, redirect: 'follow' }; fetch("https:// 172.20.10.1:2011/v1/reporting/totals", requestOptions) .then(response => response.text()) .then(result => console.log(result)) .catch(error => console.log('error', error)); var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, "https:// 172.20.10.1:2011/v1/reporting/totals"); request.Headers.Add("X-SOURCE", "APPNAME"); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); curl --location 'https:// 172.20.10.1:2011/v1/reporting/totals' \ --header 'X-SOURCE: APPNAME' var request = URLRequest(url: URL(string: "https:// 172.20.10.1:2011/v1/reporting/totals")!,timeoutInterval: Double.infinity) request.addValue("APPNAME", forHTTPHeaderField: "X-SOURCE") request.httpMethod = "GET" let task = URLSession.shared.dataTask(with: request) { data, response, error in guard let data = data else { print(String(describing: error)) return } print(String(data: data, encoding: .utf8)!) } task.resume() var request = URLRequest(url: URL(string: "https:// 172.20.10.1:2011/v1/reporting/totals")!,timeoutInterval: Double.infinity) request.addValue("APPNAME", forHTTPHeaderField: "X-SOURCE") request.httpMethod = "GET" let task = URLSession.shared.dataTask(with: request) { data, response, error in guard let data = data else { print(String(describing: error)) return } print(String(data: data, encoding: .utf8)!) } task.resume() Puedes ver más ejemplos de lenguajes de programación en nuestra colección Postman. Este es el JSON de la respuesta y sus encabezados. Cuerpo Encabezados { "operation": "TOTALS", "report": { "VersionInfo": { "Release": "02.00", "Version": "02.00" }, "Operation": { "Payload": { "Merchant": { "Id": "329811087", "Location": "BADALONA", "Name": "Comercia Global Payments" }, "Report": { "BusinessUnit": { "Num": 1 }, "Currency": "978", "Date": "20200521", "FirstDate": "20200522", "FirstTransaction": "432840", "LastDate": "20200522", "LastTransaction": "432853", "Session": { "Date": "20200521", "Number": 1 }, "Time": "0147", "Transactions": [ { "AID": "", "ARC": "00", "ATC": "", "PSN": "", "Amount": "58", "Authorization": "006355", "CardBank": "Comercia Global Payments", "CardHolder": "", "CardIssuer": "", "CardNumber": "************3719", "CardTechnology": 2, "CardType": "", "Currency": "EUR", "Date": "20200522", "Id": "432840", "Language": "es", "Location": "BADALONA", "MerchantId": "329811087", "MerchantName": "Comercia Global Payments", "Modifiers": [], "OriginalTransactionDate": "", "OriginalTransactionId": "", "PinIndicator": 0, "SignatureIndicator": 0, "Status": "0", "Templates": [], "TerminalId": "00000001", "Time": "0021", "Type": "Payment" }, { "AID": "A0000000041010", "ARC": "00", "ATC": "00291", "PSN": "00", "Amount": "100", "Authorization": "006356", "CardBank": "Comercia Global Payments", "CardHolder": "", "CardIssuer": "Credito", "CardNumber": "************3059", "CardTechnology": 1, "CardType": "", "Currency": "EUR", "Date": "20200522", "Id": "432853", "Language": "es", "Location": "BADALONA", "MerchantId": "329811087", "MerchantName": "Comercia Global Payments", "Modifiers": [], "OriginalTransactionDate": "", "OriginalTransactionId": "", "PinIndicator": 0, "SignatureIndicator": 1, "Status": "0", "Templates": [], "TerminalId": "00000001", "Time": "0047", "Type": "Payment" }, ], "TypeStatusReport": { "Amount": "158", "Quantity": 2, "Types": [ { "Payment": { "Indexes": [ 0, 1 ], "Quantity": 2, "Amount": "158" } } ] } }, "Session": { "Date": "20200521", "Number": 1 } }, "ResponseCode": "600" } } } Content-Type application/json Date Thu, 21 May 2020 22:53:32 GMT Access-Control-Allow-Credentials true Access-Control-Allow-Origin * Connection keep-alive Content-Encoding gzip Transfer-Encoding chunked GET Closure (cierre) Realizar una operación financiera de conciliación en la sesión actualmente activa. Al completarse, la sesión actual se cierra y cualquier transacción adicional se asociará a una nueva sesión. Se envía a: https:// 172.20.10.1:2011/v1/reporting/closure Petición No se requiere payload adicional. Respuesta La respuesta de carga útil exitosa incluye: la lista detallada de transacciones realizadas durante la sesión cerrada. los datos resumidos por tipo de transacción. los datos resumidos por categoría de transacción. ENCABEZADOS X-SOURCE NOMBRE DE LA APLICACIÓN ID de la aplicación de la persona que llama que identifica de forma exclusiva la aplicación que origina la solicitud de API. Estos son ejemplos de petición y respuesta de GET Cierre. Aquí tienes los ejemplos en algunos lenguajes de programación. JavaScript - Fetch C# - HttpClient cURL - cURL Python - Requests Swift - URLSession Otros lenguajes var myHeaders = new Headers(); myHeaders.append("X-SOURCE", "APPNAME"); var requestOptions = { method: 'GET', headers: myHeaders, redirect: 'follow' }; fetch("https:// 172.20.10.1:2011/v1/reporting/closure", requestOptions) .then(response => response.text()) .then(result => console.log(result)) .catch(error => console.log('error', error)); var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, "https:// 172.20.10.1:2011/v1/reporting/closure"); request.Headers.Add("X-SOURCE", "APPNAME"); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); curl --location 'https:// 172.20.10.1:2011/v1/reporting/closure' \ --header 'X-SOURCE: APPNAME' import requests url = "https:// 172.20.10.1:2011/v1/reporting/closure" payload={} headers = { 'X-SOURCE': 'APPNAME' } response = requests.request("GET", url, headers=headers, data=payload) print(response.text) var request = URLRequest(url: URL(string: "https:// 172.20.10.1:2011/v1/reporting/closure")!,timeoutInterval: Double.infinity) request.addValue("APPNAME", forHTTPHeaderField: "X-SOURCE") request.httpMethod = "GET" let task = URLSession.shared.dataTask(with: request) { data, response, error in guard let data = data else { print(String(describing: error)) return } print(String(data: data, encoding: .utf8)!) } task.resume() Puedes ver más ejemplos de lenguajes de programación en nuestra colección Postman. Este es el JSON de la respuesta y sus encabezados. Cuerpo Encabezados { "operation": "CLOSURE", "report": { "VersionInfo": { "Release": "02.00", "Version": "02.00" }, "Operation": { "Payload": { "Merchant": { "Id": "329811087", "Location": "BADALONA", "Name": "Comercia Global Payments" }, "Report": { "BusinessUnit": { "Num": 1 }, "Currency": "978", "Date": "20200521", "FirstDate": "20200522", "FirstTransaction": "432840", "LastDate": "20200522", "LastTransaction": "432853", "Session": { "Date": "20200521", "Number": 1 }, "Time": "0148", "Transactions": [ { "AID": "", "ARC": "00", "ATC": "", "PSN": "", "Amount": "58", "Authorization": "006355", "CardBank": "Comercia Global Payments", "CardHolder": "", "CardIssuer": "", "CardNumber": "************3719", "CardTechnology": 2, "CardType": "", "Currency": "EUR", "Date": "20200522", "Id": "432840", "Language": "es", "Location": "BADALONA", "MerchantId": "329811087", "MerchantName": "Comercia Global Payments", "Modifiers": [], "OriginalTransactionDate": "", "OriginalTransactionId": "", "PinIndicator": 0, "SignatureIndicator": 0, "Status": "0", "Templates": [], "TerminalId": "00000001", "Time": "0021", "Type": "Payment" }, { "AID": "A0000000041010", "ARC": "00", "ATC": "00291", "PSN": "00", "Amount": "100", "Authorization": "006356", "CardBank": "Comercia Global Payments", "CardHolder": "", "CardIssuer": "Credito", "CardNumber": "************3059", "CardTechnology": 1, "CardType": "", "Currency": "EUR", "Date": "20200522", "Id": "432853", "Language": "es", "Location": "BADALONA", "MerchantId": "329811087", "MerchantName": "Comercia Global Payments", "Modifiers": [], "OriginalTransactionDate": "", "OriginalTransactionId": "", "PinIndicator": 0, "SignatureIndicator": 1, "Status": "0", "Templates": [], "TerminalId": "00000001", "Time": "0047", "Type": "Payment" }, ], "TypeStatusReport": { "Amount": "158", "Quantity": 2, "Types": [ { "Payment": { "Indexes": [ 0, 1 ], "Quantity": 2, "Amount": "158" } } ] } }, "Session": { "Date": "200521", "Number": 1 } }, "ResponseCode": "500" } } } Content-Type application/json Date Thu, 21 May 2020 22:54:35 GMT Access-Control-Allow-Credentials true Access-Control-Allow-Origin * Connection keep-alive Content-Encoding gzip Transfer-Encoding chunked GET OnlineTicketCopy (copia de ticket online) Esta solicitud recupera información para una transacción determinada para volver a imprimir el recibo de la transacción. Se envía a: https:// 172.20.10.1:2011/v1/reporting/ticket?transactionId= Petición String de dígitos decimales de transactionId. Identifica el id de la transacción solicitada. Respuesta La respuesta de carga útil exitosa incluye la lista detallada de: Información de la transacción (incluida la información del billete). ENCABEZADOS X-SOURCE NOMBRE DE LA APLICACIÓN ID de la aplicación de la persona que llama que identifica de forma exclusiva la aplicación que origina la solicitud de API. PARÁMETROS transactionId Identifica el id de la transacción solicitada. Estos son ejemplos de petición y respuesta de GET Copia de ticket online. Aquí tienes los ejemplos en algunos lenguajes de programación. JavaScript - Fetch C# - HttpClient cURL - cURL Python - Requests Swift - URLSession Otros lenguajes var myHeaders = new Headers(); myHeaders.append("X-SOURCE", "APPNAME"); var requestOptions = { method: 'GET', headers: myHeaders, redirect: 'follow' }; fetch("https:// 172.20.10.1:2011/v1/reporting/ticket?transactionId=432840", requestOptions) .then(response => response.text()) .then(result => console.log(result)) .catch(error => console.log('error', error)); var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Get, "https:// 172.20.10.1:2011/v1/reporting/ticket?transactionId=432840"); request.Headers.Add("X-SOURCE", "APPNAME"); var response = await client.SendAsync(request); response.EnsureSuccessStatusCode(); Console.WriteLine(await response.Content.ReadAsStringAsync()); curl --location 'https:// 172.20.10.1:2011/v1/reporting/ticket?transactionId=432840' \ --header 'X-SOURCE: APPNAME' import requests url = "https:// 172.20.10.1:2011/v1/reporting/ticket?transactionId=432840" payload={} headers = { 'X-SOURCE': 'APPNAME' } response = requests.request("GET", url, headers=headers, data=payload) print(response.text) var request = URLRequest(url: URL(string: "https:// 172.20.10.1:2011/v1/reporting/ticket?transactionId=432840")!,timeoutInterval: Double.infinity) request.addValue("APPNAME", forHTTPHeaderField: "X-SOURCE") request.httpMethod = "GET" let task = URLSession.shared.dataTask(with: request) { data, response, error in guard let data = data else { print(String(describing: error)) return } print(String(data: data, encoding: .utf8)!) } task.resume() Puedes ver más ejemplos de lenguajes de programación en nuestra colección Postman. Este es el JSON de la respuesta y sus encabezados. Cuerpo Encabezados { "operation": "TICKET_COPY", "report": { "VersionInfo": { "Release": "02.00", "Version": "02.00" }, "Operation": { "Payload": { "Merchant": { "Id": "329811087", "Location": "BADALONA", "Name": "Comercia Global Payments" }, "Session": { "Date": "20200521", "Number": 1 }, "Transaction": { "AID": "", "ARC": "00", "ATC": "", "PSN": "", "Amount": "58", "Authorization": "006355", "CardBank": "Comercia Global Payments", "CardHolder": "", "CardIssuer": "", "CardNumber": "************3719", "CardTechnology": 2, "CardType": "", "Currency": "EUR", "Date": "20200522", "Id": "432840", "Language": "es", "Location": "BADALONA", "MerchantId": "329811087", "MerchantName": "Comercia Global Payments", "Modifiers": [], "OriginalTransactionDate": "", "OriginalTransactionId": "", "PinIndicator": 0, "SignatureIndicator": 0, "Status": "0", "Templates": [], "TerminalId": "00000001", "Time": "0021", "Type": "Payment" } }, "ResponseCode": "600" } } } Content-Type application/json Date Thu, 21 May 2020 22:54:05 GMT Access-Control-Allow-Credentials true Access-Control-Allow-Origin * Connection keep-alive Content-Encoding gzip Transfer-Encoding chunked