Página 1 de 3

API para CIOT

Enviado: 27 Mar 2023 14:03
por Alexandre Silva
Pessoal
Alguem usa a API da Truckpay para CIOT ou Vale Pedagio ?

Como faço para poder usar a API para emitir o CIOT
Documentacao
https://doc.truckpadpay.com.br/


Tenho esses 2 modelos abaixo que usam #include "hbapi.h"
esse include faz referencia ao hbdefs.h que por sua vez faz referencia
a uma serie de arquvos stxxxx.h , E nao tenho esses arquivos , Nao consigo compilar
Ta faltando o que no harbour 3.2 ?

Código: Selecionar todos

#include "hbapi.h"

PROCEDURE gerarCIOT()
    LOCAL cUrl := "https://api.truckpadpay.com.br/v1/emissao";
    LOCAL cToken := "seu-token-aqui";
    LOCAL oData := {} 
    oData["valor"] := 1000.00
    oData["id_carreteiro"] := "123456"
    oData["tipo_operacao"] := "carga"
    oData["descricao"] := "Frete para São Paulo"
    oData["placa_veiculo"] := "AAA1234"
    oData["placa_reboque1"] := "BBB5678"
    oData["cpf_cnpj_pagar"] := "12345678900"
    oData["nome_pagar"] := "Transportadora XPTO"
    oData["cidade_origem"] := "Rio de Janeiro"
    oData["uf_origem"] := "RJ"
    oData["cidade_destino"] := "São Paulo"
    oData["uf_destino"] := "SP"
    
    LOCAL cJson := JsonToStr(oData)
    LOCAL oHeaders := {}
    oHeaders["Content-Type"] := "application/json"
    oHeaders["Authorization"] := "Bearer " + cToken
    LOCAL cResult := HttpPost(cUrl, cJson, oHeaders)
    
    ? "Resultado: ", cResult

    LOCAL oResponse := JsonToObj(cResult)
    IF oResponse.success = .T.
        ? "CIOT gerado: ", oResponse.dados.ciot
    ELSE
        ? "Erro ao gerar CIOT: ", oResponse.mensagem
    ENDIF
RETURN
esse outro tambem

Código: Selecionar todos

#include "hbapi.h"

PROCEDURE main()
    LOCAL cUrl, cToken, cCnpj, cCpf, cOrigem, cDestino, cValor, cCIOT
    cUrl := "https://api.truckpad.io/v1/payments/ciot"
    cToken := "SEU_TOKEN_DE_AUTORIZACAO"
    cCnpj := "CNPJ_DO_EMITENTE"
    cCpf := "CPF_DO_TOMADOR"
    cOrigem := "CIDADE_ORIGEM"
    cDestino := "CIDADE_DESTINO"
    cValor := "VALOR_DO_FRETE"
    cCIOT := ""

    hb_curl_init()

    // Cria o header da requisição
    hb_curl_setopt( CURLOPT_HTTPHEADER, { "Content-Type: application/json", ;
                                           "Authorization: Bearer " + cToken } )

    // Cria o JSON de dados da requisição
    LOCAL cJsonData := '{ "cnpj": "' + cCnpj + '", ' + ;
                        '"cpf": "' + cCpf + '", ' + ;
                        '"origin": "' + cOrigem + '", ' + ;
                        '"destination": "' + cDestino + '", ' + ;
                        '"amount": "' + cValor + '" }'

    // Configura a URL e os dados da requisição
    hb_curl_setopt( CURLOPT_URL, cUrl )
    hb_curl_setopt( CURLOPT_POST, .T. )
    hb_curl_setopt( CURLOPT_POSTFIELDS, cJsonData )

    // Executa a requisição e retorna a resposta
    LOCAL cResponse := hb_curl_exec()
    hb_curl_cleanup()

    // Verifica se a requisição foi bem-sucedida e extrai o valor do CIOT
    IF hb_curl_getinfo( CURLINFO_RESPONSE_CODE ) == 201
        LOCAL oJson := JsonNew()
        JsonImport( oJson, cResponse )
        cCIOT := JsonGet( oJson, "ciot" )
        JsonRelease( oJson )
        ? "CIOT gerado com sucesso: " + cCIOT
    ELSE
        ? "Erro ao gerar o CIOT: " + cResponse
    ENDIF
RETURN

API para CIOT

