1. Go to this page and download the library: Download comfino/php-api-client library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
comfino / php-api-client example snippets
use Comfino\Api\Client;
use Nyholm\Psr7\Factory\Psr17Factory;
use Sunrise\Http\Client\Curl\Client as CurlClient;
$psr17Factory = new Psr17Factory();
$client = new Client(
httpClient: new CurlClient($psr17Factory),
requestFactory: $psr17Factory,
streamFactory: $psr17Factory,
apiKey: 'your-api-key', // Private - keep server-side only.
);
$client->enableSandboxMode(); // Omit or call disableSandboxMode() for production.
// Submit a loan application.
$response = $client->createOrder($order); // $order implements OrderInterface
header('Location: ' . $response->applicationUrl);
// Override the default user agent.
$client->setCustomUserAgent('my-plugin/1.0.0');
// Set the API language (ISO 639-1) and currency (ISO 4217).
$client->setApiLanguage('pl');
$client->setApiCurrency('PLN');
// Add a custom HTTP header (e.g., for platform identification).
$client->addCustomHeader('X-Shop-Platform', 'WooCommerce/8.5');
// Use a different API endpoint (e.g., staging).
$client->setCustomApiBaseUrl('https://staging-api.example.com');
use Comfino\Api\Dto\Payment\LoanQueryCriteria;
use Comfino\Enum\LoanType;
use Comfino\Enum\ProductListType;
// List all products for a 1 500 PLN cart (amounts in grosz).
$criteria = new LoanQueryCriteria(loanAmount: 150000);
$response = $client->getFinancialProducts($criteria);
foreach ($response->financialProducts as $product) {
echo $product->name . ' - ' . $product->instalmentAmount . " grosz/month\n";
}
// Filter by product type.
$criteria = new LoanQueryCriteria(
loanAmount: 150000,
loanType: LoanType::INSTALLMENTS_ZERO_PERCENT
);
// Get detailed information about a specific financial product (e.g., for a product detail page).
$details = $client->getFinancialProductDetails($criteria, $cart); // $cart implements CartInterface
// Get available product types configured for this shop account (for promotional banner widget at shop product page).
$types = $client->getProductTypes(ProductListType::WIDGET);
// Create a loan application - $order implements Comfino\Shop\Order\OrderInterface.
$createResponse = $client->createOrder($order);
$applicationUrl = $createResponse->applicationUrl;
// Validate an order without submitting it.
$validateResponse = $client->validateOrder($order);
// Retrieve order status.
$orderDetails = $client->getOrder('ORDER-123');
// Cancel an order.
$client->cancelOrder('ORDER-123');
// Check that the API key belongs to an active account.
$isActive = $client->isShopAccountActive();
// Retrieve the widget key (public) for use in frontend scripts (e.g., promotional banner).
$widgetKey = $client->getWidgetKey();
// List available widget types.
$widgetTypes = $client->getWidgetTypes();
use Comfino\Api\Dto\Plugin\ShopPluginError;
// Report a plugin error for remote diagnostics (e.g., from an exception handler).
$client->sendLoggedError(new ShopPluginError(
host: 'myshop.example.com',
platform: 'ExampleEcommercePlatform',
environment: ['php' => PHP_VERSION, 'plugin' => '2.0.0'],
errorCode: 'API_ERROR',
errorMessage: 'Unexpected API response.',
stackTrace: $exception->getTraceAsString(),
));
// Notify Comfino when the payment plugin is uninstalled.
$client->notifyPluginRemoval();
// Notify Comfino of an abandoned cart event.
$client->notifyAbandonedCart('checkout_abandoned');
use Comfino\Auth\WebhookSignatureVerifier;
$verifier = new WebhookSignatureVerifier();
$signature = $_SERVER['HTTP_CR_SIGNATURE'] ?? '';
$payload = file_get_contents('php://input');
if (!$verifier->verify($signature, 'your-api-key', $payload)) {
http_response_code(401);
exit;
}
// Process verified payload.
$data = json_decode($payload, true);
use Comfino\Auth\PaywallAuthKeyGenerator;
$generator = new PaywallAuthKeyGenerator();
// $widgetKey - public, obtained via $client->getWidgetKey() and stored in shop config
// $apiKey - private, never sent to the browser
$authKey = $generator->generateAuthKey(widgetKey: $widgetKey, apiKey: $apiKey);
// Pass only $authKey to the frontend widget initialization script served from the Comfino CDN (part of the official Comfino Web Frontend SDK).
use Comfino\Api\Client;
use Comfino\Api\Retry\ExponentialBackoffRetryPolicy;
use Comfino\Api\Retry\RetryExecutor;
use Comfino\Api\Retry\TimeoutConfig;
$retryPolicy = new ExponentialBackoffRetryPolicy(
timeoutConfig: new TimeoutConfig(connectionTimeout: 5, transferTimeout: 15),
maxAttempts: 3,
);
$client = new Client(
httpClient: $httpClient,
requestFactory: $requestFactory,
streamFactory: $streamFactory,
apiKey: 'your-api-key',
retryExecutor: new RetryExecutor($retryPolicy),
);
use Comfino\Api\Exception\AuthorizationError;
use Comfino\Api\Exception\RequestValidationError;
use Comfino\Api\Exception\ServiceUnavailable;
try {
$response = $client->createOrder($order);
} catch (RequestValidationError $e) {
// $e->errors contains field-level validation messages from the API.
} catch (AuthorizationError $e) {
// Invalid or missing API key.
} catch (ServiceUnavailable $e) {
// Comfino API is temporarily unavailable.
}
bash
composer
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.