PureBasic
PureBasic
hacienda.go.cr Recepción de comprobantes electrónicos y respuestas del receptor.
See more hacienda.go.cr Examples
Comprobantes Electrónicos API version v1 -- Recepción de comprobantes electrónicos y respuestas del receptor.Chilkat PureBasic Downloads
IncludeFile "CkBinData.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkJsonObject.pb"
IncludeFile "CkHttpResponse.pb"
Procedure ChilkatExample()
success.i = 0
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
http.i = CkHttp::ckCreate()
If http.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Implements the following CURL command:
; curl -X POST -H "Content-Type: application / json" \
; -H 'authorization: Bearer {access_token}' \
; -d '{
; "clave": "50601011600310112345600100010100000000011999999999",
; "fecha": "2016-01-01T00:00:00-0600",
; "emisor": {
; "tipoIdentificacion": "02",
; "numeroIdentificacion": "003101123456"
; },
; "receptor": {
; "tipoIdentificacion": "02",
; "numeroIdentificacion": "003101123456"
; },
; "comprobanteXml": "PD94..."
; }' https://api.comprobanteselectronicos.go.cr/recepcion/v1/recepcion
; Use the following online tool to generate HTTP code from a CURL command
; Convert a cURL Command to HTTP Source Code
; Use this online tool to generate code from sample JSON:
; Generate Code to Create JSON
; The following JSON is sent in the request body.
; {
; "clave": "50601011600310112345600100010100000000011999999999",
; "fecha": "2016-01-01T00:00:00-0600",
; "emisor": {
; "tipoIdentificacion": "02",
; "numeroIdentificacion": "003101123456"
; },
; "receptor": {
; "tipoIdentificacion": "02",
; "numeroIdentificacion": "003101123456"
; },
; "comprobanteXml": "PD94b..."
; }
; Load the previously signed XML.
bdSignedXml.i = CkBinData::ckCreate()
If bdSignedXml.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkBinData::ckLoadFile(bdSignedXml,"someDir/signed.xml")
If success = 0
Debug "Failed to load the XAdES signed XML."
CkHttp::ckDispose(http)
CkBinData::ckDispose(bdSignedXml)
ProcedureReturn
EndIf
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckUpdateString(json,"clave","50601011600310112345600100010100000000011999999999")
CkJsonObject::ckUpdateString(json,"fecha","2016-01-01T00:00:00-0600")
CkJsonObject::ckUpdateString(json,"emisor.tipoIdentificacion","02")
CkJsonObject::ckUpdateString(json,"emisor.numeroIdentificacion","003101123456")
CkJsonObject::ckUpdateString(json,"receptor.tipoIdentificacion","02")
CkJsonObject::ckUpdateString(json,"receptor.numeroIdentificacion","003101123456")
; Add the base64 encoded representation of the signed XML.
CkJsonObject::ckUpdateString(json,"comprobanteXml",CkBinData::ckGetEncoded(bdSignedXml,"base64"))
; Load our previously obtained OAuth2 access token.
jsonToken.i = CkJsonObject::ckCreate()
If jsonToken.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/hacienda_cr.json")
If success <> 1
Debug "Failed to load constantContact.json"
CkHttp::ckDispose(http)
CkBinData::ckDispose(bdSignedXml)
CkJsonObject::ckDispose(json)
CkJsonObject::ckDispose(jsonToken)
ProcedureReturn
EndIf
; Adds the "Authorization: Bearer {access_token}" header.
CkHttp::setCkAuthToken(http, CkJsonObject::ckStringOf(jsonToken,"access_token"))
CkHttp::ckSetRequestHeader(http,"Content-Type","application / json")
resp.i = CkHttpResponse::ckCreate()
If resp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkHttp::ckHttpJson(http,"POST","https://api.comprobanteselectronicos.go.cr/recepcion/v1/recepcion",json,"application/json",resp)
If success = 0
Debug CkHttp::ckLastErrorText(http)
CkHttp::ckDispose(http)
CkBinData::ckDispose(bdSignedXml)
CkJsonObject::ckDispose(json)
CkJsonObject::ckDispose(jsonToken)
CkHttpResponse::ckDispose(resp)
ProcedureReturn
EndIf
; A 201 status code indicates success.
Debug "Response status code: " + Str(CkHttpResponse::ckStatusCode(resp))
Debug "Response body:"
Debug CkHttpResponse::ckBodyStr(resp)
CkHttp::ckDispose(http)
CkBinData::ckDispose(bdSignedXml)
CkJsonObject::ckDispose(json)
CkJsonObject::ckDispose(jsonToken)
CkHttpResponse::ckDispose(resp)
ProcedureReturn
EndProcedure