Enviado: 28 Mar 2023 01:46
por rochinha
Amiguinhos,

Tudo vai depender da versão de compilador C++ que você tem integrado ao seu Harbour que pode ser Borland ou MingW.

Se na pasta include do seu compilador C++ não estiverem estes arquivos acontecerá a falha de não encontrado. Sugestão instalar e PATHear corretamente estes diretórios e passá-los corretamente no seu método de compilação por .BAT ou HBMK2.

Se a compilação der por falta de mais algum arquivo .H acesse o endereço https://github.com/gcc-mirror/gcc/tree/ ... c/ginclude e baixe os arquivos necessários usando o modo raw(basta procurar este botão na página do arquivo aberto e pressionar e depois usar um CTRL+S)

API para CIOT

Enviado: 28 Mar 2023 13:33
por Alexandre Silva
Obrigado pelo retorno

Eu baixei todos os *.h e salvei em \hb32\include
O harbou que tenho baixei pronto

Os sistemas eu compilo assim : hbmk2 projexec.hbp

sendo o projeto.hbp

Código: Selecionar todos

-prgflag=/l
-L\clipper5\lib
-lxhb
-lhbct
-lhbwin
-lhbtip
-lmylib
-es2
-compr=yes
-rebuild
transp.prg
transp1.prg
funcoes.prg
...
...
ESTA DANO ESSE ERRO..
C:\SISTEMAS\TRANSP>hbmk2 projeto.hbp
harbour 3.2.0dev (r2002240732)
copyright (c) 1999-2020, https://harbour.github.io/
compiling 'tran23x.prg'...
C:\hb32\include\hbdefs.h(50) Error F0029 Can't open #include file 'stdarg.h'
hbmk2[projeto]: Error: Running Harbour compiler (built-in). 1

API para CIOT

Enviado: 29 Mar 2023 00:09
por rochinha
Amiguinhos,

Então Alexandre Silva...você deve incluir a chamadas para as includes necessarias acrescentando -i... e as pastas onde devem ser encontradas os .ch
C:\hb32\include\hbdefs.h(50) Error F0029 Can't open #include file 'stdarg.h'
Aqui vemos que seu prg puxa por C:\hb32\include\hbdefs.h e este por sua vez puxa stdarg.h que ele não encontra porque hbdefs.h busca na mesma pasta onde ele está.

Suponha que hbdefs.h esteja na pasta C:\hb32\include e stdarg.h esteja na pasta C:\hb32\include\blablabla\inc, então você deve acrescentar no seu hbp linhas como:

Código: Selecionar todos

-prgflag=/l
-L\clipper5\lib

-iC:\hb32\include
-iC:\hb32\include\blablabla\inc

-lxhb
-lhbct
-lhbwin
Ao instalar a versão https://sourceforge.net/projects/harbour-project/files/binaries-windows/nightly/ eu encontrei os arquivos faltantes dentro da pasta C:\hb32\comp\mingw\include\c++\7.3.0\tr1

API para CIOT

Enviado: 29 Mar 2023 11:20
por Alexandre Silva
Entao..
1-So para ficar claro uso o Clipper e HB na Unidade D:
2-Nas minhas variaveis de ambiente ja tem
INCLUDE=D:\CLIPPER5\INCLUDE;D:\hb32\include
LIB=D:\CLIPPER5\LIB

3-Ao colocar
-iD:\hb32\include
-iD:\hb32\comp\mingw\include\c++\7.3.0\tr1
tive esse retorno

Código: Selecionar todos

D:\SISTEMAS\TRANSP>hbmk2 projeto.hbp
hbmk2[projeto]: Atenção: Ignorando explicitamente o diretório do núcleo header
                especificado: D:\hb32\include (na opção '-iD:\hb32\include' in
                projeto.hbp:4)
hbmk2[projeto]: Atenção: Ignorando explicitamente o diretório do núcleo header
                especificado: D:\hb32\comp\mingw\include\c++\7.3.0\tr1 (na
                opção '-iD:\hb32\comp\mingw\include\c++\7.3.0\tr1' in
                projeto.hbp:5)
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Compiling 'tran23x.prg'...
D:\hb32\include\hbdefs.h(50) Error F0029  Can't open #include file 'stdarg.h'
hbmk2[projeto]: Error: Running Harbour compiler (built-in). 1
4-Tentei entao copiar todo o conteudo de D:\hb32\comp\mingw\include\c++\7.3.0\tr1
para hb32\include e tirar as linhas -i do script , e o erro é esse

