ホームページ >バックエンド開発 >PHPチュートリアル >PHP を使用して Bitcoin Coinbase ウォレット ライブラリを使用するアプリケーションを開発する方法 (詳細な手順)

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

不言
不言転載
2018-10-19 15:50:485450ブラウズ

この記事の内容は、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

が渡された場合にのみ実行する必要があります。 <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>引き出し

引き出し注文のリスト

$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

が渡された場合に実行する必要があります。 <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>支払い方法

支払い方法のリスト

$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 サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。