PHP code example of mfadul24 / kount-commerce
1. Go to this page and download the library: Download mfadul24/kount-commerce 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/ */
mfadul24 / kount-commerce example snippets
use Kount\KountCommerceApi;
use Kount\Models\Components\OrderPostBody;
use Kount\Models\Components\Item;
$kount = KountCommerceApi::builder()
->setOAuth('your-client-id', 'your-client-secret')
->build();
$result = $kount->orders->evaluate(
OrderPostBody::for('ORDER-4711')
->withDeviceSession($deviceSessionId) // unique for >= 30 days
->addItem(new Item(name: 'Widget', quantity: 2)),
riskInquiry: true,
);
$decision = $result->order?->riskInquiry?->decision; // enum: Approve | Decline | Review
$omniscore = $result->order?->riskInquiry?->omniscore; // float 0-99
$kount = KountCommerceApi::builder()
->setApiKey('bXktY2xpZW50LWlkOm15LWNsaWVudC1zZWNyZXQ=')
->build();
$kount = KountCommerceApi::builder()
->setApiKey($apiKey, tokenCache: new FilesystemAdapter())
->useSandbox()
->build();
use Kount\Auth\ClientCredentialsTokenProvider;
ClientCredentialsTokenProvider::fromApiKey($apiKey, $tokenUrl); // pre-encoded key
ClientCredentialsTokenProvider::fromClientCredentials($id, $secret, $tokenUrl); // id + secret pair
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
$kount = KountCommerceApi::builder()
->setOAuth('your-client-id', 'your-client-secret', tokenCache: new FilesystemAdapter())
->build();
use Symfony\Component\HttpClient\Psr18Client;
use Symfony\Component\HttpClient\HttpClient;
$kount = KountCommerceApi::builder()
->setClient(new Psr18Client(HttpClient::create(['timeout' => 10])))
->setOAuth('your-client-id', 'your-client-secret')
->build();
use Kount\Http\SensitiveDataRedactor;
use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
final class TracingClient implements ClientInterface
{
public function __construct(
private readonly ClientInterface $inner,
private readonly YourTraceRecorder $recorder,
private readonly SensitiveDataRedactor $redactor = new SensitiveDataRedactor(),
) {}
public function sendRequest(RequestInterface $request): ResponseInterface
{
$requestBody = (string) $request->getBody(); // (string) rewinds a seekable stream
$start = microtime(true);
$response = $this->inner->sendRequest($request);
$durationSeconds = microtime(true) - $start;
$this->recorder->record(
method: $request->getMethod(),
uri: (string) $request->getUri(),
requestHeaders: $this->redactor->redactHeaders($request->getHeaders()),
requestBody: $this->redactor->redactBody($requestBody),
statusCode: $response->getStatusCode(),
responseBody: $this->redactor->redactBody((string) $response->getBody()),
durationSeconds: $durationSeconds,
);
return $response;
}
}
$kount = KountCommerceApi::builder()
->setClient(new TracingClient($inner, $recorder))
->setOAuth('your-client-id', 'your-client-secret')
->build();
$kount = KountCommerceApi::builder()
->setOAuth('sandbox-client-id', 'sandbox-client-secret')
->useSandbox()
->build();
use Kount\Exception\ApiException;
use Kount\Exception\KountException;
try {
$result = $kount->orders->evaluate($body);
} catch (ApiException $e) {
$log->warning('Kount rejected the call', [
'status' => $e->statusCode,
'correlationId' => $e->errorDetails?->correlationId,
'rpcMessage' => $e->rpcStatus?->message,
]);
} catch (KountException $e) {
// transport / auth / decoding problems
}
use Kount\Legacy\Inquiry;
use Kount\Legacy\RisClient;
$ris = new RisClient($kount);
$response = $ris->process(
(new Inquiry())
->setSessionId($deviceSessionId)
->setOrderNumber('ORDER-4711')
->setEmail('[email protected] ')
->setTotal(1999) // cents, as in legacy RIS
->setCurrency('EUR'),
);
$response->getDecision(); // 'A' | 'D' | 'R'
$response->getOmniscore(); // float