Código: Selecionar todos

D:\SISTEMAS\TRANSP>hbmk2 projeto.hbp
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Compiling 'tran23x.prg'...
D:\hb32\include\stdarg.h(32) Error F0029  Can't open #include file 'tr1/cstdarg'
hbmk2[projeto]: Error: Running Harbour compiler (built-in). 1
Interessante que esse arquivo cstdarg nao tem extencao
continuo sem conseguir compilar
Alguem me ajude por favor !! Nao consigo usa os recursos do harbour

API para CIOT

Enviado: 05 Abr 2023 20:37
por Alexandre Silva
poise
coloquei esse include nas variaveis de ambiente
INCLUDE=D:\CLIPPER5\INCLUDE;D:\hb32\include;D:\hb32\comp\mingw\i686-w64-mingw32
Consigo compilar.

mas tudo que é colocado abaixo do include é ignorado

Código: Selecionar todos

*-----------------------------
* tranciot.prg
* #include "httpclient.ch"
* #include "jsonlib.ch"
* #include "curl.ch"
* #include 'inkey.ch'
*-----------------------------
function tciot()
#include "hbapi.h"
#include "hbinet.ch"

aqui deveria dar erro

alert('cheguei aqui')

retu
Nada que tem depois dos include é considerado, se eu colocar um desses includes em outro prg, todas as funcoes daquele prg vai dizer que nao existem !

Preciso muito usar essas ferramentas, hpapi curl json, para poder usar uma API,

API para CIOT

Enviado: 05 Abr 2023 21:38
por JoséQuintas
Tanta pesquisa, não sei pra que...

É só olhar o fonte, apaga o #include, não usa pra nada.

No primeiro tem função que não faz parte do harbour, provavelmente é o conhecido xmlhttp que faz parte do windows, mas sem a função não dá pra ver os detalhes.

No segundo, vai depender de ter libcurl e ssl.
Essas LIBs são opcionais, e não é todo harbour que tem.

API para CIOT

Enviado: 05 Abr 2023 23:13
por Alexandre Silva
Estou me referindo a esses Includes, se coloco em qualquer prg, tudo que esta abaixo nao é compilado..
Nao sao includes do Harbour ?

#include "hbapi.h"
#include "hbinet.ch"

Que Includes ou lib devo usar para poder ter acesso a API, ja mencionda anteriormente.
Na troca de mensagens com a API de CIOT, será utilizado o
padrão JSON (JavaScript Object Notation). Por isso, não é
preciso fornecer o tipo de retorno desejado, toda requisição
apresentará a informação no cabeçalho HTTP.

API para CIOT

Enviado: 06 Abr 2023 00:06
por alxsts
Olá!

Olhando rapidamente, estranhei este INCLUDE com extensão .h... esta extensão é normalmente usada em programas escritos em linguagem C. Remova esta linha.

Arquivos de include para xBase tem extensão .ch (Clipper Header).

API para CIOT

Enviado: 06 Abr 2023 13:01
por JoséQuintas
Alexandre Silva escreveu:Estou me referindo a esses Includes, se coloco em qualquer prg, tudo que esta abaixo nao é compilado..
Nao sao includes do Harbour ?
Não é que não compila.
Compila mas mostra mensagem de erro.
Se não aceita o conteúdo é porque tá errado.
Como já foi dito, #include pra prg usa arquivos .ch e não .h

O ideal é ir lá de onde vieram os fontes e perguntar, já que são fontes inválidos.
Se já começaram inválidos, como saber se o restante é válido ?
Será que os fontes são pra ajudar ou pra atrapalhar ?

API para CIOT

Enviado: 06 Abr 2023 13:32
por JoséQuintas
Faltou acrescentar:

O primeiro fonte está errado, não vai funcionar nunca.

- tem #include inválido pra PRG
- tem uso inválido de hash em variável array
- tem função que não existe no fonte

O segundo.... sei lá... não uso isso.
Deveria ter pelo menos o #include da libcurl

Ajuda ? CURL é da lib CURL que fica na pasta contrib/CURL que deve ter include, possivelmente #include "hbcurl.ch", mas basta olhar na pasta pra saber o nome correto.

