目錄
安裝
認證
API金鑰
OAuth2
雙重認證
分頁
 警告
資源參考
回應
活動記錄方法
用法
市場數據
使用者
帳號
位址
交易
買入
賣出
存款
如果在建立存款時傳遞
通知webhook和验证
贡献和测试
首頁 後端開發 php教程 PHP如何使用比特幣Coinbase錢包庫開發應用程式(詳細步驟)

PHP如何使用比特幣Coinbase錢包庫開發應用程式(詳細步驟)

Oct 19, 2018 pm 03:50 PM
php 區塊鏈 後端 比特幣 程式設計師

這篇文章帶給大家的內容是關於PHP如何使用比特幣Coinbase錢包庫開發應用程式(詳細步驟),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

這是Coinbase Wallet API v2的官方客戶端函式庫。我們提供直觀,穩定的介面,將Coinbase Wallet整合到的PHP項目中。

重要:由於此程式庫是針對較新的API v2的,因此需要v2權限(即wallet:accounts:read)。如果你仍在使用v1,請使用此函式庫的舊版本。

安裝

使用Composer安裝函式庫。如果你不熟悉Composer或依賴管理器,請閱讀Composer文件。

"require": {
    "coinbase/coinbase": "~2.0"
}
登入後複製

認證

API金鑰

使用API​​金鑰和金鑰存取你自己的Coinbase帳號。

use Coinbase\Wallet\Client;
use Coinbase\Wallet\Configuration;

$configuration = Configuration::apiKey($apiKey, $apiSecret);
$client = Client::create($configuration);
登入後複製

OAuth2

使用OAuth2驗證存取你自己以外的使用者帳號。此函式庫不處理握手過程,並假定你在初始化時具有存取token。你可以使用OAuth2客戶端(例如league/oauth2-client)處理握手過程。

use Coinbase\Wallet\Client;
use Coinbase\Wallet\Configuration;

// with a refresh token
$configuration = Configuration::oauth($accessToken, $refreshToken);

// without a refresh token
$configuration = Configuration::oauth($accessToken);

$client = Client::create($configuration);
登入後複製

雙重認證

發送資金端點在某些情況下需要2FA令牌(在此處閱讀更多)。如果需要,則拋出特定異常。

use Coinbase\Wallet\Enum\Param;
use Coinbase\Wallet\Exception\TwoFactorRequiredException;
use Coinbase\Wallet\Resource\Transaction;

$transaction = Transaction::send([
    'toEmail' => 'test@test.com',
    'bitcoinAmount' => 1
]);

$account = $client->getPrimaryAccount();
try {
    $client->createAccountTransaction($account, $transaction);
} catch (TwoFactorRequiredException $e) {
    // show 2FA dialog to user and collect 2FA token

    // retry call with token
    $client->createAccountTransaction($account, $transaction, [
        Param::TWO_FACTOR_TOKEN => '123456',
    ]);
}
登入後複製

分頁

幾個端點是分頁的。預設情況下,庫只會取得給定請求的第一頁資料。你可以輕鬆加載不僅僅是第一頁結果。

$transactions = $client->getAccountTransactions($account);
while ($transactions->hasNextPage()) {
    $client->loadNextTransactions($transactions);
}
登入後複製

你也可以使用fetch_all參數讓函式庫發出載入完整集合的所有必要請求。

use Coinbase\Wallet\Enum\Param;

$transactions = $client->getAccountTransactions($account, [
    Param::FETCH_ALL => true,
]);
登入後複製

 警告

注意警告是明智的。如果配置了一個標準PSR-3記錄器,庫將記錄所有警告。

use Coinbase\Wallet\Client;
use Coinbase\Wallet\Configuration;

$configuration = Configuration::apiKey($apiKey, $apiSecret);
$configuration->setLogger($logger);
$client = Client::create($configuration);
登入後複製

資源參考

在某些情況下,API會傳回資源參考來取代擴充的資源物件。可以透過刷新來擴展這些引用。

$deposit = $this->client->getAccountDeposit($account, $depositId);
$transaction = $deposit->getTransaction();
if (!$transaction->isExpanded()) {
    $this->client->refreshTransaction($transaction);
}
登入後複製

你也可以使用expand參數請求API在初始請求中傳回擴充資源。

use Coinbase\Wallet\Enum\Param;

$deposit = $this->client->getAccountDeposit($account, $depositId, [
    Param::EXPAND = ['transaction'],
]);
登入後複製

建立新資源時可以使用資源引用,從而避免從API請求資源的開銷。

use Coinbase\Wallet\Resource\Deposit;
use Coinbase\Wallet\Resource\PaymentMethod;

$deposit = new Deposit([
    'paymentMethod' => PaymentMethod::reference($paymentMethodId)
]);

