Passagem de parâmetros para acesso a API Banco Central

Prezados,

Tenho uma aplicação que necessita verificar taxas de câmbio de algumas moedas em determinadas datas.
Para isso, estou usando API do Banco central que fornece as cotações de determinadas moedas em uma data específica.
Só que estou com uma dificuldade para passar a data a ser verificada como parâmetro. (a formatação de data na API do BAcen é mm-dd-aaaa).

No exemplo a seguir, buscando a taxa do dolar em um determinado dia, tudo funciona perfeitamente:

$ch = curl_init(“https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao=‘04-15-2021’&format=json”);

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$res_curl = curl_exec($ch);

if(curl_error($ch))
{
echo curl_error($ch);
}
else
{
$resultado = json_decode($res_curl, true);
$valores = $resultado[“value”][0];

echo $valores["cotacaoCompra"];
echo ('');
echo $valores["cotacaoVenda"];
echo ('');
echo $valores["dataHoraCotacao"];
}

curl_close($ch);

O problema é quando vou passar a data de forma dinâmica, ou seja, quando o usuário escolhe em um Form ou em um Controle uma data específica para a busca da taxa, a busca na API não funciona de nenhuma forma. Como no exemplo abaixo, usando uma variável $datamoeda:

$datamoeda={DataMoeda};
$curl2="https://olinda.bcb.gov.br/olinda/servico/PTAX/versao/v1/odata/CotacaoDolarDia(dataCotacao=@dataCotacao)?@dataCotacao='".$datamoeda."'&format=json";

$ch = curl_init($curl2);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$res_curl = curl_exec($ch);

if(curl_error($ch)) 
	{
    echo curl_error($ch);
	} 
else 
	{
	$resultado = json_decode($res_curl, true);
	$valores = $resultado["value"][0];

	echo $valores["cotacaoCompra"];
	echo ('');
	echo $valores["cotacaoVenda"];
	echo ('');
	echo $valores["dataHoraCotacao"];
	}

curl_close($ch);

Eu já tentei “n” formas para construir a URL utilizada no curl_init, mas sem, sucesso.

Alguém tem alguma sugestão/solução?

pode ser o formato da data, no seu exemplo passa [04-15-2021]

veja como recebe a data, coloca um echo {DataMoeda}; para saber o que retorna, ai altera para o formato que a api exige, ai vai depender do que tem de retorno, se só a data , data hora… mas se for no formato DD/MM/YYYY ai é só substituir a / pelo - antes

Prezado Jair,

Muito obrigado por sua resposta. realmente era diferença de formatação entre o valor que eu estava enviando e os parâmetros da API.