Se esse segundo vai funcionar ? não faço a menor idéia.... tá tudo suspeito...

API para CIOT

Enviado: 07 Abr 2023 09:50
por rochinha
Amiguinhos,

Alexandre Silva.
É bem simples. Uma vez instalado o MingW e PATHeado é bem dificil ocorrerem erros na geração do executável a não ser que existam erros no código criado.

Sem saber o conteúdo do fonte e nem a fonte do fonte não é possivel determinar a sua conclusão.

CIOT me remete a Internet Of Things.

Se o código que se está querendo compilar esteja puramente em C não é possivel mudar algumas linhas e compilar como sendo .PRG.

Apresente o fonte ou a fonte do fonte para determinarmos o que se pode fazer para obter uma compilação, senão ficaremos batendo cabeça.

API para CIOT

Enviado: 07 Abr 2023 18:47
por JoséQuintas
Não tem segredo é só compilar, de preferência com -w3 -es2

Código: Selecionar todos

// #include "hbapi.h"

PROCEDURE gerarCIOT()
    LOCAL cUrl := "https://api.truckpadpay.com.br/v1/emissao";
    LOCAL cToken := "seu-token-aqui";
    LOCAL oData := {}
    oData["valor"] := 1000.00
    oData["id_carreteiro"] := "123456"
    oData["tipo_operacao"] := "carga"
    oData["descricao"] := "Frete para São Paulo"
    oData["placa_veiculo"] := "AAA1234"
    oData["placa_reboque1"] := "BBB5678"
    oData["cpf_cnpj_pagar"] := "12345678900"
    oData["nome_pagar"] := "Transportadora XPTO"
    oData["cidade_origem"] := "Rio de Janeiro"
    oData["uf_origem"] := "RJ"
    oData["cidade_destino"] := "São Paulo"
    oData["uf_destino"] := "SP"

    LOCAL cJson := JsonToStr(oData)
    LOCAL oHeaders := {}
    oHeaders["Content-Type"] := "application/json"
    oHeaders["Authorization"] := "Bearer " + cToken
    LOCAL cResult := HttpPost(cUrl, cJson, oHeaders)

    ? "Resultado: ", cResult

    LOCAL oResponse := JsonToObj(cResult)
    IF oResponse.success = .T.
        ? "CIOT gerado: ", oResponse.dados.ciot
    ELSE
        ? "Erro ao gerar CIOT: ", oResponse.mensagem
    ENDIF
RETURN

// #include "hbapi.h"

PROCEDURE main()
    LOCAL cUrl, cToken, cCnpj, cCpf, cOrigem, cDestino, cValor, cCIOT
    cUrl := "https://api.truckpad.io/v1/payments/ciot"
    cToken := "SEU_TOKEN_DE_AUTORIZACAO"
    cCnpj := "CNPJ_DO_EMITENTE"
    cCpf := "CPF_DO_TOMADOR"
    cOrigem := "CIDADE_ORIGEM"
    cDestino := "CIDADE_DESTINO"
    cValor := "VALOR_DO_FRETE"
    cCIOT := ""

    hb_curl_init()

    // Cria o header da requisição
    hb_curl_setopt( CURLOPT_HTTPHEADER, { "Content-Type: application/json", ;
                                           "Authorization: Bearer " + cToken } )

    // Cria o JSON de dados da requisição
    LOCAL cJsonData := '{ "cnpj": "' + cCnpj + '", ' + ;
                        '"cpf": "' + cCpf + '", ' + ;
                        '"origin": "' + cOrigem + '", ' + ;
                        '"destination": "' + cDestino + '", ' + ;
                        '"amount": "' + cValor + '" }'

    // Configura a URL e os dados da requisição
    hb_curl_setopt( CURLOPT_URL, cUrl )
    hb_curl_setopt( CURLOPT_POST, .T. )
    hb_curl_setopt( CURLOPT_POSTFIELDS, cJsonData )

    // Executa a requisição e retorna a resposta
    LOCAL cResponse := hb_curl_exec()
    hb_curl_cleanup()

    // Verifica se a requisição foi bem-sucedida e extrai o valor do CIOT
    IF hb_curl_getinfo( CURLINFO_RESPONSE_CODE ) == 201
        LOCAL oJson := JsonNew()
        JsonImport( oJson, cResponse )
        cCIOT := JsonGet( oJson, "ciot" )
        JsonRelease( oJson )
        ? "CIOT gerado com sucesso: " + cCIOT
    ELSE
        ? "Erro ao gerar o CIOT: " + cResponse
    ENDIF
