orcarail / orcarail-php
Official PHP SDK for the OrcaRail API
v1.1.0
2026-09-29 13:17 UTC
Requires
- php: ^8.1
- ext-curl: *
- ext-json: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/phpstan: ^1.12 || ^2.0
- phpunit/phpunit: ^10.5 || ^11.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
The official PHP 8.1+ client for the OrcaRail API. Tested on PHP 8.1–8.4.
composer require orcarail/orcarail-php
use OrcaRail\OrcaRailClient; $orcarail = new OrcaRailClient([ 'api_key' => 'pk_live_...', 'api_secret' => 'sk_live_...', ]); $intent = $orcarail->paymentIntents->create([ 'price_id' => 'price_...', 'return_url' => 'https://example.com/return', ]); echo $intent->id;
Services are exposed lazily as paymentIntents, subscriptions, pay,
rates, products, and prices. API responses are OrcaRailObject values
that support both property and array access.
Webhook events must be constructed from the unmodified request body:
$event = \OrcaRail\Webhook::constructEvent( file_get_contents('php://input'), $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '', 'sk_live_...', );
Live vs sandbox
Sandbox organizations (created with Go to sandbox in the dashboard) are testnet-only and issue ak_test_ / sk_test_ keys. Live organizations use ak_live_ / sk_live_.
// Sandbox only: complete a payment without a wallet (fires the usual webhooks) $orcarail->paymentIntents->simulate($intent->id); // Webhook events carry livemode: never fulfill real orders from sandbox events if ($event->livemode === false) { // test event from a sandbox organization }
Documentation
Development
composer install
composer test
composer analyse
composer cs-check