Ao trabalhar na conexão com a API Coinbase para automatizar transações de comerciantes de Bitcoin, encontrei algumas ‘pegadinhas’ que não estão bem explicadas em sua documentação e vale a pena observar se você estiver se conectando à API do zero:
Tipo de conteúdo: application / json
A documentação deles afirma “Todas as solicitações usam o application/json
tipo de conteúdo” e, de fato, se você enviar uma consulta malformada para a API, o erro retornado solicitará que você verifique sua codificação JSON. No entanto, você não precisa usar JSON para a solicitação se usar a sintaxe de colchetes nos nomes das variáveis de consulta para indicar a estrutura:
POST https://coinbase.com/api/v1/buttons
Content-Type: application/json
{
"button": {
"name": "test",
"price_string": "1.23",
"price_currency_iso": "USD",
}
}
ou
POST https://coinbase.com/api/v1/buttons
Content-Type: application/x-www-form-urlencoded
button[name]=test&button[price_string]=1.23&button[price_currency_iso]=USD
Ambas as consultas funcionam e, se você estiver usando uma biblioteca HTTP, provavelmente o padrão Content-Type
para uma POST
solicitação será definido como application/x-www-form-urlencoded
para você. Portanto, tome cuidado para evitar fazer uma solicitação como esta, pois esta não funcionará:
POST https://coinbase.com/api/v1/buttons
Content-Type: application/x-www-form-urlencoded
{"button": {"name": "test","price_string": "1.23","price_currency_iso": "USD",}}
Token de autorização
A documentação da Coinbase afirma que, após obter um token de autorização do processo OAuth, você pode usá-lo na string de consulta como:
https://coinbase.com/api/v1/account/balance?access_token=MY_ACCESS_TOKEN
No entanto, ao pesquisar sua biblioteca cliente PHP , você pode descobrir como essa biblioteca faz isso com o cabeçalho da solicitação.Authorization: Bearer MY_ACCESS_TOKEN
Isso está de acordo com o rascunho do OAuth 2.0 , pois há várias maneiras de apresentá- access_token
lo assim que o tiver, e a Coinbase parece honrar qualquer uma delas, então use a que for mais conveniente para você.