RETURN
d:\temp>hbmk2 test
hbmk2: Processing environment options: -comp=mingw
hbmk2: Processing configuration: d:\harbour\bin\hbmk.hbc
Harbour 3.2.0dev (r2303091450)
Copyright (c) 1999-2021, https://harbour.github.io/
Compiling 'test.prg'...

test.prg:6: error E0030 Syntax error "syntax error at 'LOCAL'"
test.prg:7: warning W0002 Ambiguous reference, assuming memvar 'ODATA'
test.prg:8: warning W0002 Ambiguous reference, assuming memvar 'ODATA'
test.prg:9: warning W0002 Ambiguous reference, assuming memvar 'ODATA'
test.prg:10: warning W0002 Ambiguous reference, assuming memvar 'ODATA'
test.prg:11: warning W0002 Ambiguous reference, assuming memvar 'ODATA'
test.prg:12: warning W0002 Ambiguous reference, assuming memvar 'ODATA'
test.prg:13: warning W0002 Ambiguous reference, assuming memvar 'ODATA'
test.prg:14: warning W0002 Ambiguous reference, assuming memvar 'ODATA'
test.prg:15: warning W0002 Ambiguous reference, assuming memvar 'ODATA'
test.prg:16: warning W0002 Ambiguous reference, assuming memvar 'ODATA'
test.prg:17: warning W0002 Ambiguous reference, assuming memvar 'ODATA'
test.prg:18: warning W0002 Ambiguous reference, assuming memvar 'ODATA'
test.prg:20: error E0004 LOCAL declaration follows executable statement
test.prg:20: warning W0001 Ambiguous reference 'ODATA'
test.prg:20: warning W0001 Ambiguous reference 'CJSON'
test.prg:21: error E0004 LOCAL declaration follows executable statement
test.prg:21: warning W0001 Ambiguous reference 'OHEADERS'
test.prg:22: warning W0002 Ambiguous reference, assuming memvar 'OHEADERS'
test.prg:23: warning W0002 Ambiguous reference, assuming memvar 'OHEADERS'
test.prg:23: warning W0001 Ambiguous reference 'CTOKEN'
test.prg:24: error E0004 LOCAL declaration follows executable statement
test.prg:24: warning W0001 Ambiguous reference 'CJSON'
test.prg:24: warning W0001 Ambiguous reference 'OHEADERS'
test.prg:24: warning W0001 Ambiguous reference 'CRESULT'
test.prg:26: warning W0001 Ambiguous reference 'CRESULT'
test.prg:28: error E0004 LOCAL declaration follows executable statement
test.prg:28: warning W0001 Ambiguous reference 'CRESULT'
test.prg:28: warning W0001 Ambiguous reference 'ORESPONSE'
test.prg:29: error E0030 Syntax error "syntax error at '.'"
test.prg:30: error E0030 Syntax error "syntax error at '.'"
test.prg:31: error E0014 ELSE does not match IF
test.prg:32: error E0030 Syntax error "syntax error at '.'"
test.prg:33: error E0010 ENDIF does not match IF
test.prg:38: error E0030 Syntax error "syntax error at 'PROCEDURE'"
test.prg:53: warning W0001 Ambiguous reference 'CURLOPT_HTTPHEADER'
test.prg:60: error E0004 LOCAL declaration follows executable statement
test.prg:60: warning W0001 Ambiguous reference 'CJSONDATA'
test.prg:63: warning W0001 Ambiguous reference 'CURLOPT_URL'
test.prg:64: warning W0001 Ambiguous reference 'CURLOPT_POST'
test.prg:65: warning W0001 Ambiguous reference 'CURLOPT_POSTFIELDS'
test.prg:65: warning W0001 Ambiguous reference 'CJSONDATA'
test.prg:68: error E0004 LOCAL declaration follows executable statement
test.prg:68: warning W0001 Ambiguous reference 'CRESPONSE'
test.prg:72: warning W0001 Ambiguous reference 'CURLINFO_RESPONSE_CODE'
test.prg:73: error E0004 LOCAL declaration follows executable statement
test.prg:73: warning W0001 Ambiguous reference 'OJSON'
test.prg:74: warning W0001 Ambiguous reference 'OJSON'
test.prg:74: warning W0001 Ambiguous reference 'CRESPONSE'
test.prg:75: warning W0001 Ambiguous reference 'OJSON'
test.prg:76: warning W0001 Ambiguous reference 'OJSON'
test.prg:79: warning W0001 Ambiguous reference 'CRESPONSE'
14 errors
Muito erro? reduzir pra -w0
d:\temp>hbmk2 test -w0
hbmk2: Processing environment options: -comp=mingw
hbmk2: Processing configuration: d:\harbour\bin\hbmk.hbc
Harbour 3.2.0dev (r2303091450)
Copyright (c) 1999-2021, https://harbour.github.io/
Compiling 'test.prg'...

