PHP を使用して Bitcoin Coinbase ウォレット ライブラリを使用するアプリケーションを開発する方法 (詳細な手順)
この記事の内容は、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 キー
API キーと秘密キーを使用して、自分の Coinbase アカウントにアクセスします。
use Coinbase\Wallet\Client; use Coinbase\Wallet\Configuration; $configuration = Configuration::apiKey($apiKey, $apiSecret); $client = Client::create($configuration);
OAuth2
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);
2 要素認証
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 ]);
Response
生の応答データにアクセスするには、複数の方法があります。まず、すべてのリソース オブジェクトには、オブジェクト プロパティにマップされていないフィールドにアクセスするために使用できる 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);
チェックアウト
List Checkout
$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_KEY
和CB_API_SECRET
变量提供值,并在运行测试套件时指定integration
组。
phpunit --group integration
以上がPHP を使用して Bitcoin Coinbase ウォレット ライブラリを使用するアプリケーションを開発する方法 (詳細な手順)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

OKXはグローバルデジタル資産取引プラットフォームです。その主な機能には、1。デジタル資産の売買(スポット取引)、2。デジタル資産間の取引、3。4。DiversifiedTrading製品(デリバティブなど)の提供、5。Asset付加価値サービスの提供、6。便利な資産管理。

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

PHP8では、一致式は、式の値に基づいて異なる結果を返す新しい制御構造です。 1)Switchステートメントに似ていますが、実行ステートメントブロックの代わりに値を返します。 2)一致式の式は厳密に比較され、セキュリティが向上します。 3)スイッチステートメントの脱落の可能性を回避し、コードのシンプルさと読みやすさを向上させます。

デジタル通貨ローリングポジションは、貸付を使用して取引レバレッジを増幅してリターンを増やす投資戦略です。 この記事では、ローリング(バイナンス、Okex、gate.io、huobi、bybitなど)をサポートする取引プラットフォームの選択などの重要な手順など、デジタル通貨ローリングプロセスを詳細に説明します。 ただし、ローリングポジション取引は非常に危険であり、投資家は慎重に運営し、完全なリスク管理戦略を策定する必要があります。 デジタル通貨ローリングのヒントの詳細については、読み続けてください。

PHPでは、予測不可能なトークンを使用して、CSRF攻撃を効果的に防ぐことができます。特定の方法には次のものが含まれます。1。フォームのCSRFトークンを生成および埋め込みます。 2.リクエストを処理するときにトークンの有効性を確認します。

gate.io取引プラットフォームの処理料は、トランザクションタイプ、トランザクションペア、ユーザーVIPレベルなどの要因によって異なります。スポット取引のデフォルト料金率は0.15%(VIP0レベル、メーカー、テイカー)ですが、VIPレベルはユーザーの30日間の取引量とGTポジションに基づいて調整されます。レベルが高いほど、料金率は低くなります。 GTプラットフォームコイン控除をサポートしており、55%オフの最低割引を楽しむことができます。契約トランザクションのデフォルトレートはメーカー0.02%、テイカー0.05%(VIP0レベル)であり、これもVIPレベルの影響を受け、異なる契約タイプとレバレッジ
