diff --git a/docs/classes/BitPaySDK-Client.html b/docs/classes/BitPaySDK-Client.html
index 79a5d4de..547e77c2 100644
--- a/docs/classes/BitPaySDK-Client.html
+++ b/docs/classes/BitPaySDK-Client.html
@@ -811,7 +811,7 @@
@@ -906,7 +906,7 @@
@@ -1001,7 +1001,7 @@
@@ -1085,7 +1085,7 @@
@@ -1166,7 +1166,7 @@
@@ -1246,7 +1246,7 @@
@@ -1326,7 +1326,7 @@
@@ -1428,7 +1428,7 @@
@@ -1530,7 +1530,7 @@
@@ -1611,7 +1611,7 @@
@@ -1758,7 +1758,7 @@
@@ -1766,7 +1766,7 @@
public
- static createWithData(string $environment, string $privateKey, Tokens $tokens[, string|null $privateKeySecret = null ][, string|null $proxy = null ]) : Client
+ static createWithData(string $environment, string $privateKey, Tokens $tokens[, string|null $privateKeySecret = null ][, string|null $proxy = null ][, string|null $platformInfo = null ]) : Client
@@ -1819,6 +1819,15 @@ Parameters
http://********.com:3128
+
+
+ $platformInfo
+ : string|null
+ = null
+
+ Value for the X-BitPay-Platform header.
+
+
@@ -1869,7 +1878,7 @@
@@ -1877,7 +1886,7 @@
public
- static createWithFile(string $configFilePath) : Client
+ static createWithFile(string $configFilePath[, string|null $platformInfo = null ]) : Client
@@ -1893,6 +1902,15 @@ Parameters
The path to the configuration file.
+
+
+ $platformInfo
+ : string|null
+ = null
+
+ Value for the X-BitPay-Platform header.
+
+
@@ -1935,7 +1953,7 @@
@@ -2023,7 +2041,7 @@
@@ -2125,7 +2143,7 @@
@@ -2227,7 +2245,7 @@
@@ -2309,7 +2327,7 @@
@@ -2407,7 +2425,7 @@
@@ -2496,7 +2514,7 @@
@@ -2599,7 +2617,7 @@
@@ -2703,7 +2721,7 @@
@@ -2833,7 +2851,7 @@
@@ -2939,7 +2957,7 @@
@@ -3015,7 +3033,7 @@
@@ -3100,7 +3118,7 @@
@@ -3185,7 +3203,7 @@
@@ -3288,7 +3306,7 @@
@@ -3418,7 +3436,7 @@
@@ -3488,7 +3506,7 @@
@@ -3576,7 +3594,7 @@
@@ -3664,7 +3682,7 @@
@@ -3740,7 +3758,7 @@
@@ -3824,7 +3842,7 @@
Client.php
:
- 1005
+ 1008
@@ -3917,7 +3935,7 @@
@@ -4049,7 +4067,7 @@
@@ -4121,7 +4139,7 @@
@@ -4183,7 +4201,7 @@
@@ -4270,7 +4288,7 @@
@@ -4358,7 +4376,7 @@
@@ -4442,7 +4460,7 @@
Client.php
:
- 811
+ 814
@@ -4530,7 +4548,7 @@
@@ -4610,7 +4628,7 @@
@@ -4694,7 +4712,7 @@
@@ -4782,7 +4800,7 @@
@@ -4875,7 +4893,7 @@
@@ -4995,7 +5013,7 @@
@@ -5088,7 +5106,7 @@
@@ -5177,7 +5195,7 @@
@@ -5266,7 +5284,7 @@
@@ -5309,7 +5327,7 @@
@@ -5352,7 +5370,7 @@
@@ -5395,7 +5413,7 @@
@@ -5438,7 +5456,7 @@
@@ -5481,7 +5499,7 @@
@@ -5524,7 +5542,7 @@
@@ -5567,7 +5585,7 @@
@@ -5610,7 +5628,7 @@
@@ -5653,7 +5671,7 @@
@@ -5716,7 +5734,7 @@
@@ -5755,7 +5773,7 @@
diff --git a/docs/classes/BitPaySDK-PosClient.html b/docs/classes/BitPaySDK-PosClient.html
index afc0dba3..bb4ec7d2 100644
--- a/docs/classes/BitPaySDK-PosClient.html
+++ b/docs/classes/BitPaySDK-PosClient.html
@@ -215,6 +215,13 @@
: string
+
+ $platformInfo
+
+ : string
+
+Value for the X-BitPay-Platform-Info header
+
$restCli
@@ -735,6 +742,43 @@
+
+
+
+
+
+ Value for the X-BitPay-Platform-Info header
+
+
+
+ protected
+ string
+ $platformInfo
+
+
+
+
+
+
+
+
@@ -825,7 +869,7 @@
@@ -902,7 +946,7 @@
@@ -910,7 +954,7 @@
public
- __construct(mixed $token[, string|null $environment = null ]) : mixed
+ __construct(string $token[, string|null $environment = null ][, string|null $platformInfo = null ]) : mixed
@@ -920,10 +964,10 @@ Parameters
-
$token
- : mixed
+ : string
-
-
string The token generated on the BitPay account.
+ The token generated on the BitPay account.
@@ -932,7 +976,16 @@ Parameters
: string|null
= null
- string The target environment [Default: Production].
+ The target environment [Default: Production].
+
+
+
+
+ $platformInfo
+ : string|null
+ = null
+
+ Value for the X-BitPay-Platform-Info header.
@@ -973,7 +1026,7 @@
@@ -1068,7 +1121,7 @@
@@ -1163,7 +1216,7 @@
@@ -1247,7 +1300,7 @@
@@ -1328,7 +1381,7 @@
@@ -1408,7 +1461,7 @@
@@ -1488,7 +1541,7 @@
@@ -1590,7 +1643,7 @@
@@ -1692,7 +1745,7 @@
@@ -1773,7 +1826,7 @@
@@ -1920,7 +1973,7 @@
@@ -1928,7 +1981,7 @@
public
- static createWithData(string $environment, string $privateKey, Tokens $tokens[, string|null $privateKeySecret = null ][, string|null $proxy = null ]) : Client
+ static createWithData(string $environment, string $privateKey, Tokens $tokens[, string|null $privateKeySecret = null ][, string|null $proxy = null ][, string|null $platformInfo = null ]) : Client
@@ -1981,6 +2034,15 @@ Parameters
http://********.com:3128
+
+
+ $platformInfo
+ : string|null
+ = null
+
+ Value for the X-BitPay-Platform header.
+
+
@@ -2031,7 +2093,7 @@
@@ -2039,7 +2101,7 @@
public
- static createWithFile(string $configFilePath) : Client
+ static createWithFile(string $configFilePath[, string|null $platformInfo = null ]) : Client
@@ -2055,6 +2117,15 @@ Parameters
The path to the configuration file.
+
+
+ $platformInfo
+ : string|null
+ = null
+
+ Value for the X-BitPay-Platform header.
+
+
@@ -2097,7 +2168,7 @@
@@ -2185,7 +2256,7 @@
@@ -2287,7 +2358,7 @@
@@ -2389,7 +2460,7 @@
@@ -2471,7 +2542,7 @@
@@ -2537,7 +2608,7 @@
@@ -2635,7 +2706,7 @@
@@ -2724,7 +2795,7 @@
@@ -2827,7 +2898,7 @@
@@ -2931,7 +3002,7 @@
@@ -3061,7 +3132,7 @@
@@ -3167,7 +3238,7 @@
@@ -3243,7 +3314,7 @@
@@ -3328,7 +3399,7 @@
@@ -3413,7 +3484,7 @@
@@ -3516,7 +3587,7 @@
@@ -3646,7 +3717,7 @@
@@ -3716,7 +3787,7 @@
@@ -3804,7 +3875,7 @@
@@ -3892,7 +3963,7 @@
@@ -3968,7 +4039,7 @@
@@ -4052,7 +4123,7 @@
Client.php
:
- 1005
+ 1008
@@ -4145,7 +4216,7 @@
@@ -4277,7 +4348,7 @@
@@ -4349,7 +4420,7 @@
@@ -4411,7 +4482,7 @@
@@ -4498,7 +4569,7 @@
@@ -4586,7 +4657,7 @@
@@ -4670,7 +4741,7 @@
Client.php
:
- 811
+ 814
@@ -4758,7 +4829,7 @@
@@ -4838,7 +4909,7 @@
@@ -4922,7 +4993,7 @@
@@ -5010,7 +5081,7 @@
@@ -5103,7 +5174,7 @@
@@ -5223,7 +5294,7 @@
@@ -5316,7 +5387,7 @@
@@ -5405,7 +5476,7 @@
@@ -5494,7 +5565,7 @@
@@ -5537,7 +5608,7 @@
@@ -5580,7 +5651,7 @@
@@ -5623,7 +5694,7 @@
@@ -5666,7 +5737,7 @@
@@ -5709,7 +5780,7 @@
@@ -5752,7 +5823,7 @@
@@ -5795,7 +5866,7 @@
@@ -5838,7 +5909,7 @@
@@ -5881,7 +5952,7 @@
@@ -5944,7 +6015,7 @@
@@ -5983,7 +6054,7 @@
@@ -6033,7 +6104,7 @@
@@ -6211,6 +6282,7 @@ Return values
- $env
+ - $platformInfo
- $restCli
- $RESTcli
- $token
diff --git a/docs/classes/BitPaySDK-Util-RESTcli-RESTcli.html b/docs/classes/BitPaySDK-Util-RESTcli-RESTcli.html
index 2b971357..f03bf536 100644
--- a/docs/classes/BitPaySDK-Util-RESTcli-RESTcli.html
+++ b/docs/classes/BitPaySDK-Util-RESTcli-RESTcli.html
@@ -232,6 +232,13 @@
: string
+ -
+ $platformInfo
+
+ : string
+
+- Value for the X-BitPay-Platform-Info header.
+
-
$proxy
@@ -337,7 +344,7 @@
@@ -409,7 +416,7 @@
@@ -445,7 +452,7 @@
@@ -463,6 +470,43 @@
+
+
+
+
+
+ Value for the X-BitPay-Platform-Info header.
+
+
+
+ protected
+ string
+ $platformInfo
+
+
+
+
+
+
+
+
@@ -522,7 +566,7 @@
@@ -530,7 +574,7 @@
public
- __construct(string $environment, PrivateKey $ecKey[, string|null $proxy = null ]) : mixed
+ __construct(string $environment, PrivateKey $ecKey[, string|null $proxy = null ], string|null $platformInfo) : mixed
@@ -558,6 +602,13 @@ Parameters
= null
-
+
+ -
+ $platformInfo
+ : string|null
+
+ -
+
@@ -596,7 +647,7 @@
@@ -675,7 +726,7 @@
@@ -765,7 +816,7 @@
@@ -829,7 +880,7 @@
@@ -879,7 +930,7 @@
@@ -969,7 +1020,7 @@
@@ -1048,7 +1099,7 @@
@@ -1096,7 +1147,7 @@
@@ -1266,6 +1317,7 @@
- $client
- $ecKey
- $identity
+ - $platformInfo
- $proxy
diff --git a/docs/js/searchIndex.js b/docs/js/searchIndex.js
index f6b36c43..15e2b931 100644
--- a/docs/js/searchIndex.js
+++ b/docs/js/searchIndex.js
@@ -9250,6 +9250,11 @@ Search.appendIndex(
"name": "env",
"summary": "",
"url": "classes/BitPaySDK-PosClient.html#property_env"
+ }, {
+ "fqsen": "\\BitPaySDK\\PosClient\u003A\u003A\u0024platformInfo",
+ "name": "platformInfo",
+ "summary": "Value\u0020for\u0020the\u0020X\u002DBitPay\u002DPlatform\u002DInfo\u0020header",
+ "url": "classes/BitPaySDK-PosClient.html#property_platformInfo"
}, {
"fqsen": "\\BitPaySDK\\PosClient\u003A\u003A\u0024token",
"name": "token",
@@ -9390,6 +9395,11 @@ Search.appendIndex(
"name": "identity",
"summary": "",
"url": "classes/BitPaySDK-Util-RESTcli-RESTcli.html#property_identity"
+ }, {
+ "fqsen": "\\BitPaySDK\\Util\\RESTcli\\RESTcli\u003A\u003A\u0024platformInfo",
+ "name": "platformInfo",
+ "summary": "Value\u0020for\u0020the\u0020X\u002DBitPay\u002DPlatform\u002DInfo\u0020header.",
+ "url": "classes/BitPaySDK-Util-RESTcli-RESTcli.html#property_platformInfo"
}, {
"fqsen": "\\BitPaySDK\\Util\\RESTcli\\RESTcli\u003A\u003A\u0024proxy",
"name": "proxy",
diff --git a/src/BitPaySDK/Client.php b/src/BitPaySDK/Client.php
index 6d0587d5..4589cb7f 100644
--- a/src/BitPaySDK/Client.php
+++ b/src/BitPaySDK/Client.php
@@ -71,6 +71,7 @@ public function __construct(RESTcli $restCli, Tokens $tokenCache)
* @param string|null $privateKeySecret Private Key encryption password.
* @param string|null $proxy The url of your proxy to forward requests through. Example:
* http://********.com:3128
+ * @param string|null $platformInfo Value for the X-BitPay-Platform header.
* @return Client
* @throws BitPayApiException
* @throws BitPayGenericException
@@ -80,12 +81,13 @@ public static function createWithData(
string $privateKey,
Tokens $tokens,
?string $privateKeySecret = null,
- ?string $proxy = null
+ ?string $proxy = null,
+ ?string $platformInfo = null,
): Client {
try {
$key = self::initKeys($privateKey, $privateKeySecret);
- $restCli = new RESTcli($environment, $key, $proxy);
+ $restCli = new RESTcli($environment, $key, $proxy, $platformInfo);
$tokenCache = $tokens;
return new Client($restCli, $tokenCache);
@@ -99,11 +101,12 @@ public static function createWithData(
/**
* Constructor for use if the keys and SIN are managed by this library.
*
- * @param string $configFilePath The path to the configuration file.
+ * @param string $configFilePath The path to the configuration file.
+ * @param string|null $platformInfo Value for the X-BitPay-Platform header.
* @return Client
* @throws BitPayGenericException
*/
- public static function createWithFile(string $configFilePath): Client
+ public static function createWithFile(string $configFilePath, ?string $platformInfo = null): Client
{
try {
$configData = self::getConfigData($configFilePath);
@@ -113,7 +116,7 @@ public static function createWithFile(string $configFilePath): Client
$key = self::initKeys($config['PrivateKeyPath'], $config['PrivateKeySecret']);
$proxy = $config['Proxy'] ?? null;
- $restCli = new RESTcli($env, $key, $proxy);
+ $restCli = new RESTcli($env, $key, $proxy, $platformInfo);
$tokenCache = new Tokens($config['ApiTokens']['merchant'], $config['ApiTokens']['payout']);
return new Client($restCli, $tokenCache);
diff --git a/src/BitPaySDK/PosClient.php b/src/BitPaySDK/PosClient.php
index d9faa302..33c44476 100644
--- a/src/BitPaySDK/PosClient.php
+++ b/src/BitPaySDK/PosClient.php
@@ -27,22 +27,30 @@
class PosClient extends Client
{
protected string $env;
+
+ /**
+ * Value for the X-BitPay-Platform-Info header
+ * @var string
+ */
+ protected string $platformInfo;
protected Tokens $token;
protected RESTcli $RESTcli;
/**
* Constructor for the BitPay SDK to use with the POS facade.
*
- * @param $token string The token generated on the BitPay account.
- * @param string|null $environment string The target environment [Default: Production].
+ * @param string $token The token generated on the BitPay account.
+ * @param string|null $environment The target environment [Default: Production].
+ * @param string|null $platformInfo Value for the X-BitPay-Platform-Info header.
*
* @throws BitPayGenericException
*/
- public function __construct(string $token, string $environment = null)
+ public function __construct(string $token, string $environment = null, ?string $platformInfo = null)
{
try {
$this->token = new Tokens(null, null, $token);
$this->env = strtolower($environment) === "test" ? Env::TEST : Env::PROD;
+ $this->platformInfo = $platformInfo !== null ? trim($platformInfo) : '';
$this->init();
parent::__construct($this->RESTcli, new Tokens(null, null, $token));
} catch (Exception $e) {
@@ -60,7 +68,7 @@ public function __construct(string $token, string $environment = null)
private function init(): void
{
try {
- $this->RESTcli = new RESTcli($this->env, new PrivateKey());
+ $this->RESTcli = new RESTcli($this->env, new PrivateKey(), null, $this->platformInfo);
} catch (Exception $e) {
BitPayExceptionProvider::throwGenericExceptionWithMessage(
'failed to build configuration : ' . $e->getMessage()
@@ -71,7 +79,7 @@ private function init(): void
/**
* Fetch the supported currencies.
*
- * @return array A list of BitPay Invoice objects.
+ * @return array A list of BitPay Invoice objects.
* @throws BitPayGenericException
* @throws BitPayApiException
*/
diff --git a/src/BitPaySDK/Util/RESTcli/RESTcli.php b/src/BitPaySDK/Util/RESTcli/RESTcli.php
index f953ba45..2b1d9f57 100644
--- a/src/BitPaySDK/Util/RESTcli/RESTcli.php
+++ b/src/BitPaySDK/Util/RESTcli/RESTcli.php
@@ -31,24 +31,34 @@ class RESTcli
* @var GuzzleHttpClient
*/
protected GuzzleHttpClient $client;
+
/**
* @var string
*/
protected string $baseUrl;
+
/**
* @var PrivateKey
*/
protected PrivateKey $ecKey;
+
/**
* @var string
*/
protected string $identity;
+ /**
+ * Value for the X-BitPay-Platform-Info header.
+ * @var string
+ */
+ protected string $platformInfo;
+
/**
* @var string
*/
protected string $proxy;
+
/**
* RESTcli constructor.
* @param string $environment
@@ -56,11 +66,12 @@ class RESTcli
* @param string|null $proxy
* @throws BitPayApiException
*/
- public function __construct(string $environment, PrivateKey $ecKey, ?string $proxy = null)
+ public function __construct(string $environment, PrivateKey $ecKey, ?string $proxy = null, ?string $platformInfo)
{
$this->ecKey = $ecKey;
$this->baseUrl = $environment == Env::TEST ? Env::TEST_URL : Env::PROD_URL;
$this->proxy = $proxy !== null ? trim($proxy) : '';
+ $this->platformInfo = $platformInfo !== null ? trim($platformInfo) : '';
$this->init();
}
@@ -89,6 +100,10 @@ public function init(): void
$config['proxy'] = $this->proxy;
}
+ if ($this->platformInfo !== '') {
+ $config['defaults']['headers']['x-bitpay-platform-info'] = $this->platformInfo;
+ }
+
$this->client = new GuzzleHttpClient($config);
} catch (Exception $e) {
BitPayExceptionProvider::throwApiExceptionWithMessage($e->getMessage());
@@ -128,6 +143,10 @@ public function post($uri, array $formData = [], bool $signatureRequired = true)
$headers['x-identity'] = $this->identity;
}
+ if ($this->platformInfo !== '') {
+ $headers['x-bitpay-platform-info'] = $this->platformInfo;
+ }
+
$method = "POST";
LoggerProvider::getLogger()->logRequest($method, $fullURL, $jsonRequestData);
@@ -190,6 +209,10 @@ public function get($uri, array $parameters = null, bool $signatureRequired = tr
$headers['x-identity'] = $this->identity;
}
+ if ($this->platformInfo !== '') {
+ $headers['x-bitpay-platform-info'] = $this->platformInfo;
+ }
+
$method = 'GET';
LoggerProvider::getLogger()->logRequest($method, $fullURL, null);
@@ -247,6 +270,10 @@ public function delete($uri, array $parameters = null): string
BitPayExceptionProvider::throwGenericExceptionWithMessage('Wrong ecKey. ' . $e->getMessage());
}
+ if ($this->platformInfo !== '') {
+ $headers['x-bitpay-platform-info'] = $this->platformInfo;
+ }
+
$method = 'DELETE';
$jsonRequestData = json_encode($parameters, JSON_THROW_ON_ERROR);
@@ -305,6 +332,10 @@ public function update($uri, array $formData = []): string
BitPayExceptionProvider::throwGenericExceptionWithMessage('Wrong ecKey. ' . $e->getMessage());
}
+ if ($this->platformInfo !== '') {
+ $headers['x-bitpay-platform-info'] = $this->platformInfo;
+ }
+
$method = 'PUT';
LoggerProvider::getLogger()->logRequest($method, $fullURL, $jsonRequestData);
diff --git a/test/unit/BitPaySDK/ClientTest.php b/test/unit/BitPaySDK/ClientTest.php
index f7f2777b..ab2ffaa4 100644
--- a/test/unit/BitPaySDK/ClientTest.php
+++ b/test/unit/BitPaySDK/ClientTest.php
@@ -110,6 +110,24 @@ public function testWithData()
self::assertInstanceOf(Client::class, $result);
}
+ /**
+ * @throws BitPayApiException
+ */
+ public function testWithDataAndXBitPayPlatformInfoHeader()
+ {
+ $tokens = $this->createMock(Tokens::class);
+ $result = $this->getTestedClassInstance()::createWithData(
+ Env::TEST,
+ __DIR__ . '/bitpay_private_test.key',
+ $tokens,
+ 'YourMasterPassword',
+ null,
+ 'MyPlatform_v1.0.0'
+ );
+
+ self::assertInstanceOf(Client::class, $result);
+ }
+
public function testWithDataException()
{
$instance = $this->getTestedClassInstance();
@@ -135,6 +153,20 @@ public function testWithFileJsonConfig(): Client
return $result;
}
+ /**
+ * @throws BitPayApiException
+ */
+ public function testWithFileJsonConfigAndXBitPayPlatformInfoHeader(): Client
+ {
+ $instance = $this->getTestedClassInstance();
+ $result = $instance::createWithFile(
+ __DIR__ . '/BitPay.config-unit.json',
+ 'MyPlatform_v1.0.0'
+ );
+ self::assertInstanceOf(Client::class, $result);
+ return $result;
+ }
+
/**
* @throws BitPayGenericException
*/
@@ -145,6 +177,19 @@ public function testWithFileYmlConfig()
self::assertInstanceOf(Client::class, $result);
}
+ /**
+ * @throws BitPayGenericException
+ */
+ public function testWithFileYmlConfigAndXBitPayPlatformInfoHeader()
+ {
+ $instance = $this->getTestedClassInstance();
+ $result = $instance::createWithFile(
+ __DIR__ . '/BitPay.config-unit.yml',
+ 'MyPlatform_v1.0.0'
+ );
+ self::assertInstanceOf(Client::class, $result);
+ }
+
public function testWithFileException()
{
$instance = $this->getTestedClassInstance();