// or use the convenience method
$deposit = new Deposit([
    'paymentMethodId' => $paymentMethodId
]);
登入後複製

回應

有多種方法可以存取原始回應資料。首先,每個資源物件都有一個getRawData()方法,你可以使用該方法存取未對應到物件屬性的任何欄位。

$data = $deposit->getRawData();
登入後複製

來自最後一個HTTP回應的原始資料也可在客戶端物件上使用。

$data = $client->decodeLastResponse();
登入後複製

活動記錄方法

此程式庫包含對資源物件上的活動記錄方法的支援。你必須在引導應用程式時啟用此功能。

$client->enableActiveRecord();
登入後複製

啟用後,你可以在資源物件上呼叫活動記錄方法。

use Coinbase\Wallet\Enum\Param;

$transactions = $account->getTransactions([
    Param::FETCH_ALL => true,
]);
登入後複製

用法

這不是為了提供API的完整文件。有關更多詳細信息,請參閱官方文件。

市場數據

列出支援的本地貨幣

$currencies = $client->getCurrencies();
登入後複製

列出匯率

$rates = $client->getExchangeRates();
登入後複製

買入價

$buyPrice = $client->getBuyPrice('BTC-USD');
登入後複製

賣出價

$sellPrice = $client->getSellPrice('BTC-USD');
登入後複製

現貨價格

$spotPrice = $client->getSpotPrice('BTC-USD');
登入後複製

目前伺服器時間

$time = $client->getTime();
登入後複製

使用者

取得授權資訊

$auth = $client->getCurrentAuthorization();
登入後複製
登入後複製

尋找使用者資訊

$auth = $client->getCurrentAuthorization();
登入後複製
登入後複製

取得目前使用者

$user = $client->getCurrentUser();
登入後複製

更新目前使用者

$user->setName('New Name');
$client->updateCurrentUser($user);
登入後複製

帳號

#列出所有帳號

$accounts = $client->getAccounts();
登入後複製

列出帳戶詳細資料

$account = $client->getAccount($accountId);
登入後複製

列出主要帳戶詳細資訊

$account = $client->getPrimaryAccount();
登入後複製

將帳戶設為主要帳戶

$client->setPrimaryAccount($account);
登入後複製

建立一個新的比特幣帳戶

use Coinbase\Wallet\Resource\Account;

$account = new Account([
    'name' => 'New Account'
]);
$client->createAccount($account);
登入後複製

更新帳戶

$account->setName('New Account Name');
$client->updateAccount($account):
登入後複製

刪除帳戶

$client->deleteAccount($account);
登入後複製

位址

列出帳戶的接收位址

$addresses = $client->getAccountAddresses($account);
登入後複製

取得接收位址資訊

$address = $client->getAccountAddress($account, $addressId);
登入後複製

列出位址的交易

$transactions = $client->getAddressTransactions($address);
登入後複製

建立一個新的接收位址

use Coinbase\Wallet\Resource\Address;

$address = new Address([
    'name' => 'New Address'
]);
$client->createAccountAddress($account, $address);
登入後複製

交易

列出交易清單

$transactions = $client->getAccountTransactions($account);
登入後複製

取得交易資訊

$transaction = $client->getAccountTransaction($account, $transactionId);
登入後複製

發送資金

use Coinbase\Wallet\Enum\CurrencyCode;
use Coinbase\Wallet\Resource\Transaction;
use Coinbase\Wallet\Value\Money;

$transaction = Transaction::send([
    'toBitcoinAddress' => 'ADDRESS',
    'amount'           => new Money(5, CurrencyCode::USD),
    'description'      => 'Your first bitcoin!',
    'fee'              => '0.0001' // only required for transactions under BTC0.0001
]);

try { $client->createAccountTransaction($account, $transaction); }
catch(Exception $e) {
     echo $e->getMessage(); 
}
登入後複製

將資金轉入新帳戶

use Coinbase\Wallet\Resource\Transaction;
use Coinbase\Wallet\Resource\Account;

$fromAccount = Account::reference($accountId);

$toAccount = new Account([
    'name' => 'New Account'
]);
$client->createAccount($toAccount);

$transaction = Transaction::transfer([
    'to'            => $toAccount,
    'bitcoinAmount' => 1,
    'description'   => 'Your first bitcoin!'
]);

$client->createAccountTransaction($fromAccount, $transaction);
登入後複製

申請資金

use Coinbase\Wallet\Enum\CurrencyCode;
use Coinbase\Wallet\Resource\Transaction;
use Coinbase\Wallet\Value\Money;

$transaction = Transaction::request([
    'amount'      => new Money(8, CurrencyCode::USD),
    'description' => 'Burrito'
]);

$client->createAccountTransaction($transaction);
登入後複製

重新發送請求

$account->resendTransaction($transaction);
登入後複製

