この記事の内容は、Bitcoin Coinbase ウォレット ライブラリを使用して PHP でアプリケーションを開発する方法 (詳細な手順) に関するものです。一定の参考価値があります。必要な友人は参照できます。お役に立てれば幸いです。 。
これは、Coinbase Wallet API v2 の公式クライアント ライブラリです。 Coinbase Wallet を PHP プロジェクトに統合するための直感的で安定したインターフェイスを提供します。
重要: このライブラリは新しい API v2 をターゲットとしているため、v2 権限が必要です (つまり、wallet:accounts:read
)。まだ v1 を使用している場合は、このライブラリの古いバージョンを使用してください。
Composer を使用してライブラリをインストールします。 Composer や依存関係マネージャーに詳しくない場合は、Composer のドキュメントを読んでください。
"require": { "coinbase/coinbase": "~2.0" }
API キーと秘密キーを使用して、自分の Coinbase アカウントにアクセスします。
use Coinbase\Wallet\Client; use Coinbase\Wallet\Configuration; $configuration = Configuration::apiKey($apiKey, $apiSecret); $client = Client::create($configuration);
OAuth2 認証を使用して、自分以外のユーザー アカウントにアクセスします。このライブラリはハンドシェイク プロセスを処理せず、初期化時にアクセス トークンがあることを前提としています。 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);
Send Funds エンドポイントでは、場合によって 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();
Get現在のユーザー
$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);
販売確認
#これは、販売の作成時に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 が渡された場合にのみ実行する必要があります。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">use Coinbase\Wallet\Enum\Param;
$client->createAccountDeposit($account, $deposit, [Param::COMMIT => false]);
$client->commitDeposit($deposit);</pre><div class="contentsignin">ログイン後にコピー</div></div>
引き出し
$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 が渡された場合に実行する必要があります。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">use Coinbase\Wallet\Enum\Param;
$client->createAccountWithdrawal($account, $withdrawal, [Param::COMMIT => false]);
$client->commitWithdrawal($withdrawal);</pre><div class="contentsignin">ログイン後にコピー</div></div>
支払い方法
$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);
$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_KEY
和CB_API_SECRET
变量提供值,并在运行测试套件时指定integration
组。
phpunit --group integration
以上がPHP を使用して Bitcoin Coinbase ウォレット ライブラリを使用するアプリケーションを開発する方法 (詳細な手順)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。