脚本宝典收集整理的这篇文章主要介绍了php – 我如何与Coinbase的API进行交互?为什么总是失败?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
编辑3月12日:Added a tutorial on interacting with the API via OAuth.
http://blog.coinbase.com/post/75936737678/more-security-and-granular-control-with-the-new-api
除了API密钥之外,每个人现在都获得API“秘密”.每当您向API发出请求时,都必须包含三个参数:
>您的API密钥.
>“nonce”,这是一个用于识别内容的唯一编号.在这种情况下,您所做的每个请求都需要一个新的数字,并且每个请求的nonce必须大于之前的那个.
>您的API“签名”.这不是你的API“秘密”.
签名是您的随机数,紧接着是您发布请求,参数和所有内容的完整URL.这个URL也包含nonce,所以整个过程看起来像这样:
?12345https://coinbase.COM/api/v1/buttons随机数= 12345&放大器;名称=袜子和放大器;价格= 9.95
然后你把整个事情编码为“SHA256”哈希.如果您不知道这意味着什么,请不要惊慌 – 您可以使用PHP已经内置的函数在一行中完成.
无论如何,我在解决所有这些问题时遇到了一些麻烦,所以我花了一些时间来整理这个脚本,这使得对API的GETing和POSTing非常容易.我很想听听别人的想法!
<?PHP function coinbaseRequest($what,$getOrPost,$parameters){ //ObvIoUsly,your API Key and Secret go here. $apikey = "blahblahblah"; $apisecret = "blahblahblahblah"; $nonce = file_get_contents("nonce.txt") + 1; file_put_contents("nonce.txt",$nonce,LOCK_EX); $url = "https://coinbase.com/api/v1/" . $what . "?nonce=" . $nonce; if($parameters != ""){ $parameters = http_build_query(json_decode($parameters),true); } //Here I go,hashing the Signature! Thanks,PHP,for making this easy! $signature = hash_hmac("sha256",$nonce . $url . $parameters,$apisecret); $ch = curl_init(); curl_setopt_array($ch,array( CURLOPT_URL => $url,CURLOPT_RETURNtransfer => true,CURLOPT_HTTPHEADER => array( "ACCESS_KEY: " . $apikey,"ACCESS_NONCE: " . $nonce,"ACCESS_SIGNATURE: " . $signature ))); if($getOrPost == "post"){ curl_setopt_array($ch,array( CURLOPT_POSTFIELDS => $parameters,CURLOPT_POST => true,)); } $results = curl_exec($ch); curl_close($ch); echo $results; } //This is a POST example. coinbaseRequest("buttons","post",'{ "button": { "name": "test","PRice_string": "1.23","price_currency_iso": "USD","VARiable_price": true } }'); //This is a GET example. coinbaseRequest("account/balance","get",false); ?>
笔记:
>我尝试使用(microtime(true)* 100)为我的nonces.问题是它产生一个十进制数字,最后几位数字一直被删除或舍入,所以它不起作用.然后我想,“拧这个”,制作一个空白的nonce.txt文件,并在其中写入1,并获得nonce我刚刚获得该文件的内容,添加1,并用新数字替换该文件.它作为一个计数器提供了第二个目的,显示了我提出的总请求数量.
但后来有人向我指出了PHP的“uniqid”函数,该函数根据当前的microtime生成一个ID.所以你也可以尝试这个:
$nonce = hexdec(uniqid());
这具有不访问外部文件的优点.我实际上真的很想看到我做了多少请求,因此可能会坚持使用(坏)nonce.txt方法.
> coinbaseRequest()函数有三个参数.第一个是您提出请求的目录 – 也就是说,“https://coinbase.com/api/v1/”之后的任何内容.第二个参数是“get”或“post”,具体取决于它是GET还是POST请求. (合理?)
第三个参数是您在请求中传递的所有查询.这应格式化为JSON,除非它是一个不带任何参数的GET请求(除了函数包含的Key,Nonce和Signature),在这种情况下你应该将其保留为false.
编辑,3月3日:
我做了一个小函数,用于获取coinbaseRequest返回的任何内容并将其转换为按钮:
function makebutt($data){ $data = json_decode($data,true); $buttoncode = $data["button"]["code"]; return ("<a class=\"coinbase-button\" data-code=\"" . $buttoncode . "\" href=\"https://coinbase.com/checkouts/" . $buttoncode . "\">Pay WITh Bitcoin</a><script src=\"https://coinbase.com/assets/button.js\" tyPE=\"text/javascript\"></script>"); }
以上是脚本宝典为你收集整理的php – 我如何与Coinbase的API进行交互?为什么总是失败?全部内容,希望文章能够帮你解决php – 我如何与Coinbase的API进行交互?为什么总是失败?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。