CoinGate PHP library for API v2
The CoinGate PHP library provides convenient access to the CoinGate API from applications written in the PHP language., (*1)
Requirements
PHP 7.3.0 and later., (*2)
Composer
You can install library via Composer. Run the following command:, (*3)
composer require coingate/coingate-php
Manual Installation
If you do not wish to use Composer, you can download the latest release. Then, to use the library, include the init.php
file., (*4)
require_once('/path/to/coingate-php/init.php');
Dependencies
The library require the following extensions in order to work properly:, (*5)
-
curl
, although you can use your own non-cURL client if you prefer
json
If you use Composer, these dependencies should be handled automatically. If you install manually, you'll want to make sure that these extensions are available., (*6)
Getting Started
You can sign up for a CoinGate account at https://coingate.com for production and https://sandbox.coingate.com for testing (sandbox)., (*7)
Please note, that for Sandbox you must generate separate API credentials on https://sandbox.coingate.com. API credentials generated on https://coingate.com will not work for Sandbox mode., (*8)
Usage of CoinGate PHP library looks like:, (*9)
$client = new \CoinGate\Client('YOUR_API_TOKEN');
In order, to use sandbox mode, you need to set second parameter to true
., (*10)
$client = new \CoinGate\Client('YOUR_API_TOKEN', true);
If you plan to use Public API endpoints only, authentication is not required., (*11)
$client = new CoinGate\Client();
// if needed you can set configuration parameters later
$client->setApiKey('YOUR_API_TOKEN');
$client->setEnvironment('sandbox');
Full documentation of the CoinGate API can be found here, (*12)
Example
An example of an app using this library can be found here, (*13)
Payment Gateway API
Create Order
Create order at CoinGate and redirect shopper to invoice (payment_url)., (*14)
$params = [
'order_id' => 'YOUR-CUSTOM-ORDER-ID-115',
'price_amount' => 1050.99,
'price_currency' => 'USD',
'receive_currency' => 'EUR',
'callback_url' => 'https://example.com/payments?token=6tCENGUYI62ojkuzDPX7Jg',
'cancel_url' => 'https://example.com/cart',
'success_url' => 'https://example.com/account/orders',
'title' => 'Order #112',
'description' => 'Apple Iphone 13'
];
try {
$order = $client->order->create($params);
} catch (\CoinGate\Exception\ApiErrorException $e) {
// something went wrong...
// var_dump($e->getErrorDetails());
}
echo $order->id;
Checkout
Placing created order with pre-selected payment currency (BTC, LTC, ETH, etc). Display payment_address and pay_amount for shopper or redirect to payment_url. Can be used to white-label invoices., (*15)
$checkout = $client->order->checkout(7294, [
'pay_currency' => 'BTC'
]);
Get Order
After creating an order, you will get an ORDER ID. This ID will be used for GET ORDER requests., (*16)
$order = $client->order->get(7294);
List Orders
Retrieving information of all placed orders., (*17)
$orders = $client->order->list([
'created_at' => [
'from' => '2022-01-25'
]
]);
Public API
Get Exchange Rate
Current exchange rate for any two currencies, fiat or crypto. This endpoint is public, authentication is not required., (*18)
$client->getExchangeRate('BTC', 'EUR');
List Exchange Rates
Current CoinGate exchange rates for Merchants and Traders. This endpoint is public, authentication is not required., (*19)
$client->listExchangeRates();
Ping
A health check endpoint for CoinGate API. This endpoint is public, authentication is not required., (*20)
$client->ping();
IP Addresses
Get IP addresses of CoinGate servers, (*21)
$client->getIPAddresses();
Currencies
$client->getCurrencies();
// Crypto + Native + Merchant Pay
$client->getCheckoutCurrencies();
// get Merchant Pay currencies only
$client->getMerchantPayCurrencies();
// get Merchant Receive currencies only
$client->getMerchantPayoutCurrencies();
$client->getPlatforms();
Custom Request Timeout
To modify request timeouts (connect or total, in seconds) you'll need to tell the API client to use a CurlClient other than its default. You'll set the timeouts in that CurlClient., (*22)
// set up your tweaked Curl client
$curl = new \CoinGate\HttpClient\CurlClient();
$curl->setTimeout(10);
$curl->setConnectTimeout(5);
// tell CoinGate Library to use the tweaked Curl client
\CoinGate\Client::setHttpClient($curl);
// use the CoinGate API client as you normally would
Test API Connection
$result = \CoinGate\Client::testConnection('YOUR_API_TOKEN');
In order, to test API connection on sandbox mode, you need to set second parameter to true
., (*23)
$result = \CoinGate\Client::testConnection('YOUR_API_TOKEN', true);
Attention plugin developers
Are you writing a plugin that integrates CoinGate and embeds our library? Then please use the setAppInfo function to identify your plugin. For example:, (*24)
\CoinGate\Client::setAppInfo("MyAwesomePlugin", "1.0.0");
The method should be called once, before any request is sent to the API. The second parameter is optional., (*25)