Back to SDKsView on GitHub
PHP SDK
PHP SDK with Laravel integration, Guzzle client, and PSR-7 compatibility.
composer require coverkit/coverkit-phpInstallation
composer require coverkit/coverkit-phpQuick Start
<?php
require_once 'vendor/autoload.php';
use CoverKit\CoverKit;
use CoverKit\Quote;
use CoverKit\Policy;
// Initialize the client
$coverkit = new CoverKit([
'api_key' => getenv('COVERKIT_API_KEY'),
'environment' => 'production', // or 'sandbox'
]);
// Create a quote
$quote = $coverkit->quotes->create([
'product' => 'shipping_protection',
'coverage' => [
'item_value' => 15000, // $150.00 in cents
'shipping_method' => 'ground',
],
'customer' => [
'email' => 'customer@example.com',
],
]);
echo "Quote ID: " . $quote->id . "\n";
echo "Premium: $" . ($quote->premium / 100) . "\n";
// Bind the quote to create a policy
$policy = $coverkit->policies->create([
'quote_id' => $quote->id,
'payment' => [
'method' => 'stripe',
'token' => 'tok_visa',
],
]);
echo "Policy ID: " . $policy->id . "\n";
echo "Status: " . $policy->status . "\n"; // "active"Laravel Integration
config/services.php
'coverkit' => [
'api_key' => env('COVERKIT_API_KEY'),
'environment' => env('COVERKIT_ENVIRONMENT', 'sandbox'),
],Using the Facade
use CoverKit\Facades\CoverKit;
class QuoteController extends Controller
{
public function store(Request $request)
{
$quote = CoverKit::quotes()->create([
'product' => 'shipping_protection',
'coverage' => $request->coverage,
'customer' => $request->customer,
]);
return response()->json([
'quote_id' => $quote->id,
'premium' => $quote->premium,
]);
}
}Features
Laravel Integration
Service provider, facade, and config publishing.
Guzzle Client
Built on Guzzle for reliable HTTP requests.
PSR-7 Compatible
Standard HTTP message interfaces.
Webhook Handlers
Middleware for webhook signature verification.
Webhook Handling
<?php
use CoverKit\Webhook;
use CoverKit\Exception\SignatureVerificationException;
// routes/api.php
Route::post('/webhooks/coverkit', function (Request $request) {
$payload = $request->getContent();
$signature = $request->header('Coverkit-Signature');
try {
$event = Webhook::constructEvent(
$payload,
$signature,
config('services.coverkit.webhook_secret')
);
} catch (SignatureVerificationException $e) {
return response('Invalid signature', 400);
}
switch ($event->type) {
case 'policy.created':
// Handle policy created
break;
case 'claim.submitted':
// Handle claim submitted
break;
}
return response('OK', 200);
});