0, "error" => "Ok", "msj" => "Todo correcto." ]; define("url1PROD", "https://dev-int-suite.authentication.br10.hana.ondemand.com/oauth/token?grant_type=client_credentials"); define("url1TEST", "https://dev-int-suite.authentication.br10.hana.ondemand.com/oauth/token?grant_type=client_credentials"); define("url2PROD", "https://dev-int-suite.it-cpi008-rt.cfapps.br10.hana.ondemand.com/http/DEV/EnviarFacturaSAP"); define("url2TEST", "https://dev-int-suite.it-cpi008-rt.cfapps.br10.hana.ondemand.com/http/QAS/EnviarFacturaSAP"); $tipoDatoRecibido = $_SERVER['CONTENT_TYPE']; if($tipoDatoRecibido=="application/x-www-form-urlencoded"){ if(isset($_POST["action"])){ $action = $_POST["action"]; if($action=="getTokenOLD"){ $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://caap-int-suite.authentication.br10.hana.ondemand.com/oauth/token?grant_type=client_credentials', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_POSTFIELDS => 'company_id=SFPART050233&grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Asaml2-bearer&client_id=YTQ3OTA5ZDg0Yjc1NWM2MTI1YWNmNDY0NmVlYw&assertion=PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbDI6QXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBJRD0iNTM2N2E3Y2ItZGE5OC00ZmIxLWEzZWUtZGNmZTFhM2Y0OWI5IiBJc3N1ZUluc3RhbnQ9IjIwMjMtMTEtMDhUMTQ6MDY6MzQuNzY2WiIgVmVyc2lvbj0iMi4wIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sMjpJc3N1ZXI%2Bd3d3LnN1Y2Nlc3NmYWN0b3JzLmNvbTwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8%2BPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iIzUzNjdhN2NiLWRhOTgtNGZiMS1hM2VlLWRjZmUxYTNmNDliOSI%2BPGRzOlRyYW5zZm9ybXM%2BPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8%2BPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI%2BPGVjOkluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM6ZWM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0ieHMiLz48L2RzOlRyYW5zZm9ybT48L2RzOlRyYW5zZm9ybXM%2BPGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8%2BPGRzOkRpZ2VzdFZhbHVlPnpsSFkxcDRXZHNBZ3lnY3RaTC80WnQrWXowTT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU%2BR25nVGlKbVFocFc5TjdoQzdTR3ZGaGtoUHdvMjI0Mk84WWczZklzY0ppZ2FqRTE2bDlhekdZNWJka2dCNnUzNHplNWttZDlUM1BNQmo1Wm94VitTcDRSSFU2Y3JoVFVsM29pc0t1NmswK05NOGwxN3VIeDB5MjV0cmdlSVhnK2Q0UzY2bVE5QXl2TEFYYytYdGgvUUo5Sm52aEg1UHVTMXo5NUp4eHlGNURYcEhxekRURjY4M0JLM3hXc2JmVkRSQk1HU0RlNm9uT1pTWmJSc3VRL0V3ZEZOaURkQ1h6VHVoU2dDczZWV2cyaWtlUjg5ME13M2R3VUpSa2xqeEtXVkR3SWgwREJtUHhVRTVYZncwTFhua0pVZXFwUFFvbVJyTGVqam8zdW1qa3ZMSGJ0dENCNkJ6eHFuZzh6ZkZWS2JVN2NNZnozN2dDN2ErR0UvNGlwSnRnPT08L2RzOlNpZ25hdHVyZVZhbHVlPjwvZHM6U2lnbmF0dXJlPjxzYW1sMjpTdWJqZWN0PjxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDp1bnNwZWNpZmllZCI%2BUlBFUlRJRVJSQUFQSTwvc2FtbDI6TmFtZUlEPjxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI%2BPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAyMy0xMS0wOFQxNDoxNjozNC43NjZaIiBSZWNpcGllbnQ9Imh0dHBzOi8vYXBpc2FsZXNkZW1vOC5zdWNjZXNzZmFjdG9ycy5jb20vb2F1dGgvdG9rZW4iLz48L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24%2BPC9zYW1sMjpTdWJqZWN0PjxzYW1sMjpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAyMy0xMS0wOFQxMzo1NjozNC43NjZaIiBOb3RPbk9yQWZ0ZXI9IjIwMjMtMTEtMDhUMTQ6MTY6MzQuNzY2WiI%2BPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24%2BPHNhbWwyOkF1ZGllbmNlPnd3dy5zdWNjZXNzZmFjdG9ycy5jb208L3NhbWwyOkF1ZGllbmNlPjwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWwyOkNvbmRpdGlvbnM%2BPHNhbWwyOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAyMy0xMS0wOFQxNDowNjozNC43NjZaIiBTZXNzaW9uSW5kZXg9IjRhZTFhMmRjLTM2ODUtNGY2NS1iM2ZiLTFjOGYwODU3Nzk5YSI%2BPHNhbWwyOkF1dGhuQ29udGV4dD48c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY%2BdXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDI6QXV0aG5Db250ZXh0Pjwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ%2BPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD48c2FtbDI6QXR0cmlidXRlIE5hbWU9ImFwaV9rZXkiPjxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ZVFEzT1RBNVpEZzBZamMxTldNMk1USTFZV05tTkRZME5tVmxZdzwvc2FtbDI6QXR0cmlidXRlVmFsdWU%2BPC9zYW1sMjpBdHRyaWJ1dGU%2BPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ%2BPC9zYW1sMjpBc3NlcnRpb24%2B%0A', CURLOPT_HTTPHEADER => array( 'Content-Type: application/x-www-form-urlencoded', 'Authorization: Basic c2ItNzBmMzk0ZTgtYTMyZC00ZDUxLTlhOWEtYjdlYjNhNDYyNDhhIWI5ODkzfGl0LXJ0LWNhYXAtaW50LXN1aXRlIWIxMDY6YzRiYTE5OWUtNWVjZS00NWNkLWE3ZTQtMDY5YzA4ZDNlOWFjJHBzb2dUOXNYdkhlc2xBWi02aXkyR3JrWExLR2E2WUxlUHBPUEQtcm52MGc9' ), )); $response = curl_exec($curl); curl_close($curl); $resp = json_decode($response); echo $response; echo "
"; echo $resp->access_token; return $response; } else if($action=="getCsrfTokenOLD"){ $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://caap-int-suite.it-cpi008-rt.cfapps.br10.hana.ondemand.com/http/LoQueSea', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'X-CSRF-Token: fetch', 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vY2FhcC1pbnQtc3VpdGUuYXV0aGVudGljYXRpb24uYnIxMC5oYW5hLm9uZGVtYW5kLmNvbS90b2tlbl9rZXlzIiwia2lkIjoiZGVmYXVsdC1qd3Qta2V5LWQ1MjUzZWIwYzIiLCJ0eXAiOiJKV1QiLCJqaWQiOiAiQ3kyK3p3VXJxandDTTF0dEhqQVVSZjliMU1iWnppR084dGYwYzlCYWZ0ND0ifQ.eyJqdGkiOiIyNGMxYzM3OGVmYjA0MzkxODIyNDUxODA0NTBiMzQ1YiIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI5NDE3OGVhMS02NjcxLTRjYjktOTRjOC0yMjMzNDQ3YjM5ZTQiLCJ6ZG4iOiJjYWFwLWludC1zdWl0ZSIsInNlcnZpY2VpbnN0YW5jZWlkIjoiNzBmMzk0ZTgtYTMyZC00ZDUxLTlhOWEtYjdlYjNhNDYyNDhhIn0sInN1YiI6InNiLTcwZjM5NGU4LWEzMmQtNGQ1MS05YTlhLWI3ZWIzYTQ2MjQ4YSFiOTg5M3xpdC1ydC1jYWFwLWludC1zdWl0ZSFiMTA2IiwiYXV0aG9yaXRpZXMiOlsidWFhLnJlc291cmNlIiwiaXQtcnQtY2FhcC1pbnQtc3VpdGUhYjEwNi5FU0JNZXNzYWdpbmcuc2VuZCJdLCJzY29wZSI6WyJpdC1ydC1jYWFwLWludC1zdWl0ZSFiMTA2LkVTQk1lc3NhZ2luZy5zZW5kIiwidWFhLnJlc291cmNlIl0sImNsaWVudF9pZCI6InNiLTcwZjM5NGU4LWEzMmQtNGQ1MS05YTlhLWI3ZWIzYTQ2MjQ4YSFiOTg5M3xpdC1ydC1jYWFwLWludC1zdWl0ZSFiMTA2IiwiY2lkIjoic2ItNzBmMzk0ZTgtYTMyZC00ZDUxLTlhOWEtYjdlYjNhNDYyNDhhIWI5ODkzfGl0LXJ0LWNhYXAtaW50LXN1aXRlIWIxMDYiLCJhenAiOiJzYi03MGYzOTRlOC1hMzJkLTRkNTEtOWE5YS1iN2ViM2E0NjI0OGEhYjk4OTN8aXQtcnQtY2FhcC1pbnQtc3VpdGUhYjEwNiIsImdyYW50X3R5cGUiOiJjbGllbnRfY3JlZGVudGlhbHMiLCJyZXZfc2lnIjoiYzNkZTZlODIiLCJpYXQiOjE3MzA0ODU4MTgsImV4cCI6MTczMDQ4OTQxOCwiaXNzIjoiaHR0cHM6Ly9jYWFwLWludC1zdWl0ZS5hdXRoZW50aWNhdGlvbi5icjEwLmhhbmEub25kZW1hbmQuY29tL29hdXRoL3Rva2VuIiwiemlkIjoiOTQxNzhlYTEtNjY3MS00Y2I5LTk0YzgtMjIzMzQ0N2IzOWU0IiwiYXVkIjpbInVhYSIsInNiLTcwZjM5NGU4LWEzMmQtNGQ1MS05YTlhLWI3ZWIzYTQ2MjQ4YSFiOTg5M3xpdC1ydC1jYWFwLWludC1zdWl0ZSFiMTA2IiwiaXQtcnQtY2FhcC1pbnQtc3VpdGUhYjEwNi5FU0JNZXNzYWdpbmciXX0.dD3n-DhKyCyCEnoR0A4JUnyKHFhYnN7BbpMIIMDlf_-QM2ows4uywdOTu06bG0mfcHSPZ4xPzCMre2UzJWh5KKLaZxXE8F5CvCGCHYrilPeUu96TwLybIqKE0SGlq7D6GfjYSD_ga_4JPX89qTQfPFMHvudyNK1qUDahzpH10cKMWd10dwbqzcki_DevkMb4KTbRikAjZJbZ6ZuC8U2WDD4JN56mPqREbjLjLatp1igmCD5BSWD_FA_GrWeO2Heu2cvSc1nRBw0p-Y7nkPw9dpX9UqvvXAzxkB7ImGq0knFkKos1mmi2wjBVk3xnOUOluzQrn9ZVLlE_s03bKvXC5A' ), )); $response = curl_exec($curl); curl_close($curl); echo $response; } else if($action=="testSAPHANAOLD"){ $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://caap-int-suite.authentication.br10.hana.ondemand.com/oauth/token?grant_type=client_credentials', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_POSTFIELDS => 'company_id=SFPART050233&grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Asaml2-bearer&client_id=YTQ3OTA5ZDg0Yjc1NWM2MTI1YWNmNDY0NmVlYw&assertion=PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbDI6QXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBJRD0iNTM2N2E3Y2ItZGE5OC00ZmIxLWEzZWUtZGNmZTFhM2Y0OWI5IiBJc3N1ZUluc3RhbnQ9IjIwMjMtMTEtMDhUMTQ6MDY6MzQuNzY2WiIgVmVyc2lvbj0iMi4wIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sMjpJc3N1ZXI%2Bd3d3LnN1Y2Nlc3NmYWN0b3JzLmNvbTwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8%2BPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iIzUzNjdhN2NiLWRhOTgtNGZiMS1hM2VlLWRjZmUxYTNmNDliOSI%2BPGRzOlRyYW5zZm9ybXM%2BPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8%2BPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI%2BPGVjOkluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM6ZWM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0ieHMiLz48L2RzOlRyYW5zZm9ybT48L2RzOlRyYW5zZm9ybXM%2BPGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8%2BPGRzOkRpZ2VzdFZhbHVlPnpsSFkxcDRXZHNBZ3lnY3RaTC80WnQrWXowTT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU%2BR25nVGlKbVFocFc5TjdoQzdTR3ZGaGtoUHdvMjI0Mk84WWczZklzY0ppZ2FqRTE2bDlhekdZNWJka2dCNnUzNHplNWttZDlUM1BNQmo1Wm94VitTcDRSSFU2Y3JoVFVsM29pc0t1NmswK05NOGwxN3VIeDB5MjV0cmdlSVhnK2Q0UzY2bVE5QXl2TEFYYytYdGgvUUo5Sm52aEg1UHVTMXo5NUp4eHlGNURYcEhxekRURjY4M0JLM3hXc2JmVkRSQk1HU0RlNm9uT1pTWmJSc3VRL0V3ZEZOaURkQ1h6VHVoU2dDczZWV2cyaWtlUjg5ME13M2R3VUpSa2xqeEtXVkR3SWgwREJtUHhVRTVYZncwTFhua0pVZXFwUFFvbVJyTGVqam8zdW1qa3ZMSGJ0dENCNkJ6eHFuZzh6ZkZWS2JVN2NNZnozN2dDN2ErR0UvNGlwSnRnPT08L2RzOlNpZ25hdHVyZVZhbHVlPjwvZHM6U2lnbmF0dXJlPjxzYW1sMjpTdWJqZWN0PjxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDp1bnNwZWNpZmllZCI%2BUlBFUlRJRVJSQUFQSTwvc2FtbDI6TmFtZUlEPjxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI%2BPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAyMy0xMS0wOFQxNDoxNjozNC43NjZaIiBSZWNpcGllbnQ9Imh0dHBzOi8vYXBpc2FsZXNkZW1vOC5zdWNjZXNzZmFjdG9ycy5jb20vb2F1dGgvdG9rZW4iLz48L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24%2BPC9zYW1sMjpTdWJqZWN0PjxzYW1sMjpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAyMy0xMS0wOFQxMzo1NjozNC43NjZaIiBOb3RPbk9yQWZ0ZXI9IjIwMjMtMTEtMDhUMTQ6MTY6MzQuNzY2WiI%2BPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24%2BPHNhbWwyOkF1ZGllbmNlPnd3dy5zdWNjZXNzZmFjdG9ycy5jb208L3NhbWwyOkF1ZGllbmNlPjwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWwyOkNvbmRpdGlvbnM%2BPHNhbWwyOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAyMy0xMS0wOFQxNDowNjozNC43NjZaIiBTZXNzaW9uSW5kZXg9IjRhZTFhMmRjLTM2ODUtNGY2NS1iM2ZiLTFjOGYwODU3Nzk5YSI%2BPHNhbWwyOkF1dGhuQ29udGV4dD48c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY%2BdXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDI6QXV0aG5Db250ZXh0Pjwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ%2BPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD48c2FtbDI6QXR0cmlidXRlIE5hbWU9ImFwaV9rZXkiPjxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ZVFEzT1RBNVpEZzBZamMxTldNMk1USTFZV05tTkRZME5tVmxZdzwvc2FtbDI6QXR0cmlidXRlVmFsdWU%2BPC9zYW1sMjpBdHRyaWJ1dGU%2BPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ%2BPC9zYW1sMjpBc3NlcnRpb24%2B%0A', CURLOPT_HTTPHEADER => array( 'Content-Type: application/x-www-form-urlencoded', 'Authorization: Basic c2ItNzBmMzk0ZTgtYTMyZC00ZDUxLTlhOWEtYjdlYjNhNDYyNDhhIWI5ODkzfGl0LXJ0LWNhYXAtaW50LXN1aXRlIWIxMDY6YzRiYTE5OWUtNWVjZS00NWNkLWE3ZTQtMDY5YzA4ZDNlOWFjJHBzb2dUOXNYdkhlc2xBWi02aXkyR3JrWExLR2E2WUxlUHBPUEQtcm52MGc9' ), )); $response = curl_exec($curl); curl_close($curl); $resp = json_decode($response); $access_token = $resp->access_token; $autorization = 'Authorization: Bearer ' . $access_token; $curl2 = curl_init(); curl_setopt_array($curl2, array( CURLOPT_URL => 'https://caap-int-suite.it-cpi008-rt.cfapps.br10.hana.ondemand.com/http/LoQueSea', CURLOPT_HEADER => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'X-CSRF-Token: fetch', $autorization ), )); $response2 = curl_exec($curl2); curl_close($curl2); $resp2 = json_decode($response2); // echo "Resp2:
"; // echo var_dump($resp2); // Separa los headers del cuerpo $header_size = curl_getinfo($curl2, CURLINFO_HEADER_SIZE); $headers = substr($response2, 0, $header_size); $body = substr($response2, $header_size); // echo "Headers:
"; // echo $headers; // echo "
"; // echo "Body:
"; // echo $body; // echo "
"; // Convierte los headers en un array por líneas $header_lines = explode("\r\n", $headers); // Inicializa un array para almacenar los headers clave => valor $headers_array = []; // Procesa cada línea foreach ($header_lines as $line) { // Si la línea contiene un ":", la dividimos en nombre y valor if (strpos($line, ":") !== false) { list($name, $value) = explode(":", $line, 2); $headers_array[strtolower(trim($name))] = trim($value); // Guardamos en minúsculas } } // Accede a los valores específicos $corrId = isset($headers_array['x-correlationid']) ? $headers_array['x-correlationid'] : null; $csrfToken = isset($headers_array['x-csrf-token']) ? $headers_array['x-csrf-token'] : null; // echo "headers_array:
"; // echo var_dump($headers_array); // echo "
"; // echo "corrId:
"; // echo $corrId; // echo "
"; // echo "csrfToken:
"; // echo $csrfToken; $jsonDATA = '{ "facturas": [ { "lineaImporteImpuestos": { "valorBaseImpuesto": "0", "posicion": "0000000003", "moneda": "UYU", "importeImpuesto": "0", "codigoMoneda": "00" }, "lineaImporte": [ { "posicion": "0000000002", "moneda": "UYU", "importe": "-4500,00", "codigoMoneda": "00" }, { "posicion": "0000000001", "moneda": "UYU", "importe": "4500,00", "codigoMoneda": "00" } ], "impuestos": { "posicion": "0000000003", "codigoImpuesto": "D0" }'. // "cuentaMayor": [ // { // "profit": "PDP", // "posicion": "0000000002", // "item": "Parking", // "cuentaContable": "0000402040", // "codigoImpuesto": "D0" // } // ], '"cliente": { "razonSocial": "CAJERO 1", "posicion": "0000000001", "fechaVencimiento": "20240912", "condicionPago": "V000", "clienteSAP": "0000090000" }, "cabecera": { "usuario": "RFCUSERWS", "tipoDoc": "ES", "sociedad": "CAI", "ruc":, "nroLegal": "10816", "idSalesforce":, "fechaDocumento": "20240912", "fechaContabilizacion": "20240912" }, "ampliaciones": { "puntoVenta": "0003" } } ] }'; $xCSRFtoken = "X-CSRF-Token: $corrId"; $curl3 = curl_init(); curl_setopt_array($curl3, array( CURLOPT_URL => 'https://caap-int-suite.it-cpi008-rt.cfapps.br10.hana.ondemand.com/http/LoQueSea', CURLOPT_HEADER => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_POSTFIELDS => $jsonDATA, CURLOPT_HTTPHEADER => array( $xCSRFtoken, 'Content-Type: application/json', $autorization ), )); $response3 = curl_exec($curl3); curl_close($curl3); $resp3 = json_decode($response3); // Separa los headers del cuerpo $header_size = curl_getinfo($curl3, CURLINFO_HEADER_SIZE); $headers = substr($response3, 0, $header_size); $body = substr($response3, $header_size); // echo "Headers:
"; // echo $headers; // echo "
"; // echo "Body:
"; // echo $body; // echo "
"; // Convierte los headers en un array por líneas $header_lines = explode("\r\n", $headers); // Inicializa un array para almacenar los headers clave => valor $headers_array = []; // Procesa cada línea foreach ($header_lines as $line) { // Si la línea contiene un ":", la dividimos en nombre y valor if (strpos($line, ":") !== false) { list($name, $value) = explode(":", $line, 2); $headers_array[strtolower(trim($name))] = trim($value); // Guardamos en minúsculas } } // Accede a los valores específicos $corrId = isset($headers_array['x-correlationid']) ? $headers_array['x-correlationid'] : null; $csrfToken = isset($headers_array['x-csrf-token']) ? $headers_array['x-csrf-token'] : null; } else if($action=="getToken"){ $curl = curl_init(); curl_setopt_array($curl, array( // CURLOPT_URL => 'https://caap-int-suite.authentication.br10.hana.ondemand.com/oauth/token?grant_type=client_credentials', CURLOPT_URL => url1TEST, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_POSTFIELDS => 'company_id=SFPART050233&grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Asaml2-bearer&client_id=YTQ3OTA5ZDg0Yjc1NWM2MTI1YWNmNDY0NmVlYw&assertion=PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbDI6QXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBJRD0iNTM2N2E3Y2ItZGE5OC00ZmIxLWEzZWUtZGNmZTFhM2Y0OWI5IiBJc3N1ZUluc3RhbnQ9IjIwMjMtMTEtMDhUMTQ6MDY6MzQuNzY2WiIgVmVyc2lvbj0iMi4wIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sMjpJc3N1ZXI%2Bd3d3LnN1Y2Nlc3NmYWN0b3JzLmNvbTwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8%2BPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iIzUzNjdhN2NiLWRhOTgtNGZiMS1hM2VlLWRjZmUxYTNmNDliOSI%2BPGRzOlRyYW5zZm9ybXM%2BPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8%2BPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI%2BPGVjOkluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM6ZWM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0ieHMiLz48L2RzOlRyYW5zZm9ybT48L2RzOlRyYW5zZm9ybXM%2BPGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8%2BPGRzOkRpZ2VzdFZhbHVlPnpsSFkxcDRXZHNBZ3lnY3RaTC80WnQrWXowTT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU%2BR25nVGlKbVFocFc5TjdoQzdTR3ZGaGtoUHdvMjI0Mk84WWczZklzY0ppZ2FqRTE2bDlhekdZNWJka2dCNnUzNHplNWttZDlUM1BNQmo1Wm94VitTcDRSSFU2Y3JoVFVsM29pc0t1NmswK05NOGwxN3VIeDB5MjV0cmdlSVhnK2Q0UzY2bVE5QXl2TEFYYytYdGgvUUo5Sm52aEg1UHVTMXo5NUp4eHlGNURYcEhxekRURjY4M0JLM3hXc2JmVkRSQk1HU0RlNm9uT1pTWmJSc3VRL0V3ZEZOaURkQ1h6VHVoU2dDczZWV2cyaWtlUjg5ME13M2R3VUpSa2xqeEtXVkR3SWgwREJtUHhVRTVYZncwTFhua0pVZXFwUFFvbVJyTGVqam8zdW1qa3ZMSGJ0dENCNkJ6eHFuZzh6ZkZWS2JVN2NNZnozN2dDN2ErR0UvNGlwSnRnPT08L2RzOlNpZ25hdHVyZVZhbHVlPjwvZHM6U2lnbmF0dXJlPjxzYW1sMjpTdWJqZWN0PjxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDp1bnNwZWNpZmllZCI%2BUlBFUlRJRVJSQUFQSTwvc2FtbDI6TmFtZUlEPjxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI%2BPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAyMy0xMS0wOFQxNDoxNjozNC43NjZaIiBSZWNpcGllbnQ9Imh0dHBzOi8vYXBpc2FsZXNkZW1vOC5zdWNjZXNzZmFjdG9ycy5jb20vb2F1dGgvdG9rZW4iLz48L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24%2BPC9zYW1sMjpTdWJqZWN0PjxzYW1sMjpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAyMy0xMS0wOFQxMzo1NjozNC43NjZaIiBOb3RPbk9yQWZ0ZXI9IjIwMjMtMTEtMDhUMTQ6MTY6MzQuNzY2WiI%2BPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24%2BPHNhbWwyOkF1ZGllbmNlPnd3dy5zdWNjZXNzZmFjdG9ycy5jb208L3NhbWwyOkF1ZGllbmNlPjwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWwyOkNvbmRpdGlvbnM%2BPHNhbWwyOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAyMy0xMS0wOFQxNDowNjozNC43NjZaIiBTZXNzaW9uSW5kZXg9IjRhZTFhMmRjLTM2ODUtNGY2NS1iM2ZiLTFjOGYwODU3Nzk5YSI%2BPHNhbWwyOkF1dGhuQ29udGV4dD48c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY%2BdXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDI6QXV0aG5Db250ZXh0Pjwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ%2BPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD48c2FtbDI6QXR0cmlidXRlIE5hbWU9ImFwaV9rZXkiPjxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ZVFEzT1RBNVpEZzBZamMxTldNMk1USTFZV05tTkRZME5tVmxZdzwvc2FtbDI6QXR0cmlidXRlVmFsdWU%2BPC9zYW1sMjpBdHRyaWJ1dGU%2BPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ%2BPC9zYW1sMjpBc3NlcnRpb24%2B%0A', CURLOPT_HTTPHEADER => array( 'Content-Type: application/x-www-form-urlencoded', 'Authorization: Basic c2ItMWY0ODc1YWMtNmVlYS00MTBiLTk2ZTEtNTIyMTViYTg2ODZhIWIxNzk1N3xpdC1ydC1kZXYtaW50LXN1aXRlIWIxMDY6YzQ2OGY3ODUtMjE1ZS00ZDIzLTg3NjktZDJmODBlNjBlNDlhJGVjRW1ISjVvRkp3UkNSN21JVzl1NEJqNldreHZGS0VLSFFXOXhEOHdYMVU9' ), )); $response = curl_exec($curl); curl_close($curl); $resp = json_decode($response); echo $response; echo "
"; echo $resp->access_token; return $response; } else if($action=="getCsrfToken"){ $curl = curl_init(); curl_setopt_array($curl, array( // CURLOPT_URL => 'https://caap-int-suite.it-cpi008-rt.cfapps.br10.hana.ondemand.com/http/LoQueSea', CURLOPT_URL => url2TEST, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'X-CSRF-Token: fetch', 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImprdSI6Imh0dHBzOi8vY2FhcC1pbnQtc3VpdGUuYXV0aGVudGljYXRpb24uYnIxMC5oYW5hLm9uZGVtYW5kLmNvbS90b2tlbl9rZXlzIiwia2lkIjoiZGVmYXVsdC1qd3Qta2V5LWQ1MjUzZWIwYzIiLCJ0eXAiOiJKV1QiLCJqaWQiOiAiQ3kyK3p3VXJxandDTTF0dEhqQVVSZjliMU1iWnppR084dGYwYzlCYWZ0ND0ifQ.eyJqdGkiOiIyNGMxYzM3OGVmYjA0MzkxODIyNDUxODA0NTBiMzQ1YiIsImV4dF9hdHRyIjp7ImVuaGFuY2VyIjoiWFNVQUEiLCJzdWJhY2NvdW50aWQiOiI5NDE3OGVhMS02NjcxLTRjYjktOTRjOC0yMjMzNDQ3YjM5ZTQiLCJ6ZG4iOiJjYWFwLWludC1zdWl0ZSIsInNlcnZpY2VpbnN0YW5jZWlkIjoiNzBmMzk0ZTgtYTMyZC00ZDUxLTlhOWEtYjdlYjNhNDYyNDhhIn0sInN1YiI6InNiLTcwZjM5NGU4LWEzMmQtNGQ1MS05YTlhLWI3ZWIzYTQ2MjQ4YSFiOTg5M3xpdC1ydC1jYWFwLWludC1zdWl0ZSFiMTA2IiwiYXV0aG9yaXRpZXMiOlsidWFhLnJlc291cmNlIiwiaXQtcnQtY2FhcC1pbnQtc3VpdGUhYjEwNi5FU0JNZXNzYWdpbmcuc2VuZCJdLCJzY29wZSI6WyJpdC1ydC1jYWFwLWludC1zdWl0ZSFiMTA2LkVTQk1lc3NhZ2luZy5zZW5kIiwidWFhLnJlc291cmNlIl0sImNsaWVudF9pZCI6InNiLTcwZjM5NGU4LWEzMmQtNGQ1MS05YTlhLWI3ZWIzYTQ2MjQ4YSFiOTg5M3xpdC1ydC1jYWFwLWludC1zdWl0ZSFiMTA2IiwiY2lkIjoic2ItNzBmMzk0ZTgtYTMyZC00ZDUxLTlhOWEtYjdlYjNhNDYyNDhhIWI5ODkzfGl0LXJ0LWNhYXAtaW50LXN1aXRlIWIxMDYiLCJhenAiOiJzYi03MGYzOTRlOC1hMzJkLTRkNTEtOWE5YS1iN2ViM2E0NjI0OGEhYjk4OTN8aXQtcnQtY2FhcC1pbnQtc3VpdGUhYjEwNiIsImdyYW50X3R5cGUiOiJjbGllbnRfY3JlZGVudGlhbHMiLCJyZXZfc2lnIjoiYzNkZTZlODIiLCJpYXQiOjE3MzA0ODU4MTgsImV4cCI6MTczMDQ4OTQxOCwiaXNzIjoiaHR0cHM6Ly9jYWFwLWludC1zdWl0ZS5hdXRoZW50aWNhdGlvbi5icjEwLmhhbmEub25kZW1hbmQuY29tL29hdXRoL3Rva2VuIiwiemlkIjoiOTQxNzhlYTEtNjY3MS00Y2I5LTk0YzgtMjIzMzQ0N2IzOWU0IiwiYXVkIjpbInVhYSIsInNiLTcwZjM5NGU4LWEzMmQtNGQ1MS05YTlhLWI3ZWIzYTQ2MjQ4YSFiOTg5M3xpdC1ydC1jYWFwLWludC1zdWl0ZSFiMTA2IiwiaXQtcnQtY2FhcC1pbnQtc3VpdGUhYjEwNi5FU0JNZXNzYWdpbmciXX0.dD3n-DhKyCyCEnoR0A4JUnyKHFhYnN7BbpMIIMDlf_-QM2ows4uywdOTu06bG0mfcHSPZ4xPzCMre2UzJWh5KKLaZxXE8F5CvCGCHYrilPeUu96TwLybIqKE0SGlq7D6GfjYSD_ga_4JPX89qTQfPFMHvudyNK1qUDahzpH10cKMWd10dwbqzcki_DevkMb4KTbRikAjZJbZ6ZuC8U2WDD4JN56mPqREbjLjLatp1igmCD5BSWD_FA_GrWeO2Heu2cvSc1nRBw0p-Y7nkPw9dpX9UqvvXAzxkB7ImGq0knFkKos1mmi2wjBVk3xnOUOluzQrn9ZVLlE_s03bKvXC5A' ), )); $response = curl_exec($curl); curl_close($curl); echo $response; } else if($action=="testSAPHANA"){ $importe = $_POST["importe"]; if(isset($_POST["razonSocial"])){ $razonSocial = $_POST["razonSocial"]; } else{ $razonSocial = "CAJERO 1"; } $curl = curl_init(); curl_setopt_array($curl, array( // CURLOPT_URL => 'https://caap-int-suite.authentication.br10.hana.ondemand.com/oauth/token?grant_type=client_credentials', CURLOPT_URL => url1TEST, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_POSTFIELDS => 'company_id=SFPART050233&grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Asaml2-bearer&client_id=YTQ3OTA5ZDg0Yjc1NWM2MTI1YWNmNDY0NmVlYw&assertion=PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbDI6QXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBJRD0iNTM2N2E3Y2ItZGE5OC00ZmIxLWEzZWUtZGNmZTFhM2Y0OWI5IiBJc3N1ZUluc3RhbnQ9IjIwMjMtMTEtMDhUMTQ6MDY6MzQuNzY2WiIgVmVyc2lvbj0iMi4wIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sMjpJc3N1ZXI%2Bd3d3LnN1Y2Nlc3NmYWN0b3JzLmNvbTwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8%2BPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iIzUzNjdhN2NiLWRhOTgtNGZiMS1hM2VlLWRjZmUxYTNmNDliOSI%2BPGRzOlRyYW5zZm9ybXM%2BPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8%2BPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI%2BPGVjOkluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM6ZWM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0ieHMiLz48L2RzOlRyYW5zZm9ybT48L2RzOlRyYW5zZm9ybXM%2BPGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8%2BPGRzOkRpZ2VzdFZhbHVlPnpsSFkxcDRXZHNBZ3lnY3RaTC80WnQrWXowTT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU%2BR25nVGlKbVFocFc5TjdoQzdTR3ZGaGtoUHdvMjI0Mk84WWczZklzY0ppZ2FqRTE2bDlhekdZNWJka2dCNnUzNHplNWttZDlUM1BNQmo1Wm94VitTcDRSSFU2Y3JoVFVsM29pc0t1NmswK05NOGwxN3VIeDB5MjV0cmdlSVhnK2Q0UzY2bVE5QXl2TEFYYytYdGgvUUo5Sm52aEg1UHVTMXo5NUp4eHlGNURYcEhxekRURjY4M0JLM3hXc2JmVkRSQk1HU0RlNm9uT1pTWmJSc3VRL0V3ZEZOaURkQ1h6VHVoU2dDczZWV2cyaWtlUjg5ME13M2R3VUpSa2xqeEtXVkR3SWgwREJtUHhVRTVYZncwTFhua0pVZXFwUFFvbVJyTGVqam8zdW1qa3ZMSGJ0dENCNkJ6eHFuZzh6ZkZWS2JVN2NNZnozN2dDN2ErR0UvNGlwSnRnPT08L2RzOlNpZ25hdHVyZVZhbHVlPjwvZHM6U2lnbmF0dXJlPjxzYW1sMjpTdWJqZWN0PjxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDp1bnNwZWNpZmllZCI%2BUlBFUlRJRVJSQUFQSTwvc2FtbDI6TmFtZUlEPjxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI%2BPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAyMy0xMS0wOFQxNDoxNjozNC43NjZaIiBSZWNpcGllbnQ9Imh0dHBzOi8vYXBpc2FsZXNkZW1vOC5zdWNjZXNzZmFjdG9ycy5jb20vb2F1dGgvdG9rZW4iLz48L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24%2BPC9zYW1sMjpTdWJqZWN0PjxzYW1sMjpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAyMy0xMS0wOFQxMzo1NjozNC43NjZaIiBOb3RPbk9yQWZ0ZXI9IjIwMjMtMTEtMDhUMTQ6MTY6MzQuNzY2WiI%2BPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24%2BPHNhbWwyOkF1ZGllbmNlPnd3dy5zdWNjZXNzZmFjdG9ycy5jb208L3NhbWwyOkF1ZGllbmNlPjwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWwyOkNvbmRpdGlvbnM%2BPHNhbWwyOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAyMy0xMS0wOFQxNDowNjozNC43NjZaIiBTZXNzaW9uSW5kZXg9IjRhZTFhMmRjLTM2ODUtNGY2NS1iM2ZiLTFjOGYwODU3Nzk5YSI%2BPHNhbWwyOkF1dGhuQ29udGV4dD48c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY%2BdXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDI6QXV0aG5Db250ZXh0Pjwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ%2BPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD48c2FtbDI6QXR0cmlidXRlIE5hbWU9ImFwaV9rZXkiPjxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ZVFEzT1RBNVpEZzBZamMxTldNMk1USTFZV05tTkRZME5tVmxZdzwvc2FtbDI6QXR0cmlidXRlVmFsdWU%2BPC9zYW1sMjpBdHRyaWJ1dGU%2BPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ%2BPC9zYW1sMjpBc3NlcnRpb24%2B%0A', CURLOPT_HTTPHEADER => array( 'Content-Type: application/x-www-form-urlencoded', 'Authorization: Basic c2ItMWY0ODc1YWMtNmVlYS00MTBiLTk2ZTEtNTIyMTViYTg2ODZhIWIxNzk1N3xpdC1ydC1kZXYtaW50LXN1aXRlIWIxMDY6YzQ2OGY3ODUtMjE1ZS00ZDIzLTg3NjktZDJmODBlNjBlNDlhJGVjRW1ISjVvRkp3UkNSN21JVzl1NEJqNldreHZGS0VLSFFXOXhEOHdYMVU9' ), )); $response = curl_exec($curl); curl_close($curl); $resp = json_decode($response); $access_token = $resp->access_token; $autorization = 'Authorization: Bearer ' . $access_token; $curl2 = curl_init(); curl_setopt_array($curl2, array( // CURLOPT_URL => 'https://caap-int-suite.it-cpi008-rt.cfapps.br10.hana.ondemand.com/http/LoQueSea', CURLOPT_URL => url2TEST, CURLOPT_HEADER => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'X-CSRF-Token: fetch', $autorization ), )); $response2 = curl_exec($curl2); curl_close($curl2); $resp2 = json_decode($response2); // echo "Resp2:
"; // echo var_dump($resp2); // Separa los headers del cuerpo $header_size = curl_getinfo($curl2, CURLINFO_HEADER_SIZE); $headers = substr($response2, 0, $header_size); $body = substr($response2, $header_size); // echo "Headers:
"; // echo $headers; // echo "
"; // echo "Body:
"; // echo $body; // echo "
"; // Convierte los headers en un array por líneas $header_lines = explode("\r\n", $headers); // Inicializa un array para almacenar los headers clave => valor $headers_array = []; // Procesa cada línea foreach ($header_lines as $line) { // Si la línea contiene un ":", la dividimos en nombre y valor if (strpos($line, ":") !== false) { list($name, $value) = explode(":", $line, 2); $headers_array[strtolower(trim($name))] = trim($value); // Guardamos en minúsculas } } // Accede a los valores específicos $corrId = isset($headers_array['x-correlationid']) ? $headers_array['x-correlationid'] : null; $csrfToken = isset($headers_array['x-csrf-token']) ? $headers_array['x-csrf-token'] : null; // echo "headers_array:
"; // echo var_dump($headers_array); // echo "
"; // echo "corrId:
"; // echo $corrId; // echo "
"; // echo "csrfToken:
"; // echo $csrfToken; $fecha = new DateTime(); $fechaDocumento = $fecha->format("Ymd"); $jsonDATA = '{ "facturas": [ { "lineaImporteImpuestos": { "valorBaseImpuesto": "0", "posicion": "0000000003", "moneda": "UYU", "importeImpuesto": "0", "codigoMoneda": "00" }, "lineaImporte": [ { "posicion": "0000000002", "moneda": "UYU", "importe": "-'.$importe.'", "codigoMoneda": "00" }, { "posicion": "0000000001", "moneda": "UYU", "importe": "'.$importe.'", "codigoMoneda": "00" } ], "impuestos": { "posicion": "0000000003", "codigoImpuesto": "D0" }, "cuentaMayor": [ {' // '."profit": "AAA0010",.' // .'"profit": "DUMMY", .'"profit": "PDP-0410", "posicion": "0000000002", "item": "Parking", "cuentaContable": "4200610000", "codigoImpuesto": "D0" } ], "cliente": { "razonSocial": "'.$razonSocial.'",'. // "razonSocial": "CAJERO 1", '"posicion": "0000000001",'. // "fechaVencimiento": "20241211", '"fechaVencimiento": "'.$fechaDocumento.'", "condicionPago": "Z000",' // "clienteSAP": "4000007421" .'"clienteSAP": "4000009717" }, "cabecera": { "usuario": "RFCUSER_IP",'. // "usuario": "RFCUSERWS", '"tipoDoc": "ES", "sociedad": "UY02", "ruc": "", "nroLegal": "10816", "idSalesforce": "",'. // "fechaDocumento": "20241211", // "fechaContabilizacion": "20241211" ' "fechaDocumento": "'.$fechaDocumento.'", "fechaContabilizacion": "'.$fechaDocumento.'" }, "ampliaciones": { "puntoVenta": "0003" } } ] }'; $xCSRFtoken = "X-CSRF-Token: $corrId"; $curl3 = curl_init(); curl_setopt_array($curl3, array( // CURLOPT_URL => 'https://caap-int-suite.it-cpi008-rt.cfapps.br10.hana.ondemand.com/http/LoQueSea', CURLOPT_URL => url2TEST, CURLOPT_HEADER => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_POSTFIELDS => $jsonDATA, CURLOPT_HTTPHEADER => array( $xCSRFtoken, 'Content-Type: application/json', $autorization ), )); $response3 = curl_exec($curl3); $respuesta->response3 = $response3; curl_close($curl3); $resp3 = json_decode($response3); // Separa los headers del cuerpo $header_size = curl_getinfo($curl3, CURLINFO_HEADER_SIZE); $headers = substr($response3, 0, $header_size); $body = substr($response3, $header_size); // Decodificar el cuerpo JSON $jsonDataResponse = json_decode($body, true); // echo "Headers:
"; // echo $headers; // echo "
"; // echo "Body:
"; // echo $body; // echo "
"; // Convierte los headers en un array por líneas $header_lines = explode("\r\n", $headers); // Inicializa un array para almacenar los headers clave => valor $headers_array = []; // Procesa cada línea foreach ($header_lines as $line) { // Si la línea contiene un ":", la dividimos en nombre y valor if (strpos($line, ":") !== false) { list($name, $value) = explode(":", $line, 2); $headers_array[strtolower(trim($name))] = trim($value); // Guardamos en minúsculas } } // Accede a los valores específicos $corrId = isset($headers_array['x-correlationid']) ? $headers_array['x-correlationid'] : null; $csrfToken = isset($headers_array['x-csrf-token']) ? $headers_array['x-csrf-token'] : null; $respuesta->xcorrelationid = $corrId; $respuesta->csrfToken = $csrfToken; $respuesta->body = $body; $respuesta->jsonDataResponse = $jsonDataResponse; echo json_encode($respuesta); return $respuesta; } else if($action=="testExcel"){ // Ruta al archivo .xlsx $archivo = 'pruebas2.xlsx'; // Descomprimir el archivo .xlsx (es un archivo ZIP) $zip = new ZipArchive; if ($zip->open($archivo) === TRUE) { // Verificar los archivos contenidos en el archivo ZIP echo "Archivos dentro del ZIP:\n"; for ($i = 0; $i < $zip->numFiles; $i++) { echo $zip->getNameIndex($i) . "\n"; // Muestra los archivos dentro del ZIP } // Buscar el archivo que contiene los datos de la hoja $xmlContent = ''; $index = $zip->locateName('xl/worksheets/sheet1.xml'); // Asumiendo que la hoja de trabajo es sheet1.xml if ($index !== false) { $xmlContent = $zip->getFromIndex($index); echo "Contenido XML cargado.\n"; // Mensaje de depuración } else { echo "No se encontró el archivo 'xl/worksheets/sheet1.xml'.\n"; } $zip->close(); // Ahora que tenemos el contenido del XML, podemos parsearlo if ($xmlContent) { echo "XML cargado correctamente.\n"; $xml = simplexml_load_string($xmlContent); if ($xml === false) { echo "Error al cargar el XML.\n"; foreach(libxml_get_errors() as $error) { echo $error->message; } } else { // Obtener los espacios de nombres del XML $namespaces = $xml->getNamespaces(true); echo "Espacios de nombres disponibles:\n"; print_r($namespaces); // Para verificar los espacios de nombres // Comprobamos qué hay en el nodo sheetData // Usamos el espacio de nombres encontrado para las consultas XPath $ns = ''; // Si el espacio de nombres está vacío, significa que no está presente if (isset($namespaces[''])) { $ns = $namespaces['']; // El espacio de nombres es vacío } elseif (isset($namespaces['xmlns'])) { $ns = $namespaces['xmlns']; // Usamos el 'xmlns' si es el espacio de nombres correcto } else { echo "No se encontró espacio de nombres adecuado.\n"; echo json_encode($respuesta); return $respuesta; // exit; // Detener la ejecución si no encontramos un espacio de nombres } echo "Imprimiendo fragmento del XML para depuración:\n"; echo $xml->asXML(); // Esto imprimirá el XML completo, es útil para ver cómo está estructurado // Comprobamos qué hay en el nodo sheetData echo "Comprobando contenido de sheetData:\n"; // Usamos el espacio de nombres vacío en el XPath $xpathQuery = "//ss:sheetData/ss:row"; // Cambiado a "ss" (namespace prefix) para cada nodo echo "Expresión XPath: $xpathQuery\n"; // Depuración de la expresión XPath $sheetData = $xml->xpath($xpathQuery); echo "sheetData: ".print_r($sheetData)."\n"; echo "Número de filas encontradas: " . count($sheetData) . "\n"; $rows = []; foreach ($sheetData as $rowIndex => $row) { echo "Procesando fila " . ($rowIndex + 1) . "\n"; $fila = []; foreach ($row->xpath("ss:c") as $cell) { // Depurar qué celdas estamos obteniendo $column = (string)$cell['r']; // Esto nos da la referencia de la celda, ej. A1, B2, etc. $value = (string)$cell->xpath("ss:v")[0]; // El valor de la celda echo "Celda $column con valor $value\n"; // Depuración de celdas // Determinamos la columna $col = preg_replace('/[0-9]/', '', $column); // Extraer la letra de la columna switch ($col) { case 'A': $fila['ID'] = $value; break; case 'B': $fila['Monto'] = $value; break; case 'C': $fila['Usuario'] = $value; break; case 'D': $fila['Fecha'] = $value; break; case 'E': $fila['Forma de Pago'] = $value; break; case 'F': $fila['Tarifa'] = $value; break; case 'G': $fila['Funcionario'] = $value; break; case 'H': $fila['Parking'] = $value; break; case 'I': $fila['Columna1'] = $value; break; default: echo "Columna no esperada: $col\n"; break; } } // Añadir la fila al array de resultados if (!empty($fila)) { $rows[] = $fila; } else { echo "Fila vacía.\n"; } } // Imprimir el resultado if (count($rows) > 0) { $respuesta->filas = $rows; } else { echo "No se encontraron filas válidas.\n"; } // Imprimir el resultado // $respuesta->filas = $rows; // print_r($rows); echo json_encode($respuesta); return $respuesta; } } else { $respuesta->codigo = 500; $respuesta->error = "Error"; $respuesta->msj = "No se pudo leer el archivo XML."; echo json_encode($respuesta); return $respuesta; } } else { $respuesta->codigo = 500; $respuesta->error = "Error"; $respuesta->msj = "No se pudo abrir el archivo .xlsx."; echo json_encode($respuesta); return $respuesta; } } else if($action=="testExcel2"){ // Incluir la clase IOFactory de PhpSpreadsheet // require_once $_SERVER['DOCUMENT_ROOT'] . '/Tools/Packages/phpoffice/phpspreadsheet/src/PhpSpreadsheet/IOFactory.php'; function leer() { $data = []; $responses = []; $conn = mysqli_connect("localhost", "root", "adnoh.1", "testing", 3306); if(!$conn){ return "Error al conectarse a la base: " . mysqli_connect_error(); // return; } $c = "SELECT ID, Monto, Usuario, Fecha, Forma_de_Pago, Tarifa, Funcionario, Parking, Columna1 FROM testSAP;"; $r = mysqli_query($conn, $c); $result = mysqli_fetch_all($r); foreach($result as $row){ $funcionario = $row[6]; if(str_contains($funcionario, "PARKING\\")){ $funcionario = str_replace("PARKING\\", "PARKING\\\\", $row[6]); } if(str_contains($funcionario, "TAG\\")){ $funcionario = str_replace("TAG\\", "TAG\\\\", $row[6]); } $data[] = [ 'ID' => $row[0], 'Monto' => $row[1], 'Usuario' => $row[2], 'Fecha' => $row[3], 'Forma_de_Pago' => $row[4], 'Tarifa' => $row[5], 'Funcionario' => $funcionario, 'Parking' => $row[7], 'Columna1' => $row[8] ]; // $send = "action=testSAPHANA&importe=$row[1]"; // $curl = curl_init(); // curl_setopt_array($curl, array( // CURLOPT_URL => 'https://ws.iparkings.com/Clientes/Aeropuertos/SAP/app.php', // CURLOPT_RETURNTRANSFER => true, // CURLOPT_ENCODING => '', // CURLOPT_MAXREDIRS => 10, // CURLOPT_TIMEOUT => 0, // CURLOPT_FOLLOWLOCATION => true, // CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, // CURLOPT_CUSTOMREQUEST => 'POST', // CURLOPT_POSTFIELDS => $send, // CURLOPT_HTTPHEADER => array( // 'Content-Type: application/x-www-form-urlencoded' // ), // )); // $response = curl_exec($curl); // curl_close($curl); // // echo $response; // $responses[] = // [ // "ID" => $row[0], // "response" => $response // ]; } $send = '{ "action": "testSAPHANA", "data": '.json_encode($data, true, JSON_UNESCAPED_UNICODE).' }'; // return $send; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://ws.iparkings.com/Clientes/Aeropuertos/SAP/app.php', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>$send, CURLOPT_HTTPHEADER => array( 'Content-Type: application/json' ), )); $response = curl_exec($curl); curl_close($curl); // echo json_encode($response); // while($reg = mysqli_fetch_assoc($r)){ // $data[] = // [ // 'ID' => $reg['ID'], // 'Monto' => $reg['Monto'], // 'Usuario' => $reg['Usuario'], // 'Fecha' => $reg['Fecha'], // 'Forma_de_Pago' => $reg['Forma_de_Pago'], // 'Tarifa' => $reg['Tarifa'], // 'Funcionario' => $reg['Funcionario'], // 'Parking' => $reg['Parking'], // 'Columna1' => $reg['Columna1'] // ]; // } // echo json_encode($responses); return $response; } // Ejemplo de uso // $archivo = $_SERVER['DOCUMENT_ROOT'] . '/Clientes/Aeropuertos/SAP/prueba2.xlsx'; // Ruta del archivo Excel // $archivo = 'prueba2.xlsx'; // Ruta del archivo Excel $resultado = leer(); // Mostrar los resultados echo "\n"; print_r($resultado); } else{ $respuesta->codigo = 504; $respuesta->error = "Error"; $respuesta->msj = "No recibo action reconocible en la solicitud."; echo json_encode($respuesta); return $respuesta; } } } else if($tipoDatoRecibido=="application/json"){ $f = new Functions(); $action = $f->JSON("action"); $data = $f->JSON("data"); if($action=="testExcel2"){ // Incluir la clase IOFactory de PhpSpreadsheet // require_once $_SERVER['DOCUMENT_ROOT'] . '/Tools/Packages/phpoffice/phpspreadsheet/src/PhpSpreadsheet/IOFactory.php'; function leer() { $data = []; $responses = []; $conn = mysqli_connect("localhost", "root", "adnoh.1", "testing", 3306); if(!$conn){ return "Error al conectarse a la base: " . mysqli_connect_error(); // return; } $c = "SELECT ID, Monto, Usuario, Fecha, Forma_de_Pago, Tarifa, Funcionario, Parking, Columna1 FROM testSAP;"; $r = mysqli_query($conn, $c); $result = mysqli_fetch_all($r); foreach($result as $row){ $data[] = [ 'ID' => $row[0], 'Monto' => $row[1], 'Usuario' => $row[2], 'Fecha' => $row[3], 'Forma_de_Pago' => $row[4], 'Tarifa' => $row[5], 'Funcionario' => $row[6], 'Parking' => $row[7], 'Columna1' => $row[8] ]; // $send = "action=testSAPHANA&importe=$row[1]"; // $curl = curl_init(); // curl_setopt_array($curl, array( // CURLOPT_URL => 'https://ws.iparkings.com/Clientes/Aeropuertos/SAP/app.php', // CURLOPT_RETURNTRANSFER => true, // CURLOPT_ENCODING => '', // CURLOPT_MAXREDIRS => 10, // CURLOPT_TIMEOUT => 0, // CURLOPT_FOLLOWLOCATION => true, // CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, // CURLOPT_CUSTOMREQUEST => 'POST', // CURLOPT_POSTFIELDS => $send, // CURLOPT_HTTPHEADER => array( // 'Content-Type: application/x-www-form-urlencoded' // ), // )); // $response = curl_exec($curl); // curl_close($curl); // // echo $response; // $responses[] = // [ // "ID" => $row[0], // "response" => $response // ]; } // while($reg = mysqli_fetch_assoc($r)){ // $data[] = // [ // 'ID' => $reg['ID'], // 'Monto' => $reg['Monto'], // 'Usuario' => $reg['Usuario'], // 'Fecha' => $reg['Fecha'], // 'Forma_de_Pago' => $reg['Forma_de_Pago'], // 'Tarifa' => $reg['Tarifa'], // 'Funcionario' => $reg['Funcionario'], // 'Parking' => $reg['Parking'], // 'Columna1' => $reg['Columna1'] // ]; // } echo json_encode($responses); return $data; } // Ejemplo de uso // $archivo = $_SERVER['DOCUMENT_ROOT'] . '/Clientes/Aeropuertos/SAP/prueba2.xlsx'; // Ruta del archivo Excel // $archivo = 'prueba2.xlsx'; // Ruta del archivo Excel $resultado = leer(); // Mostrar los resultados echo "\n"; echo json_encode($resultado); } else if($action=="testSAPHANA"){ // if($razonSocial==""){ // $razonSocial = "CAJERO 1"; // } // $response = [$importe, $razonSocial, $data]; // echo json_encode($response); // return $response; $fecha = new DateTime(); $fechaDocumento = $fecha->format("Ymd"); $jsonDATAstart = '{"facturas": ['; $jsonDATA = ''; $jsonDATAend = ']}'; $jsonDATAFactura = ""; $dataTotales = count($data); $actual = 1; foreach($data as $row){ $importe = $row["Monto"]; $razonSocial = $row["Funcionario"]; $jsonDATAFacturaStart = '['; $jsonDATAFacturaEnd = '],'; if($actual==$dataTotales){ $jsonDATAFacturaEnd = ']'; } $jsonDATAFactura .= $jsonDATAFacturaStart . '{ "lineaImporteImpuestos": { "valorBaseImpuesto": "0", "posicion": "0000000003", "moneda": "UYU", "importeImpuesto": "0", "codigoMoneda": "00" }, "lineaImporte": [ { "posicion": "0000000002", "moneda": "UYU", "importe": "-'.$importe.'", "codigoMoneda": "00" }, { "posicion": "0000000001", "moneda": "UYU", "importe": "'.$importe.'", "codigoMoneda": "00" } ], "impuestos": { "posicion": "0000000003", "codigoImpuesto": "D0" }, "cuentaMayor": [ {' // '."profit": "AAA0010",.' // .'"profit": "DUMMY", .'"profit": "PDP-0410", "posicion": "0000000002", "item": "Parking", "cuentaContable": "4200610000", "codigoImpuesto": "D0" } ], "cliente": { "razonSocial": "'.$razonSocial.'",'. // "razonSocial": "CAJERO 1", '"posicion": "0000000001",'. // "fechaVencimiento": "20241211", '"fechaVencimiento": "'.$fechaDocumento.'", "condicionPago": "Z000",' // "clienteSAP": "4000007421" .'"clienteSAP": "4000009717" }, "cabecera": { "usuario": "RFCUSER_IP",'. // "usuario": "RFCUSERWS", '"tipoDoc": "ES", "sociedad": "UY02", "ruc": "", "nroLegal": "10816", "idSalesforce": "",'. // "fechaDocumento": "20241211", // "fechaContabilizacion": "20241211" ' "fechaDocumento": "'.$fechaDocumento.'", "fechaContabilizacion": "'.$fechaDocumento.'" }, "ampliaciones": { "puntoVenta": "0003" } }' . $jsonDATAFacturaEnd; $actual++; } $jsonDATA = $jsonDATAstart.$jsonDATAFactura.$jsonDATAend; $sendData = '{"action": "testSAP", '.$jsonDATA.'}'; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://ws.iparkings.com/Clientes/Aeropuertos/SAP/app.php', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => $sendData, CURLOPT_HTTPHEADER => array( 'Content-Type: application/json' ), )); $response = curl_exec($curl); curl_close($curl); // echo $response; return $response; $response = [$sendData]; echo print_r($response); return $response; $curl = curl_init(); curl_setopt_array($curl, array( // CURLOPT_URL => 'https://caap-int-suite.authentication.br10.hana.ondemand.com/oauth/token?grant_type=client_credentials', CURLOPT_URL => url1TEST, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_POSTFIELDS => 'company_id=SFPART050233&grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Asaml2-bearer&client_id=YTQ3OTA5ZDg0Yjc1NWM2MTI1YWNmNDY0NmVlYw&assertion=PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbDI6QXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBJRD0iNTM2N2E3Y2ItZGE5OC00ZmIxLWEzZWUtZGNmZTFhM2Y0OWI5IiBJc3N1ZUluc3RhbnQ9IjIwMjMtMTEtMDhUMTQ6MDY6MzQuNzY2WiIgVmVyc2lvbj0iMi4wIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sMjpJc3N1ZXI%2Bd3d3LnN1Y2Nlc3NmYWN0b3JzLmNvbTwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8%2BPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iIzUzNjdhN2NiLWRhOTgtNGZiMS1hM2VlLWRjZmUxYTNmNDliOSI%2BPGRzOlRyYW5zZm9ybXM%2BPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8%2BPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI%2BPGVjOkluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM6ZWM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0ieHMiLz48L2RzOlRyYW5zZm9ybT48L2RzOlRyYW5zZm9ybXM%2BPGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8%2BPGRzOkRpZ2VzdFZhbHVlPnpsSFkxcDRXZHNBZ3lnY3RaTC80WnQrWXowTT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU%2BR25nVGlKbVFocFc5TjdoQzdTR3ZGaGtoUHdvMjI0Mk84WWczZklzY0ppZ2FqRTE2bDlhekdZNWJka2dCNnUzNHplNWttZDlUM1BNQmo1Wm94VitTcDRSSFU2Y3JoVFVsM29pc0t1NmswK05NOGwxN3VIeDB5MjV0cmdlSVhnK2Q0UzY2bVE5QXl2TEFYYytYdGgvUUo5Sm52aEg1UHVTMXo5NUp4eHlGNURYcEhxekRURjY4M0JLM3hXc2JmVkRSQk1HU0RlNm9uT1pTWmJSc3VRL0V3ZEZOaURkQ1h6VHVoU2dDczZWV2cyaWtlUjg5ME13M2R3VUpSa2xqeEtXVkR3SWgwREJtUHhVRTVYZncwTFhua0pVZXFwUFFvbVJyTGVqam8zdW1qa3ZMSGJ0dENCNkJ6eHFuZzh6ZkZWS2JVN2NNZnozN2dDN2ErR0UvNGlwSnRnPT08L2RzOlNpZ25hdHVyZVZhbHVlPjwvZHM6U2lnbmF0dXJlPjxzYW1sMjpTdWJqZWN0PjxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDp1bnNwZWNpZmllZCI%2BUlBFUlRJRVJSQUFQSTwvc2FtbDI6TmFtZUlEPjxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI%2BPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAyMy0xMS0wOFQxNDoxNjozNC43NjZaIiBSZWNpcGllbnQ9Imh0dHBzOi8vYXBpc2FsZXNkZW1vOC5zdWNjZXNzZmFjdG9ycy5jb20vb2F1dGgvdG9rZW4iLz48L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24%2BPC9zYW1sMjpTdWJqZWN0PjxzYW1sMjpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAyMy0xMS0wOFQxMzo1NjozNC43NjZaIiBOb3RPbk9yQWZ0ZXI9IjIwMjMtMTEtMDhUMTQ6MTY6MzQuNzY2WiI%2BPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24%2BPHNhbWwyOkF1ZGllbmNlPnd3dy5zdWNjZXNzZmFjdG9ycy5jb208L3NhbWwyOkF1ZGllbmNlPjwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWwyOkNvbmRpdGlvbnM%2BPHNhbWwyOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAyMy0xMS0wOFQxNDowNjozNC43NjZaIiBTZXNzaW9uSW5kZXg9IjRhZTFhMmRjLTM2ODUtNGY2NS1iM2ZiLTFjOGYwODU3Nzk5YSI%2BPHNhbWwyOkF1dGhuQ29udGV4dD48c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY%2BdXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDI6QXV0aG5Db250ZXh0Pjwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ%2BPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD48c2FtbDI6QXR0cmlidXRlIE5hbWU9ImFwaV9rZXkiPjxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ZVFEzT1RBNVpEZzBZamMxTldNMk1USTFZV05tTkRZME5tVmxZdzwvc2FtbDI6QXR0cmlidXRlVmFsdWU%2BPC9zYW1sMjpBdHRyaWJ1dGU%2BPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ%2BPC9zYW1sMjpBc3NlcnRpb24%2B%0A', CURLOPT_HTTPHEADER => array( 'Content-Type: application/x-www-form-urlencoded', 'Authorization: Basic c2ItMWY0ODc1YWMtNmVlYS00MTBiLTk2ZTEtNTIyMTViYTg2ODZhIWIxNzk1N3xpdC1ydC1kZXYtaW50LXN1aXRlIWIxMDY6YzQ2OGY3ODUtMjE1ZS00ZDIzLTg3NjktZDJmODBlNjBlNDlhJGVjRW1ISjVvRkp3UkNSN21JVzl1NEJqNldreHZGS0VLSFFXOXhEOHdYMVU9' ), )); $response = curl_exec($curl); curl_close($curl); $resp = json_decode($response); $access_token = $resp->access_token; $autorization = 'Authorization: Bearer ' . $access_token; $curl2 = curl_init(); curl_setopt_array($curl2, array( // CURLOPT_URL => 'https://caap-int-suite.it-cpi008-rt.cfapps.br10.hana.ondemand.com/http/LoQueSea', CURLOPT_URL => url2TEST, CURLOPT_HEADER => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'X-CSRF-Token: fetch', $autorization ), )); $response2 = curl_exec($curl2); curl_close($curl2); $resp2 = json_decode($response2); // echo "Resp2:
"; // echo var_dump($resp2); // Separa los headers del cuerpo $header_size = curl_getinfo($curl2, CURLINFO_HEADER_SIZE); $headers = substr($response2, 0, $header_size); $body = substr($response2, $header_size); // echo "Headers:
"; // echo $headers; // echo "
"; // echo "Body:
"; // echo $body; // echo "
"; // Convierte los headers en un array por líneas $header_lines = explode("\r\n", $headers); // Inicializa un array para almacenar los headers clave => valor $headers_array = []; // Procesa cada línea foreach ($header_lines as $line) { // Si la línea contiene un ":", la dividimos en nombre y valor if (strpos($line, ":") !== false) { list($name, $value) = explode(":", $line, 2); $headers_array[strtolower(trim($name))] = trim($value); // Guardamos en minúsculas } } // Accede a los valores específicos $corrId = isset($headers_array['x-correlationid']) ? $headers_array['x-correlationid'] : null; $csrfToken = isset($headers_array['x-csrf-token']) ? $headers_array['x-csrf-token'] : null; // echo "headers_array:
"; // echo var_dump($headers_array); // echo "
"; // echo "corrId:
"; // echo $corrId; // echo "
"; // echo "csrfToken:
"; // echo $csrfToken; $fecha = new DateTime(); $fechaDocumento = $fecha->format("Ymd"); // $jsonDATA = '{ // "facturas": [ // { // "lineaImporteImpuestos": { // "valorBaseImpuesto": "0", // "posicion": "0000000003", // "moneda": "UYU", // "importeImpuesto": "0", // "codigoMoneda": "00" // }, // "lineaImporte": [ // { // "posicion": "0000000002", // "moneda": "UYU", // "importe": "-'.$importe.'", // "codigoMoneda": "00" // }, // { // "posicion": "0000000001", // "moneda": "UYU", // "importe": "'.$importe.'", // "codigoMoneda": "00" // } // ], // "impuestos": { // "posicion": "0000000003", // "codigoImpuesto": "D0" // }, // "cuentaMayor": [ // {' // // '."profit": "AAA0010",.' // // .'"profit": "DUMMY", // .'"profit": "PDP-0410", // "posicion": "0000000002", // "item": "Parking", // "cuentaContable": "4200610000", // "codigoImpuesto": "D0" // } // ], // "cliente": { // "razonSocial": "'.$razonSocial.'",'. // // "razonSocial": "CAJERO 1", // '"posicion": "0000000001",'. // // "fechaVencimiento": "20241211", // '"fechaVencimiento": "'.$fechaDocumento.'", // "condicionPago": "Z000",' // // "clienteSAP": "4000007421" // .'"clienteSAP": "4000009717" // }, // "cabecera": { // "usuario": "RFCUSERWS", // "tipoDoc": "ES", // "sociedad": "UY02", // "ruc": "", // "nroLegal": "10816", // "idSalesforce": "",'. // // "fechaDocumento": "20241211", // // "fechaContabilizacion": "20241211" // ' // "fechaDocumento": "'.$fechaDocumento.'", // "fechaContabilizacion": "'.$fechaDocumento.'" // }, // "ampliaciones": { // "puntoVenta": "0003" // } // } // ] // }'; $xCSRFtoken = "X-CSRF-Token: $corrId"; $curl3 = curl_init(); curl_setopt_array($curl3, array( // CURLOPT_URL => 'https://caap-int-suite.it-cpi008-rt.cfapps.br10.hana.ondemand.com/http/LoQueSea', CURLOPT_URL => url2TEST, CURLOPT_HEADER => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_POSTFIELDS => json_encode($jsonDATA, true, JSON_UNESCAPED_UNICODE), CURLOPT_HTTPHEADER => array( $xCSRFtoken, 'Content-Type: application/json', $autorization ), )); $response3 = curl_exec($curl3); $respuesta->response3 = $response3; curl_close($curl3); $resp3 = json_decode($response3); // Separa los headers del cuerpo $header_size = curl_getinfo($curl3, CURLINFO_HEADER_SIZE); $headers = substr($response3, 0, $header_size); $body = substr($response3, $header_size); // Decodificar el cuerpo JSON $jsonDataResponse = json_decode($body, true); // echo "Headers:
"; // echo $headers; // echo "
"; // echo "Body:
"; // echo $body; // echo "
"; // Convierte los headers en un array por líneas $header_lines = explode("\r\n", $headers); // Inicializa un array para almacenar los headers clave => valor $headers_array = []; // Procesa cada línea foreach ($header_lines as $line) { // Si la línea contiene un ":", la dividimos en nombre y valor if (strpos($line, ":") !== false) { list($name, $value) = explode(":", $line, 2); $headers_array[strtolower(trim($name))] = trim($value); // Guardamos en minúsculas } } // Accede a los valores específicos $corrId = isset($headers_array['x-correlationid']) ? $headers_array['x-correlationid'] : null; $csrfToken = isset($headers_array['x-csrf-token']) ? $headers_array['x-csrf-token'] : null; $respuesta->xcorrelationid = $corrId; $respuesta->csrfToken = $csrfToken; $respuesta->body = $body; $respuesta->jsonDataResponse = $jsonDataResponse; echo json_encode($respuesta); return $respuesta; } else if($action=="testSAP"){ // if($razonSocial==""){ // $razonSocial = "CAJERO 1"; // } // $response = [$importe, $razonSocial, $data]; // echo json_encode($response); // return $response; // $response = [$action, $data]; // echo json_encode($response, true, JSON_UNESCAPED_UNICODE); // return $response; $curl = curl_init(); curl_setopt_array($curl, array( // CURLOPT_URL => 'https://caap-int-suite.authentication.br10.hana.ondemand.com/oauth/token?grant_type=client_credentials', CURLOPT_URL => url1TEST, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_POSTFIELDS => 'company_id=SFPART050233&grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Asaml2-bearer&client_id=YTQ3OTA5ZDg0Yjc1NWM2MTI1YWNmNDY0NmVlYw&assertion=PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbDI6QXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBJRD0iNTM2N2E3Y2ItZGE5OC00ZmIxLWEzZWUtZGNmZTFhM2Y0OWI5IiBJc3N1ZUluc3RhbnQ9IjIwMjMtMTEtMDhUMTQ6MDY6MzQuNzY2WiIgVmVyc2lvbj0iMi4wIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPjxzYW1sMjpJc3N1ZXI%2Bd3d3LnN1Y2Nlc3NmYWN0b3JzLmNvbTwvc2FtbDI6SXNzdWVyPjxkczpTaWduYXR1cmUgeG1sbnM6ZHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8%2BPGRzOlNpZ25hdHVyZU1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMDQveG1sZHNpZy1tb3JlI3JzYS1zaGEyNTYiLz48ZHM6UmVmZXJlbmNlIFVSST0iIzUzNjdhN2NiLWRhOTgtNGZiMS1hM2VlLWRjZmUxYTNmNDliOSI%2BPGRzOlRyYW5zZm9ybXM%2BPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8%2BPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyI%2BPGVjOkluY2x1c2l2ZU5hbWVzcGFjZXMgeG1sbnM6ZWM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIgUHJlZml4TGlzdD0ieHMiLz48L2RzOlRyYW5zZm9ybT48L2RzOlRyYW5zZm9ybXM%2BPGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8%2BPGRzOkRpZ2VzdFZhbHVlPnpsSFkxcDRXZHNBZ3lnY3RaTC80WnQrWXowTT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU%2BR25nVGlKbVFocFc5TjdoQzdTR3ZGaGtoUHdvMjI0Mk84WWczZklzY0ppZ2FqRTE2bDlhekdZNWJka2dCNnUzNHplNWttZDlUM1BNQmo1Wm94VitTcDRSSFU2Y3JoVFVsM29pc0t1NmswK05NOGwxN3VIeDB5MjV0cmdlSVhnK2Q0UzY2bVE5QXl2TEFYYytYdGgvUUo5Sm52aEg1UHVTMXo5NUp4eHlGNURYcEhxekRURjY4M0JLM3hXc2JmVkRSQk1HU0RlNm9uT1pTWmJSc3VRL0V3ZEZOaURkQ1h6VHVoU2dDczZWV2cyaWtlUjg5ME13M2R3VUpSa2xqeEtXVkR3SWgwREJtUHhVRTVYZncwTFhua0pVZXFwUFFvbVJyTGVqam8zdW1qa3ZMSGJ0dENCNkJ6eHFuZzh6ZkZWS2JVN2NNZnozN2dDN2ErR0UvNGlwSnRnPT08L2RzOlNpZ25hdHVyZVZhbHVlPjwvZHM6U2lnbmF0dXJlPjxzYW1sMjpTdWJqZWN0PjxzYW1sMjpOYW1lSUQgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDp1bnNwZWNpZmllZCI%2BUlBFUlRJRVJSQUFQSTwvc2FtbDI6TmFtZUlEPjxzYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI%2BPHNhbWwyOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAyMy0xMS0wOFQxNDoxNjozNC43NjZaIiBSZWNpcGllbnQ9Imh0dHBzOi8vYXBpc2FsZXNkZW1vOC5zdWNjZXNzZmFjdG9ycy5jb20vb2F1dGgvdG9rZW4iLz48L3NhbWwyOlN1YmplY3RDb25maXJtYXRpb24%2BPC9zYW1sMjpTdWJqZWN0PjxzYW1sMjpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAyMy0xMS0wOFQxMzo1NjozNC43NjZaIiBOb3RPbk9yQWZ0ZXI9IjIwMjMtMTEtMDhUMTQ6MTY6MzQuNzY2WiI%2BPHNhbWwyOkF1ZGllbmNlUmVzdHJpY3Rpb24%2BPHNhbWwyOkF1ZGllbmNlPnd3dy5zdWNjZXNzZmFjdG9ycy5jb208L3NhbWwyOkF1ZGllbmNlPjwvc2FtbDI6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWwyOkNvbmRpdGlvbnM%2BPHNhbWwyOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAyMy0xMS0wOFQxNDowNjozNC43NjZaIiBTZXNzaW9uSW5kZXg9IjRhZTFhMmRjLTM2ODUtNGY2NS1iM2ZiLTFjOGYwODU3Nzk5YSI%2BPHNhbWwyOkF1dGhuQ29udGV4dD48c2FtbDI6QXV0aG5Db250ZXh0Q2xhc3NSZWY%2BdXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L3NhbWwyOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDI6QXV0aG5Db250ZXh0Pjwvc2FtbDI6QXV0aG5TdGF0ZW1lbnQ%2BPHNhbWwyOkF0dHJpYnV0ZVN0YXRlbWVudD48c2FtbDI6QXR0cmlidXRlIE5hbWU9ImFwaV9rZXkiPjxzYW1sMjpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6c3RyaW5nIj5ZVFEzT1RBNVpEZzBZamMxTldNMk1USTFZV05tTkRZME5tVmxZdzwvc2FtbDI6QXR0cmlidXRlVmFsdWU%2BPC9zYW1sMjpBdHRyaWJ1dGU%2BPC9zYW1sMjpBdHRyaWJ1dGVTdGF0ZW1lbnQ%2BPC9zYW1sMjpBc3NlcnRpb24%2B%0A', CURLOPT_HTTPHEADER => array( 'Content-Type: application/x-www-form-urlencoded', 'Authorization: Basic c2ItMWY0ODc1YWMtNmVlYS00MTBiLTk2ZTEtNTIyMTViYTg2ODZhIWIxNzk1N3xpdC1ydC1kZXYtaW50LXN1aXRlIWIxMDY6YzQ2OGY3ODUtMjE1ZS00ZDIzLTg3NjktZDJmODBlNjBlNDlhJGVjRW1ISjVvRkp3UkNSN21JVzl1NEJqNldreHZGS0VLSFFXOXhEOHdYMVU9' ), )); $response = curl_exec($curl); curl_close($curl); $resp = json_decode($response); $access_token = $resp->access_token; $autorization = 'Authorization: Bearer ' . $access_token; $curl2 = curl_init(); curl_setopt_array($curl2, array( // CURLOPT_URL => 'https://caap-int-suite.it-cpi008-rt.cfapps.br10.hana.ondemand.com/http/LoQueSea', CURLOPT_URL => url2TEST, CURLOPT_HEADER => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'X-CSRF-Token: fetch', $autorization ), )); $response2 = curl_exec($curl2); curl_close($curl2); $resp2 = json_decode($response2); // echo "Resp2:
"; // echo var_dump($resp2); // Separa los headers del cuerpo $header_size = curl_getinfo($curl2, CURLINFO_HEADER_SIZE); $headers = substr($response2, 0, $header_size); $body = substr($response2, $header_size); // echo "Headers:
"; // echo $headers; // echo "
"; // echo "Body:
"; // echo $body; // echo "
"; // Convierte los headers en un array por líneas $header_lines = explode("\r\n", $headers); // Inicializa un array para almacenar los headers clave => valor $headers_array = []; // Procesa cada línea foreach ($header_lines as $line) { // Si la línea contiene un ":", la dividimos en nombre y valor if (strpos($line, ":") !== false) { list($name, $value) = explode(":", $line, 2); $headers_array[strtolower(trim($name))] = trim($value); // Guardamos en minúsculas } } // Accede a los valores específicos $corrId = isset($headers_array['x-correlationid']) ? $headers_array['x-correlationid'] : null; $csrfToken = isset($headers_array['x-csrf-token']) ? $headers_array['x-csrf-token'] : null; // echo "headers_array:
"; // echo var_dump($headers_array); // echo "
"; // echo "corrId:
"; // echo $corrId; // echo "
"; // echo "csrfToken:
"; // echo $csrfToken; $fecha = new DateTime(); $fechaDocumento = $fecha->format("Ymd"); // $jsonDATA = '{ // "facturas": [ // { // "lineaImporteImpuestos": { // "valorBaseImpuesto": "0", // "posicion": "0000000003", // "moneda": "UYU", // "importeImpuesto": "0", // "codigoMoneda": "00" // }, // "lineaImporte": [ // { // "posicion": "0000000002", // "moneda": "UYU", // "importe": "-'.$importe.'", // "codigoMoneda": "00" // }, // { // "posicion": "0000000001", // "moneda": "UYU", // "importe": "'.$importe.'", // "codigoMoneda": "00" // } // ], // "impuestos": { // "posicion": "0000000003", // "codigoImpuesto": "D0" // }, // "cuentaMayor": [ // {' // // '."profit": "AAA0010",.' // // .'"profit": "DUMMY", // .'"profit": "PDP-0410", // "posicion": "0000000002", // "item": "Parking", // "cuentaContable": "4200610000", // "codigoImpuesto": "D0" // } // ], // "cliente": { // "razonSocial": "'.$razonSocial.'",'. // // "razonSocial": "CAJERO 1", // '"posicion": "0000000001",'. // // "fechaVencimiento": "20241211", // '"fechaVencimiento": "'.$fechaDocumento.'", // "condicionPago": "Z000",' // // "clienteSAP": "4000007421" // .'"clienteSAP": "4000009717" // }, // "cabecera": { // "usuario": "RFCUSERWS", // "tipoDoc": "ES", // "sociedad": "UY02", // "ruc": "", // "nroLegal": "10816", // "idSalesforce": "",'. // // "fechaDocumento": "20241211", // // "fechaContabilizacion": "20241211" // ' // "fechaDocumento": "'.$fechaDocumento.'", // "fechaContabilizacion": "'.$fechaDocumento.'" // }, // "ampliaciones": { // "puntoVenta": "0003" // } // } // ] // }'; $xCSRFtoken = "X-CSRF-Token: $corrId"; $curl3 = curl_init(); curl_setopt_array($curl3, array( // CURLOPT_URL => 'https://caap-int-suite.it-cpi008-rt.cfapps.br10.hana.ondemand.com/http/LoQueSea', CURLOPT_URL => url2TEST, CURLOPT_HEADER => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_POSTFIELDS => json_encode($data, true, JSON_UNESCAPED_UNICODE), CURLOPT_HTTPHEADER => array( $xCSRFtoken, 'Content-Type: application/json', $autorization ), )); $response3 = curl_exec($curl3); $respuesta->response3 = $response3; curl_close($curl3); $resp3 = json_decode($response3); // Separa los headers del cuerpo $header_size = curl_getinfo($curl3, CURLINFO_HEADER_SIZE); $headers = substr($response3, 0, $header_size); $body = substr($response3, $header_size); // Decodificar el cuerpo JSON $jsonDataResponse = json_decode($body, true); // echo "Headers:
"; // echo $headers; // echo "
"; // echo "Body:
"; // echo $body; // echo "
"; // Convierte los headers en un array por líneas $header_lines = explode("\r\n", $headers); // Inicializa un array para almacenar los headers clave => valor $headers_array = []; // Procesa cada línea foreach ($header_lines as $line) { // Si la línea contiene un ":", la dividimos en nombre y valor if (strpos($line, ":") !== false) { list($name, $value) = explode(":", $line, 2); $headers_array[strtolower(trim($name))] = trim($value); // Guardamos en minúsculas } } // Accede a los valores específicos $corrId = isset($headers_array['x-correlationid']) ? $headers_array['x-correlationid'] : null; $csrfToken = isset($headers_array['x-csrf-token']) ? $headers_array['x-csrf-token'] : null; $respuesta->xcorrelationid = $corrId; $respuesta->csrfToken = $csrfToken; $respuesta->body = $body; $respuesta->jsonDataResponse = $jsonDataResponse; echo json_encode($respuesta); return $respuesta; } else{ $respuesta->codigo = 502; $respuesta->error = "Error"; $respuesta->msj = "No recibo action válido."; echo json_encode($respuesta); return $respuesta; } } else{ $respuesta->codigo = 504; $respuesta->error = "Error"; $respuesta->msj = "No recibo tipo de dato reconocible en la solicitud."; echo json_encode($respuesta); return $respuesta; } ?>