取消請求

$account->cancelTransaction($transaction);
登入後複製

完成請求

$account->completeTransaction($transaction);
登入後複製

買入

列出購買清單

$buys = $client->getAccountBuys($account);
登入後複製

取得購買資訊

$buy = $client->getAccountBuy($account, $buyId);
登入後複製

買入比特幣

use Coinbase\Wallet\Resource\Buy;

$buy = new Buy([
    'bitcoinAmount' => 1
]);

$client->createAccountBuy($account, $buy);
登入後複製

購買確​​認

如果在建立購買時傳遞commit=false,則只需執行此操作。

use Coinbase\Wallet\Enum\Param;

$client->createAccountBuy($account, $buy, [Param::COMMIT => false]);
$client->commitBuy($buy);
登入後複製

賣出

出售清單

$sells = $client->getAccountSells($account);
登入後複製

取得銷售資訊

$sell = $client->getAccountSell($account, $sellId);
登入後複製

賣比特幣

use Coinbase\Wallet\Resource\Sell;

$sell = new Sell([
    'bitcoinAmount' => 1
]);

$client->createAccountSell($account, $sell);
登入後複製

出售確認

#如果在建立sell時傳遞commit=false,則只需執行此操作。

use Coinbase\Wallet\Enum\Param;

$client->createAccountSell($account, $sell, [Param::COMMIT => false]);
$client->commitSell($sell);
登入後複製

存款

列出存款清單

$deposits = $client->getAccountDeposits($account);
登入後複製

取得存款資訊

$deposit = $client->getAccountDeposit($account, $depositId);
登入後複製

存款

use Coinbase\Wallet\Enum\CurrencyCode;
use Coinbase\Wallet\Resource\Deposit;
use Coinbase\Wallet\Value\Money;

$deposit = new Deposit([
    'amount' => new Money(10, CurrencyCode::USD)
]);

$client->createAccountDeposit($account, $deposit);
登入後複製

提交押金

如果在建立存款時傳遞

commit=false

,則只需執行此操作。

use Coinbase\Wallet\Enum\Param;

$client->createAccountDeposit($account, $deposit, [Param::COMMIT => false]);
$client->commitDeposit($deposit);
登入後複製

提款

列出提款單

$withdrawals = $client->getAccountWithdrawals($account);
登入後複製

取消

$withdrawal = $client->getAccountWithdrawal($account, $withdrawalId);
登入後複製

提款

use Coinbase\Wallet\Enum\CurrencyCode;
use Coinbase\Wallet\Resource\Withdrawal;
use Coinbase\Wallet\Value\Money;

$withdrawal = new Withdrawal([
    'amount' => new Money(10, CurrencyCode::USD)
]);

$client->createAccountWithdrawal($account, $withdrawal);
登入後複製
###提交退出##### #如果在呼叫提款方法時傳遞###commit=true###,則只需執行此操作。 ###
use Coinbase\Wallet\Enum\Param;

$client->createAccountWithdrawal($account, $withdrawal, [Param::COMMIT => false]);
$client->commitWithdrawal($withdrawal);
登入後複製
###付款方式######列出付款方式###
$paymentMethods = $client->getPaymentMethods();
登入後複製
###取得付款方式###
$paymentMethod = $client->getPaymentMethod($paymentMethodId);
登入後複製
###商家######取得商家###
$merchant = $client->getMerchant($merchantId);
登入後複製
# ##訂單######列出訂單###
$orders = $client->getOrders();
登入後複製
###獲得訂單###
$order = $client->getOrder($orderId);
登入後複製
###建立訂單###
use Coinbase\Wallet\Resource\Order;
use Coinbase\Wallet\Value\Money;

$order = new Order([
    'name' => 'Order #1234',
    'amount' => Money::btc(1)
]);

$client->createOrder($order);
登入後複製
###退款訂單###
use Coinbase\Wallet\Enum\CurrencyCode;

$client->refundOrder($order, CurrencyCode::BTC);
登入後複製
###結帳## ####列出結帳單###
$checkouts = $client->getCheckouts();
登入後複製
###建立結帳單###
use Coinbase\Wallet\Resource\Checkout;

$params = array(
    'name'               => 'My Order',
    'amount'             => new Money(100, 'USD'),
    'metadata'           => array( 'order_id' => $custom_order_id )
);

$checkout = new Checkout($params);
$client->createCheckout($checkout);
$code = $checkout->getEmbedCode();
$redirect_url = "https://www.coinbase.com/checkouts/$code";
登入後複製
###結帳###
$checkout = $client->getCheckout($checkoutId);
登入後複製
###取得結帳的訂單###
$orders = $client->getCheckoutOrders($checkout);
登入後複製
###建立結帳訂單###
$order = $client->createNewCheckoutOrder($checkout);
登入後複製

