簡體   English   中英

Coinbase按鈕的創建和回調

[英]Coinbase button creation and callback

我試圖創建一個按鈕,並用coinbase分配一個回調URL。

嘗試發布到coinbase API時,我返回了一些驗證碼數據。

我認為我的Web主機被CloudFlare阻止,從而禁用了我的代碼。

這是我所擁有的:

<a class="coinbase-button" data-code="<?php

$data = array(
  "button" => array(
    "name" => "Ticket",
    "price_string" => "0.01",
    "price_currency_iso" => "BTC",
    "custom" => $OrderNext . "- " . $ticket,
    "callback_url" => "https://x.com/callback.php",
    "description" => "Ticket - " . $ticket ,
    "type" => "buy_now",
    "style" => "buy_now_large"
  )
);                                                                    

$json_data = json_encode($data);                                                                                   

$ch = curl_init("https://coinbase.com/api/v1/buttons?api_key=xxxxxxxxxxxxxxxxxxxxxx");

curl_setopt($ch, CURLOPT_POST, 1);                                                                  
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);                                                                  
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
  'Content-Type: application/json',                                                                                
  'Content-Length: ' . strlen($json_data))                                                                       
);                                                                                                                   

if( ! $output = curl_exec($ch))
  {
        trigger_error(curl_error($ch));
    } 

$result = json_decode($output);

$output返回一個驗證碼頁面。

$result為空。

謝謝你的幫助。

來自Coinbase的Brian。 看來您正在按API來為每個頁面加載生成一個新的付款按鈕,這取決於您獲得的流量,可能會在內部或通過CloudFlare觸發我們的速率限制。

當前,例如,對於大多數商人而言,我們目前每天在內部將商人創建按鈕api限制為每天10,000次通話。

更好的方法是為每個產品(或價格發生變化)點擊一次API,然后存儲生成的“ code”參數。 如果將其保存在數據庫中,則可以在每次頁面加載時重用它。 這也將幫助您更快地加載頁面。

更多詳細信息: https : //coinbase.com/api/doc/1.0/buttons/create.html

希望能幫助到你!

我從未使用過coinbase,但是您是否檢查過主機是否在phpinfo()中啟用了curl支持? 或者也許curl_init / curl_exec在禁用的函數列表中。

編輯:

如果您使用的是https網址,則必須提供CA證書以進行設置標志CURLOPT_CAINFO的檢查,或者禁用將CURLOPT_SSL_VERIFYPEER設置為false的證書驗證。

您可以使用這樣的代碼生成付款按鈕

   $apikey ="***************"; 
   $apisecret = "************************";
   $nonce = sprintf('%0.0f',round(microtime(true) * 1000000));

   $url = "https://api.sandbox.coinbase.com/v1/buttons?nonce=" . $nonce;

   $parameters = [];
   $parameters["button"]["name"] = "Checkout Invoice";
   $parameters["button"]["custom"] = $orderId;
   $parameters["button"]["price_string"] = $priceString;
   $parameters["button"]["type"] = "buy_now";
   $parameters["button"]["subscription"] = false;
   $parameters["button"]["price_currency_iso"] = "USD";
   $parameters["button"]["description"] = "Checkout Invoice";
   $parameters["button"]["style"] = "custom_large";
   $parameters["button"]["include_email"] = true;
   $parameters["button"]["callback_url"] = url("bitcoin/callback");
   $parameters = http_build_query($parameters, true);



  $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
       )));

   curl_setopt_array($ch, array(
       CURLOPT_POSTFIELDS => $parameters,
       CURLOPT_POST => true,
   ));

   $response = curl_exec($ch);

   curl_close($ch);

   $decodeResponse = json_decode($response);

它將返回按鈕代碼以在coinbase上付款。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM