Estoy implementando la segunda parte para el envio de guias de remisión electrónica a Sunat, que es la obtención del ticket.
Este es mi código como lo tengo hasta ahora:
Code: Select all
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
// EJEMPLO cZipFile: 20522209636-09-T001-00000461.zip
// dentro del zip se encuentra el .xml con el nombre 20522209636-09-T001-00000461.xml
// cUrl es una url de prueba, no es de producción
FUNC SunatGRE_GetTicket( cZipFile )
LOCAL cCPEName := STRTRAN( cZipFile , ".zip" )
LOCAL cZipFileContent := FileStr( cZipFile )
LOCAL cBase64ContentFile := hb_Base64Encode( cZipFileContent, Len( cZipFileContent ) )
LOCAL cZipHash := "" //?? Hash del archivo zip enviado. Debe calcularse el hash del archivo zip haciendo uso del algoritmo SHA-256.
LOCAL cUrl := "https://gre-test.nubefact.com/v1/contribuyente/gem/comprobantes/" + cCPEName
LOCAL cToken := hb_memoread( "token_id.txt" ) //aqui leo el token obtenido en el proceso anterior en el que EDK me ayudó.
LOCAL cBody := ""
// oRestApi := ApiRestOpen()
// IF ! EMPTY(oRestApi)
hZip := { => }
hZip ["nomArchivo"] := cZipFile
hZip ["arcGreZip"] := cBase64ContentFile
hZip ["hashZip"] := cZipHash //<- usar algoritmo SHA-256.
hBody := { => }
hBody ["archivo"] := hZip
cJson := hb_jsonEncode( hBody , .T. )
hb_memowrit( "sunat_body.txt" , cJson )
//cBody is x-www-form-urlencoded
// hb_HEval ( hBody, { | cKey, cValue | cBody += IF ( !Empty ( cBody ), "&", "" ) + AllTrim ( cKey ) + "=" + tip_URLEncode( cValue ) } )
/* cResp := ApiRestSend( oRestApi , "POST" , "application/json" , cURL , cBody , , "application/x-www-form-urlencoded" )
hb_jsondecode( cResp , @aData )
hb_memowrit( 'respuesta_sunat.txt' , cResp )
hBody := Nil
IF VALTYPE(aData) = 'H'
ENDIF
ENDIF
oRestApi := NIL
*/
RETURN( cHash )
Mi pregunta es ¿ como hago para obtener el hash del zip usando algoritmo SHA-256. ? - Gracias anticipadas amigos y saludos.
P.D. Adjunto un zip por si desean hacer pruebas.