Felipe Gabriel Ferri
API Mercado Bitcoin em PHP
23 de October de 2017 às 07:45PM
Boa noite Pessoal,

Estou entrando na era do bitcoin, e estou utilizando a exchange Mercado Bitcoin, eles disponibilizam uma API mas só que está em Python. Consegui fazer script em python está funcionando perfeitamente, porém queria converter para a linguagem PHP. Alguém pode me ajudar?

----------------------------------------
Código em Python - API Mercado Bitcoin
----------------------------------------

# -*- coding: utf-8 -*-

import hashlib
import hmac
import httplib
import json
import urllib
import time
import sys
import decimal

from collections import OrderedDict


# Constantes
MB_TAPI_ID = '******************************'
MB_TAPI_SECRET = '*********************************************************'
REQUEST_HOST = 'www.mercadobitcoin.com.br'
REQUEST_PATH = '/tapi/v3/'

# Nonce
# Para obter variação de forma simples
# timestamp pode ser utilizado:
# import time
# tapi_nonce = str(int(time.time()))
tapi_nonce = 1

# Ordem de compra
params = {
'tapi_method': 'place_buy_order',
'tapi_nonce': '',
'coin_pair': 'BRLLTC',
'quantity': '0.01',
'limit_price': '100'
}


params = urllib.urlencode(params)

# Gerar MAC
params_string = REQUEST_PATH + '?' + params
H = hmac.new(MB_TAPI_SECRET, digestmod=hashlib.sha512)
H.update(params_string)
tapi_mac = H.hexdigest()

# Gerar cabeçalho da requisição
headers = {
'Content-type': 'application/x-www-form-urlencoded',
'TAPI-ID': MB_TAPI_ID,
'TAPI-MAC': tapi_mac
}

# Realizar requisição POST
try:
conn = httplib.HTTPSConnection(REQUEST_HOST)
conn.request("POST", REQUEST_PATH, params, headers)

# Print response data to console
response = conn.getresponse()
response = response.read()

# É fundamental utilizar a classe OrderedDict para preservar a ordem dos elementos
response_json = json.loads(response, object_pairs_hook=OrderedDict)
print ("status: %s" % response_json['status_code'])
print(json.dumps(response_json, indent=4))
finally:
if conn:
conn.close()


--------------------------------------------------------------------
Código em PHP
--------------------------------------------------------------------

<?php
//===============Enviando informações para a URL de destino via POST==================//


// Constantes
$MB_TAPI_ID = '***************************';
$MB_TAPI_SECRET = '************************************************'; // TAPI_ID
$REQUEST_HOST = 'www.mercadobitcoin.com.br';
$REQUEST_PATH = '/tapi/v3/';

$tapi_nonce = 1;


//distribuindo a informação a ser enviada
$params = array(
'tapi_method' => 'place_buy_order',
'tapi_nonce' => '',
'coin_pair' => 'BRLLTC',
'quantity' => '0.01',
'limit_price' => '104'
);



// Gerar MAC - PHP
$params_string = $REQUEST_PATH . '?' . http_build_query($params);

$tapi_mac = hash_hmac('sha512', $params_string, $MB_TAPI_SECRET);

// Gerar cabeçalho da requisição
$headers =array(
'Content-type' => 'application/x-www-form-urlencoded',
'TAPI-ID' => $MB_TAPI_ID,
'TAPI-MAC' => $tapi_mac
);

echo http_build_query($headers);



$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $REQUEST_HOST);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $params);

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

curl_exec($ch);

curl_close ($ch);



//==================================================================//
?>


Aonde estou errando?
Trambulhao
Re: API Mercado Bitcoin em PHP
03 de November de 2017 às 12:35PM
Tenta assim.

<?php
//===============Enviando informações para a URL de destino via POST==================//

// Constantes
const MB_TAPI_ID = '***************************';
const MB_TAPI_SECRET = '************************************************'; // TAPI_ID
const REQUEST_HOST = 'www.mercadobitcoin.com.br';
const REQUEST_PATH = '/tapi/v3/';

$tapi_nonce = 1;

//distribuindo a informação a ser enviada
$params = [
'tapi_method' => 'place_buy_order',
'tapi_nonce' => '',
'coin_pair' => 'BRLLTC',
'quantity' => '0.01',
'limit_price' => '104'
];

// Gerar MAC - PHP
$params_string = REQUEST_PATH . '?' . http_build_query($params);

$tapi_mac = hash_hmac('sha512', $params_string, MB_TAPI_SECRET);

// Gerar cabeçalho da requisição
$headers = [
'Content-type: application/x-www-form-urlencoded',
'TAPI-ID: ' . MB_TAPI_ID,
'TAPI-MAC: ' . $tapi_mac
];

//echo http_build_query($headers);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, REQUEST_HOST);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_exec($ch);
curl_close ($ch);


//==================================================================//
?>
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.