test.prg:6: error E0030 Syntax error "syntax error at 'LOCAL'"
test.prg:20: error E0004 LOCAL declaration follows executable statement
test.prg:21: error E0004 LOCAL declaration follows executable statement
test.prg:24: error E0004 LOCAL declaration follows executable statement
test.prg:28: error E0004 LOCAL declaration follows executable statement
test.prg:29: error E0030 Syntax error "syntax error at '.'"
test.prg:30: error E0030 Syntax error "syntax error at '.'"
test.prg:31: error E0014 ELSE does not match IF
test.prg:32: error E0030 Syntax error "syntax error at '.'"
test.prg:33: error E0010 ENDIF does not match IF
test.prg:38: error E0030 Syntax error "syntax error at 'PROCEDURE'"
test.prg:60: error E0004 LOCAL declaration follows executable statement
test.prg:68: error E0004 LOCAL declaration follows executable statement
test.prg:73: error E0004 LOCAL declaration follows executable statement
14 errors
Isso já mostra que o fonte tá uma merd.

API para CIOT

Enviado: 07 Abr 2023 18:56
por JoséQuintas
Colocando declaração LOCAL no lugar certo, que é no início.
d:\temp>hbmk2 test -w0
hbmk2: Processing environment options: -comp=mingw
hbmk2: Processing configuration: d:\harbour\bin\hbmk.hbc
Harbour 3.2.0dev (r2303091450)
Copyright (c) 1999-2021, https://harbour.github.io/
Compiling 'test.prg'...

test.prg:6: error E0030 Syntax error "syntax error at 'LOCAL'"
test.prg:30: error E0030 Syntax error "syntax error at '.'"
test.prg:31: error E0030 Syntax error "syntax error at '.'"
test.prg:32: error E0014 ELSE does not match IF
test.prg:33: error E0030 Syntax error "syntax error at '.'"
test.prg:34: error E0010 ENDIF does not match IF
test.prg:39: error E0030 Syntax error "syntax error at 'PROCEDURE'"
7 errors
erros.png

Continuação de linha mas sem continuação
Uso de ".", coisa que não existe no harbour
O if foi anulado e por isso erro de if/endif
e o erro de if/endif causou erro na declaração de procedure


Quando a gente vai no açougue.... ensina o açougueiro a cortar carne?
Quando a gente vai na farmácia... ensina o farmacêutico pra que servem os remédios?
Porque pra ajudar programador precisa ensinar a compilar ? não é estranho isso ?

API para CIOT

Enviado: 07 Abr 2023 19:03
por JoséQuintas
E corrigindo os erros normais.... resta isto
hbmk2: Error: Referenced, missing, but unknown function(s): JSONTOSTR(),
HTTPPOST(), JSONTOOBJ(), HB_CURL_EXEC(), JSONNEW(), HB_CURL_INIT(),
HB_CURL_SETOPT(), HB_CURL_CLEANUP(), HB_CURL_GETINFO(), JSONIMPORT(),
JSONGET(), JSONRELEASE()
Já falado, CURL é da libcurl.
libcurl vai resolver isto:
HB_CURL_EXEC(), JSONNEW(), HB_CURL_INIT(), HB_CURL_SETOPT(), HB_CURL_CLEANUP(), HB_CURL_GETINFO()
O resto..... nunca vi, não existe no harbour.
JSONTOSTR(), HTTPPOST(), JSONTOOBJ(), JSONNEW(), JSONIMPORT(), JSONGET(), JSONRELEASE()
hbapi.h..... sei lá pra que merd. enfiaram isso aí no meio, não fez falta.