通知webhook和验证

$raw_body = file_get_contents('php://input');
$signature = $_SERVER['HTTP_CB_SIGNATURE'];
$authenticity = $client->verifyCallback($raw_body, $signature); // boolean
登入後複製

贡献和测试

测试套件使用PHPUnit构建。通过运行phpunit命令运行单元测试套件。

phpunit
登入後複製

还有一组集成测试,它们向API发出实际请求并检查生成的对象。要运行这些测试,必须将phpunit.xml.dist复制到phpunit.xml,为CB_API_KEYCB_API_SECRET变量提供值,并在运行测试套件时指定integration组。

phpunit --group integration
登入後複製

以上是PHP如何使用比特幣Coinbase錢包庫開發應用程式(詳細步驟)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

免費觀看行情軟件網站 十大免費觀看行情軟件網站是哪些 免費觀看行情軟件網站 十大免費觀看行情軟件網站是哪些 Apr 24, 2025 pm 02:21 PM

推薦十大免費觀看行情軟件網站:1. 幣安 (Binance),2. 歐易 (OKX),3. 芝麻開門 (KuCoin),4. CoinMarketCap,5. CoinGecko,6. TradingView,7. Investing.com,8. Yahoo Finance,9. Glassnode Studio,10. LunarCrush,這些網站提供實時數據、技術分析工具和市場資訊,助您做出明智的投資決策。

說明如何使用會話進行用戶身份驗證。 說明如何使用會話進行用戶身份驗證。 Apr 26, 2025 am 12:04 AM

會話通過服務器端的狀態管理機制實現用戶認證。 1)會話創建並生成唯一ID,2)ID通過cookies傳遞,3)服務器存儲並通過ID訪問會話數據,4)實現用戶認證和狀態管理,提升應用安全性和用戶體驗。

如果session_start()被多次調用會發生什麼? 如果session_start()被多次調用會發生什麼? Apr 25, 2025 am 12:06 AM

多次調用session_start()會導致警告信息和可能的數據覆蓋。 1)PHP會發出警告,提示session已啟動。 2)可能導致session數據意外覆蓋。 3)使用session_status()檢查session狀態,避免重複調用。

必安下載教程 必安最新版下載教程 必安下載教程 必安最新版下載教程 Apr 24, 2025 pm 12:36 PM

下載必安最新版的步驟如下:1.訪問必安官方網站。 2.選擇適合的版本(Windows、macOS、Linux)。 3.下載安裝包。 4.雙擊安裝包並按提示安裝。 5.輸入激活碼並配置設置。 6.定期更新和掃描系統以確保安全。

一文詳細介紹虛擬幣 新手小白必看 一文詳細介紹虛擬幣 新手小白必看 Apr 24, 2025 pm 01:33 PM

虛擬幣是使用密碼學技術加密的數字資產,主要特徵包括去中心化、加密安全、全球流通和相對匿名性。虛擬幣的應用場景廣泛,包括價值存儲、交易媒介、投資理財、DeFi、NFT、區塊鏈遊戲、智能合約、dApps和治理投票。參與虛擬幣需1)學習基礎知識,2)選擇交易平台,3)註冊並驗證身份,4)購買虛擬幣,5)安全存放,6)參與社區。投資需注意價格波動、市場、技術、監管、詐騙和信息不對稱等風險。

全球最好用的免費虛擬幣交易所 免費的新手虛擬幣交易所app 全球最好用的免費虛擬幣交易所 免費的新手虛擬幣交易所app Apr 24, 2025 pm 12:57 PM

全球最好用的免費虛擬幣交易所是Binance、OKX和Gate.io。 1. Binance提供高效交易系統和豐富交易對,註冊簡單,支持多種加密貨幣交易。 2. OKX以技術支持和客戶服務聞名,提供多種交易方式。 3. Gate.io以豐富交易對和免費服務吸引新手,界面簡潔,支持多種語言。

比特交易所app手機下載安裝詳細教程最新版 比特交易所app手機下載安裝詳細教程最新版 Apr 24, 2025 pm 12:21 PM

比特交易所app支持Android和iOS,用戶可通過官方網站或App Store下載安裝,註冊後可進行加密貨幣交易,支持多種語言和法幣充值。

2025下一個千倍幣可能有哪些 2025下一個千倍幣可能有哪些 Apr 24, 2025 pm 01:45 PM

截至2025年4月,有七个加密货币项目被认为具有显著增长潜力:1. Filecoin(FIL)通过分布式存储网络实现快速发展;2. Aptos(APT)以高性能Layer 1公链吸引DApp开发者;3. Polygon(MATIC)提升以太坊网络性能;4. Chainlink(LINK)作为去中心化预言机网络满足智能合约需求;5. Avalanche(AVAX)以快速交易和

See all articles