currency-cloud-test / client
这是一个 PHP 库,实现了 The Currency Cloud API v2 的完整功能。
Requires
- php: >=5.5
- guzzlehttp/guzzle: ~6.1
- symfony/event-dispatcher: ^2.7
- symfony/yaml: ~2.7
Requires (Dev)
- php-vcr/php-vcr: ~1.2
- php-vcr/phpunit-testlistener-vcr: ~1.1
- phpunit/phpunit: ~4.7
This package is not auto-updated.
Last update: 2024-09-19 17:49:16 UTC
README
Currencycloud API v2 PHP 客户端
版本:0.13.0
这是 Currencycloud API 的官方 PHP SDK。每个 API 端点的附加文档可以在 developer.currencycloud.com 找到。
如果您有任何疑问或需要支持,请联系我们的销售团队 sales@currencycloud.com。请在任何通讯中引用您的登录 ID,这将使我们的工作更简单,帮助我们找到您的账户并为您提供所需的支持。
先决条件
Composer(可选,但强烈推荐)
CurrencyCloud-PHP 是一个 Composer 项目。虽然使用 Composer 不是强制性的,但使用 Composer 进行依赖管理和自动加载将更加方便。
支持的 PHP 版本
此库旨在支持并针对 PHP 5.5 及更高版本进行测试。
安装
推荐通过 Composer 安装 Currencycloud SDK。
如果您没有安装 composer,请查看 Composer 安装指南。
假设您已全局安装 composer,您可以通过执行以下操作将 Currencycloud SDK 添加到您的项目中:
composer require currency-cloud/client
安装后,如果您之前没有要求,则需要要求 Composer 的自动加载器:
require 'vendor/autoload.php';
用法
您可以在 developer.currencycloud.com 注册演示 API 密钥。
PHP 5.5 中的示例
use CurrencyCloud\CurrencyCloud; use CurrencyCloud\Session; require_once __DIR__ . '/vendor/autoload.php'; $session = new Session( Session::ENVIRONMENT_DEMONSTRATION, '<user-id>', '<api-key>' ); $client = CurrencyCloud::createDefault($session); //Authenticate $client->authenticate() ->login(); //Get available currencies $currencies = $client->reference() ->availableCurrencies(); echo "Supproted currencies:\n"; foreach ($currencies as $currency) { printf( "Currency: %s; Code: %s; Decimal places: %d\n", $currency->getName(), $currency->getCode(), $currency->getDecimalPlaces() ); } echo "Balances:\n"; //Find balances $balances = $client->balances() ->find(); foreach ($balances->getBalances() as $balance) { printf( "Balance ID: %s; Currency: %s; Amount: %s\n", $balance->getId(), $balance->getCurrency(), $balance->getAmount() ); } //Close session $client->authenticate()->close();
对于更长的示例,请参阅 cook-book.php,它是对文档中 Cookbook 的实现。
常见模式
在多个请求中重用客户端
身份验证令牌是长期存在的,并且旨在用于多个请求。这将提高通过 API 的调用性能。
代表某人
如果您想代表其他用户进行调用(例如您的最终客户端),您可以执行某些命令“代表”用户的联系 ID。以下是一个示例
$client->onBehalfOf('c6ece846-6df1-461d-acaa-b42a6aa74045', function (CurrencyCloud $client) { $balances = $client->balances() ->find(); foreach ($balances->getBalances() as $balance) { printf( "Balance ID: %s; Currency: %s; Amount: %s\n", $balance->getId(), $balance->getCurrency(), $balance->getAmount() ); } });
上述每笔交易都将在该联系人的限制范围内执行,并与其关联。请注意,执行交易的真正用户也将被存储。
错误
当 API 发生错误时,库旨在提供尽可能多的信息。将抛出包含许多有用信息的 CurrencyCloudException,您可以通过其方法访问这些信息。当异常转换为字符串时,它将提供如下信息:
BadRequestException --- platform: 'PHP 5.6.14-1+deb.sury.org~trusty+1' request: parameters: { } verb: get url: 'https://devapi.currencycloud.com/v2/rates/detailed?buy_currency=EUR&sell_currency=GBP&fixed_side=buy&amount=10000.00' response: status_code: 400 date: 'Sun, 06 Nov 2015 18:22:47 GMT' request_id: '2915002181730358306' errors: - field: base code: rate_could_not_be_retrieved message: 'Rate could not be retrieved' params: { }
这分为 5 个部分
- 错误类型:在这种情况下,
BadRequestException代表 HTTP 400 错误 - 平台:客户端中使用的 PHP 实现
- 请求:关于已发出的 HTTP 请求的详细信息,例如 POST 参数
- 响应:关于返回的 HTTP 响应的详细信息,例如 HTTP 状态码
- 错误:提供额外信息的错误列表
最后一部分包含有价值的信息
- 字段:与错误相关的参数
- 代码:表示此错误的代码
- 消息:一个可读的人性化消息,用于解释错误
- 参数:一个包含错误消息动态部分的映射,用于构建自定义错误消息
当与Currencycloud支持团队调试API调用时,在所有通信中包含完整错误信息非常有帮助。
开发
测试
可以使用vendor/bin/phpunit运行测试用例。
依赖
版本控制
本项目使用语义化版本控制。您可以安全地表达对主版本的依赖,并期望所有次要版本和修补版本都是向后兼容的。
版权
版权(c)2016 Currencycloud。有关详细信息,请参阅LICENSE。