目次
インストール
認証
API キー
OAuth2
2 要素認証
ページング
警告
リソース参照
Response
アクティブ レコーディング メソッド
使用法
市場データ
ユーザー
アカウント
アドレス
トランザクション
購入
販売
引き出し注文のリスト
支払い方法のリスト
販売者の取得
注文の一覧表示
List Checkout
通知webhook和验证
贡献和测试
ホームページ バックエンド開発 PHPチュートリアル PHP を使用して Bitcoin Coinbase ウォレット ライブラリを使用するアプリケーションを開発する方法 (詳細な手順)

PHP を使用して Bitcoin Coinbase ウォレット ライブラリを使用するアプリケーションを開発する方法 (詳細な手順)

Oct 19, 2018 pm 03:50 PM
php ブロックチェーン 後部 ビットコイン プログラマー

この記事の内容は、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-&gt;createAccountDeposit($account, $deposit, [Param::COMMIT =&gt; false]); $client-&gt;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-&gt;createAccountWithdrawal($account, $withdrawal, [Param::COMMIT =&gt; false]); $client-&gt;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_KEYCB_API_SECRET变量提供值,并在运行测试套件时指定integration组。

phpunit --group integration
ログイン後にコピー

以上がPHP を使用して Bitcoin Coinbase ウォレット ライブラリを使用するアプリケーションを開発する方法 (詳細な手順)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

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

OUYIとは何ですか? ouyiとは何ですか OUYIとは何ですか? ouyiとは何ですか Apr 01, 2025 pm 03:18 PM

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

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

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

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

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

一致式(PHP 8)とそれがスイッチとどのように異なるかを説明します。 一致式(PHP 8)とそれがスイッチとどのように異なるかを説明します。 Apr 06, 2025 am 12:03 AM

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

デジタル通貨でポジションを転がす方法は?デジタル通貨ローリングプラットフォームとは何ですか? デジタル通貨でポジションを転がす方法は?デジタル通貨ローリングプラットフォームとは何ですか? Mar 31, 2025 pm 07:36 PM

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

クロスサイトリクエストフォーファリー(CSRF)とは何ですか?また、PHPにCSRF保護をどのように実装しますか? クロスサイトリクエストフォーファリー(CSRF)とは何ですか?また、PHPにCSRF保護をどのように実装しますか? Apr 07, 2025 am 12:02 AM

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

gate.io取引プラットフォームの取引料を計算する方法は? gate.io取引プラットフォームの取引料を計算する方法は? Mar 31, 2025 pm 09:15 PM

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

See all articles