coinpaymentsnet/coinpayments-php

为CoinPayments.net v1 API提供的PHP包装器。

v1.4 2018-09-15 00:00 UTC

This package is auto-updated.

Last update: 2024-09-20 19:50:37 UTC


README

需求

建议使用较新版本的PHP。此库是在PHP v7.2.8-1+环境中编写的。我们测试代码的最小版本是PHP v5.5+。我们的PHP版本兼容性测试使用了PHP CodeSnifferPHP兼容性的组合。

拥有API密钥对设置的CoinPayments.net账户(公共和私有)。有关最新说明,请访问我们的在线API文档,了解如何设置您的API密钥并获取您的账户API密钥页面链接。

请参阅下面的测试部分,以了解测试特定命令(使用LTCT或主网币)的附加要求。

请注意,此包装器假定API响应的格式为JSON。另一种选择是XML,但XML格式在此包装器中未记录或不受支持。默认情况下,除非明确指定,否则每个API调用都将返回JSON。

安装

GitHub

此CoinPayments.net API包装器可以通过GitHub直接下载或克隆。要在您的项目中使用它,请克隆此存储库或将ZIP文件下载到您选择的目录。

使用所需的最小文件是源文件夹中的文件,即CoinpaymentsAPI.phpCoinpaymentsValidator.phpCoinpaymentsCurlRequest.php。对于使用预定义的API密钥和测试变量,还需要第四个文件keys.php。有一个keys_example.php文件,可以将其填充并重命名为keys.php。此密钥文件用于将您的公共和私有API密钥传递给包装器,以便调用Coinpayments.net平台。您也可以手动将您的密钥传递给CoinpaymentsAPI类,而不是使用keys.php文件。keys.php文件应放置在/src目录中。

Composer

要使用Composer安装,请运行以下命令

composer require coinpaymentsnet/coinpayments-php

然后,在您想要使用包装器类的项目中包含以下行。

require_once('your_project_path_to/vendor/autoload.php');

注意,/examples目录不使用composer自动加载。

当使用composer自动加载类时,您应该在vendor目录之外定义您的keys.php文件,以免在升级包时覆盖它。请参阅src/keys_example.php作为keys.php文件的示例。

Packagist.org包URL

示例

一旦在keys.php文件中设置了公共和私有密钥,就可以在浏览器中预览/examples目录中的脚本。这显然需要能够用Apache等Web服务器提供这些示例PHP文件。请参阅下面的附加测试说明,了解如何与这些示例和您的账户交互。一些示例需要您在示例文件中填充初始变量才能执行其中的脚本。

用法

最简单的例子是检索基本账户信息。

// Ignore this line if using composer autoload,
// otherwise, manual wrapper usage include the following require:
require('/your_installation_path_to/src/CoinpaymentsAPI.php');

// Either include the sample keys.php file (once populated) or manually set $public_key and $private_key variables
require('/your_installation_path_to/src/keys.php');

// Create a new API wrapper instance and call to the get basic account information command.
try {
    $cps_api = new CoinpaymentsAPI($private_key, $public_key, 'json');
    $information = $cps_api->GetBasicInfo();
} catch (Exception $e) {
    echo 'Error: ' . $e->getMessage();
    exit();
}

// Check for success of API call
if ($information['error'] == 'ok') {
    // Prepare start of sample HTML output
    $output = '<table><tbody><tr><td>Username</td><td>Merchant ID</td><td>Email</td><td>Public Name</td></tr>';
    $output .= '<tr><td>' . $information['result']['username'] . '</td><td>' . $information['result']['merchant_id'] . '</td><td>' . $information['result']['email'] . '</td><td>' . $information['result']['public_name'] . '</td></tr>';
    
    // Close the sample output HTML and echo it onto the page
    $output .= '</tbody></table>';
    echo $output;
} else {
    // Throw an error if both API calls were not successful
    echo 'There was an error returned by the API call: ' . $information['error'];
}

测试

为了运行测试文件夹中的PHPUnit测试和在/examples目录中预览脚本,需要完全填充keys.php文件。下面以命令格式描述了测试命令的不同要求

  • 原始_api_command_name | 包装器FunctionName()

只有公钥和私钥被填充时,以下命令可以测试。要使这些命令返回非空结果,需要您的CoinPayments.net账户中相应的资源(资金)已存入(存款)、更新(货币接受设置)或创建(地址)。

  • get_basic_info | GetBasicInfo()
  • rates | GetRates()GetRatesWithAccepted()GetShortRates()GetShortRatesWithAccepted
  • balances | GetCoinBalances()GetAllCoinBalances()
  • get_deposit_address | GetDepositAddress()
  • get_callback_address | GetOnlyCallbackAddress()GetCallbackAddressWithIpn()
  • convert_limits | GetConversionLimits()

请注意,上述get_callback_address命令和函数还需要在您的账户中设置IPN URL,或者与命令一起传递,如果您想测试您的服务器在支付到返回的地址时被通知。更多信息请参阅我们关于即时支付通知(IPN)系统的文档。

附加变量(API密钥以下)需要设置第二个CoinPayments.net开发者账户以测试以下命令,假设货币是LTCT。或者,也可以使用能够接收和发送您正在测试的货币的其他地址或钱包进行测试,只要该货币由CoinPayments.net平台支持。请参阅支持的货币

  • create_transaction | CreateSimpleTransaction()CreateSimpleTransactionWithConversion()CreateComplexTransaction()CreateCustomTransaction()
  • create_transfer | CreateMerchantTransfer()
  • get_withdrawal_history | GetWithdrawalHistory()
  • get_withdrawal_info | GetWithdrawalInformation()
  • create_withdrawal & create_mass_withdrawal | CreateWithdrawal() & CreateMassWithdrawal() * 仅使用地址,而不是$PayByName,见下文。

目前,我们的API不允许在不访问生产资产的情况下测试货币转换或$PayByName命令,因此以下命令需要平台上的生产环境数据。例如,未认领和已认领的$PayByName标记或可转换的两种货币。我们的开发团队已使用生产环境数据(资产)运行了这些测试,以将这些命令包含在代码测试覆盖率中。仍然建议在将任何集成作为发布的一部分之前,使用生产环境测试这些命令。这需要少量主网货币用于转换,以及至少购买一个$PayByName标记以认领,发送资金并检索信息(以测试所有可能的命令)。

  • convert | ConvertCoins()
  • get_conversion_info | GetConversionInformation()
  • get_pbn_info | GetProfileInformation()
  • get_pbn_list | GetTagList()
  • update_pbn_tag | UpdateTagProfile()
  • claim_pbn_tag | ClaimPayByNameTag()
  • create_transfer | CreatePayByNameTransfer()
  • create_withdrawal & create_mass_withdrawal | CreateWithdrawal() & CreateMassWithdrawal() * 使用$PayByName而不是地址

PHPUnit测试

要从/tests目录运行测试,请运行此命令

phpunit CoinpaymentsAPITest

带有您选择的输出类型标志。或者,您可以将IDE(如PHPStorm)配置为为您运行CoinpaymentsAPITest.php中的测试。在开发此包装器时,我们使用了PHPUnit v7.3.1。

交易费用

使用任何主网货币进行的测试交易都会产生常规交易和网络费用,这就是我们强烈建议在测试您的API集成时使用LiteCoin Testnet(LTCT)的原因。

贡献

如果您在使用此包装器时遇到错误或对改进有建议,欢迎您在此存储库上创建一个Github问题,它将由我们的开发团队成员之一进行审核。CoinPayments.net的漏洞赏金不涵盖此包装器。

许可协议

MIT - 请参阅LICENSE.md