إنتقل إلى المحتوى الرئيسي

مرجع API لـ PHP SDK

تسرد هذه الصفحة الأصناف والدوال العامة في الحزمة orcarail/orcarail-php (النطاق OrcaRail\). للتثبيت والإعداد والأمثلة، راجع دليل PHP SDK.

العميل​

new OrcaRail\OrcaRailClient(array $config)​

ينشئ عميلًا. تستخدم كل الاستدعاءات المصادَق عليها مصادقة HTTP Basic بمفتاح API وسرّه.

مفاتيح الإعداد:

المفتاحالنوعالافتراضيالوصف
api_keystring—مفتاح API في OrcaRail (مثل ak_live_xxx). مطلوب ما لم يُقدَّم http_client.
api_secretstring—سر API في OrcaRail (مثل sk_live_xxx). مطلوب ما لم يُقدَّم http_client.
base_urlstringhttps://api.orcarail.com/api/v1الرابط الأساسي لـ API بالإصدار. لاستخدام إصدار آخر وجّهه إلى رابطه الأساسي.
timeoutint30000المهلة الإجمالية للطلب بالمللي ثانية.
connect_timeoutint10000مهلة الاتصال بالمللي ثانية.
http_clientOrcaRail\HttpClient\ClientInterfaceOrcaRail\HttpClient\CurlClientوسيلة نقل مخصصة، للاختبارات أساسًا. تحل محل عميل cURL المدمج.

يرمي InvalidArgumentException عندما لا ينفّذ http_client الواجهة ClientInterface، أو عند غياب بيانات الاعتماد لوسيلة النقل الافتراضية، أو عندما تكون مهلة ما غير موجبة.

خصائص الخدمات (تُنشأ عند أول وصول ثم يُعاد استخدامها):

الخاصيةالصنف
paymentIntentsOrcaRail\Service\PaymentIntentService
subscriptionsOrcaRail\Service\SubscriptionService
payOrcaRail\Service\PayService
ratesOrcaRail\Service\RateService
productsOrcaRail\Service\ProductService
pricesOrcaRail\Service\PriceService

يرمي الوصول إلى أي خاصية أخرى InvalidArgumentException.

use OrcaRail\OrcaRailClient;

$orcarail = new OrcaRailClient([
'api_key' => getenv('ORCARAIL_API_KEY'),
'api_secret' => getenv('ORCARAIL_API_SECRET'),
]);

الخدمات​

معاملات الطلب مصفوفات ترابطية بأسماء الحقول نفسها في REST API. والاستجابات نسخ من OrcaRailObject ما لم يُذكر خلاف ذلك.

$orcarail->paymentIntents​

راجع نظرة عامة على Payment Intents ومرجع REST.

الدالةالوصف
create(array $params)تنشئ payment intent. تتطلب إما price_id أو كل من amount وcurrency وtokenId وnetworkId. القيمة الافتراضية لـ payment_method_types هي ['crypto'].
retrieve(string $id)تحصل على payment intent حسب UUID.
confirm(string $id, array $params)التأكيد والحصول على رابط صفحة الدفع المستضافة. المعاملات: client_secret وreturn_url. ترسل المصادقة بمفتاح API إضافةً إلى الـ client secret.
complete(string $id)تعلّم الـ intent بأنه قيد المعالجة عند وصول العميل إلى رابط العودة. تطلق payment_intent.processing.
update(string $id, array $params)تحدّث amount أو currency أو tokenId أو networkId أو price_id أو metadata أو الروابط أو expires_at أو withdrawal_addresses.
cancel(string $id)تلغي payment intent.

معاملات الإنشاء: price_id وamount وcurrency وtokenId وnetworkId وpayment_method_types وreturn_url وcancel_url وdescription وmetadata وexpires_at وwithdrawal_addresses (مفهرسة حسب عائلة الشبكة، مثل ['evm' => '0x…']).

يؤدي الجمع بين price_id وأي من amount أو currency أو tokenId أو networkId، وكذلك حذف الشكلين معًا، إلى رمي InvalidArgumentException.

الشبكات والرموز: لا توفر الـ SDK دوال لسردها. استخدم GET المدفوعات: سرد الشبكات وGET المدفوعات: سرد الرموز حسب الشبكة، ثم مرّر معرّفات UUID المُعادة كـ networkId وtokenId.

$orcarail->subscriptions​

تستنتج مسارات المجموعة المؤسسة من مفتاح API المصادَق عليه؛ ومسارات العناصر في المستوى الأعلى حسب معرّف الاشتراك.

الدالةالوصف
create(array $params)تنشئ اشتراكًا. تتطلب إما price_id أو كل من amount وcurrency وtoken_id وnetwork_id وinterval.
retrieve(string $id)تحصل على اشتراك حسب المعرّف.
update(string $id, array $params)تحدّث اشتراكًا (مثل cancel_at_period_end وpause_collection وmetadata).
cancel(string $id, array $params = [])تلغي اشتراكًا. cancellation_details اختياري (comment وfeedback). لا ترسل جسمًا عندما تكون $params فارغة.
resume(string $id)تستأنف اشتراكًا متوقفًا.
all(array $params = [])تسرد الاشتراكات. تعيد غلافًا يحتوي data وhas_more. اسمها all() لأن list كلمة محجوزة في PHP.
listPaymentLinks(string $id, array $params = [])تسرد روابط الدفع لاشتراك. تعيد غلافًا يحتوي data وhas_more.

معاملات السرد: status وcollection_method وlimit وstarting_after وending_before ومرشحات النطاق created وcurrent_period_start وcurrent_period_end. مرشحات النطاق مصفوفات متداخلة تُرمَّز كمعاملات استعلام بأقواس، لذا تُرسل ['current_period_end' => ['lte' => $iso]] بصيغة current_period_end[lte]=…. وتُرمَّز القيم المنطقية كـ true/false.

نقاط نهاية الخصم التلقائي الموجهة للدافع غير موجودة عن قصد؛ راجع الخصم التلقائي.

$orcarail->pay​

الدفع حسب slug رابط الدفع. راجع API الدفع.

الدالةالوصف
retrieve(string $slug)تحصل على الـ payment intent المرتبط بـ slug رابط دفع.
get(string $slug)اسم بديل لـ retrieve().
cancel(string $slug)الإلغاء حسب الـ slug.

$orcarail->rates​

عروض أسعار العملات الورقية والعملات المدعومة. راجع API الأسعار.

الدالةالوصف
getFiatQuote(array $params)عرض سعر من العملة الورقية إلى USD/USDC. المعاملات: amount وcurrency. تعيد كائنًا يحتوي amountUsd وamountUsdc وsourceAmount وsourceCurrency.
getCurrencies(array $options = [])تسرد العملات الورقية. الخيار: active (bool). تعيد list<OrcaRailObject>.

$orcarail->products​

منتجات الكتالوج المرتبطة بالمؤسسة. تأخذ كل دالة معرّف UUID للمؤسسة أولًا.

الدالةالوصف
all(string $organizationId)تسرد المنتجات. تفك غلاف القائمة؛ وتعيد list<OrcaRailObject>.
create(string $organizationId, array $params)تنشئ منتجًا (name وdescription وactive وmetadata).
update(string $organizationId, string $productId, array $params)تحدّث منتجًا.
delete(string $organizationId, string $productId)تحذف (تعطّل) منتجًا.

$orcarail->prices​

أسعار الكتالوج المرتبطة بالمؤسسة، إضافةً إلى أدوات مساعدة للأسعار لمرة واحدة.

الدالةالوصف
all(string $organizationId, array $params = [])تسرد الأسعار (مثل ['active' => true, 'recurring' => true]). تعيد list<OrcaRailObject>.
create(string $organizationId, array $params)تنشئ سعرًا (product وnickname وunit_amount_decimal وcurrency وtoken_id وnetwork_id وrecurring وactive وmetadata).
update(string $organizationId, string $priceId, array $params)تحدّث سعرًا.
deactivate(string $organizationId, string $priceId)تعطّل سعرًا.
listActiveRecurring(string $organizationId)اختصار للأسعار المتكررة النشطة.
findOneTimeByAmount(string $organizationId, array $params)تبحث عن سعر نشط لمرة واحدة يطابق amount وcurrencyCode وproductName. تعيد null إن لم يوجد.
ensureOneTime(string $organizationId, array $params)تبحث عن سعر لمرة واحدة أو تنشئه، وتنشئ المنتج عند الحاجة. المعاملات: amount وcurrencyCode وtokenId وnetworkId وproductName، واختياريًا productDescription وproductMetadata.

تُطبَّع المبالغ إلى منزلتين عشريتين؛ ويؤدي المبلغ غير الرقمي أو غير الموجب إلى رمي InvalidArgumentException. ويؤدي غلاف كتالوج مشوّه إلى رمي UnexpectedValueException.

الـ webhooks​

الأداتان المساعدتان ثابتتان (static) ولا تحتاجان إلى عميل. مرّر دائمًا جسم الطلب دون تعديل.

OrcaRail\Webhook​

الدالةالوصف
Webhook::constructEvent(string $payload, string $signature, string $secret)تتحقق من التوقيع وتحلل الجسم إلى OrcaRailObject. ترمي SignatureVerificationException عند توقيع غير صالح أو JSON غير صالح أو جسم ليس كائنًا.

OrcaRail\WebhookSignature​

الدالةالوصف
WebhookSignature::verifyHeader(string $payload, string $signature, string $secret)تعيد true عندما تساوي ترويسة x-webhook-signature توقيع HMAC-SHA256 للجسم الخام، مع المقارنة عبر hash_equals(). تعيد القيم الفارغة والتوقيعات غير الست عشرية false.
WebhookSignature::assertValid(string $payload, string $signature, string $secret)التحقق نفسه، لكنها ترمي SignatureVerificationException بدلًا من إعادة false.

راجع الـ webhooks والتوقيعات.

OrcaRail\OrcaRailObject​

كائن استجابة متوافق مع الإصدارات المستقبلية. تصبح كائنات JSON المتداخلة OrcaRailObject؛ وتبقى مصفوفات JSON قوائم PHP. تُحفظ الحقول غير المعروفة، فلا تتعطل الاستجابات عندما تضيف API حقولًا.

العضوالوصف
__get(string $name)الوصول بالخاصية. يعيد null للمفاتيح المفقودة.
ArrayAccessالقراءة والكتابة وisset() وunset() عبر $object['field']. يجب أن تكون المفاتيح سلاسل نصية.
IteratorAggregate وCountableforeach على الحقول وcount($object).
toArray()تحويل متكرر إلى مصفوفة عادية.
jsonSerialize()يجعل json_encode($object) يعيد البنية نفسها.
OrcaRailObject::convert(mixed $value)دالة مساعدة ثابتة تُستخدم لملء JSON المفكوك.

التعدادات (Enums)​

تعدادات نصية مدعومة ضمن OrcaRail\Enum\. قارنها بـ $enum->value عند قراءة سلاسل API.

التعدادالحالات
PaymentIntentStatusrequires_payment_method وrequires_confirmation وprocessing وcompleted وcanceled
PaymentStatuspending وpartial_confirmed وconfirmed وcanceled وexpired وcompleted وwithdrawn
SubscriptionStatustrialing وactive وpast_due وcanceled وpaused وcompleted
WebhookEventTypepayment_intent.completed وpayment_intent.processing وpayment_intent.canceled وpayment_intent.requires_payment_method وpayment_intent.requires_confirmation وsubscription.created وsubscription.updated وsubscription.canceled وsubscription.paused وsubscription.resumed وsubscription.trial_will_end وsubscription.payment_link.created وsubscription.payment_link.paid وsubscription.payment_link.payment_failed وsubscription.past_due وsubscription.completed

تعامل بسلاسة مع أنواع الأحداث غير المعروفة؛ فقد تُضاف أحداث جديدة.

الاستثناءات​

ترث كل استثناءات الـ SDK من OrcaRail\Exception\OrcaRailException التي ترث من RuntimeException.

الصنفمتى يُرمى
OrcaRailExceptionالصنف الأساسي لكل استثناءات الـ SDK.
ApiExceptionأعادت API حالة غير 2xx. الخصائص: statusCode وtype وdetails وrequest.
AuthenticationException401 — مفتاح API أو سرّه غير صالح. يرث من ApiException مع type بقيمة authentication_error.
TransportExceptionفشل الشبكة، أو انتهاء المهلة، أو طلب لا يمكن ترميزه، أو استجابة لا يمكن فكها. الخاصية: request.
SignatureVerificationExceptionتوقيع webhook غير صالح أو جسم ليس كائن JSON. الخاصية: signature.

تشير InvalidArgumentException وUnexpectedValueException (المدمجتان في PHP) إلى سوء استخدام محلي: تركيبات معاملات غير صالحة، أو إعداد غير صالح، أو أسماء خدمات غير معروفة، أو شكل استجابة غير متوقع.

وسيلة نقل HTTP​

الصنف / الواجهةالوصف
OrcaRail\HttpClient\ClientInterfacerequest(string $method, string $path, ?array $body = null, bool $requireAuth = true): mixed. نفّذها لتبديل وسيلة النقل في الاختبارات.
OrcaRail\HttpClient\CurlClientوسيلة نقل cURL الافتراضية. ترسل Accept/Content-Type: application/json، وBasic auth عند الحاجة، وUser-Agent: orcarail-php/<version>. تُعاد الأجسام غير JSON كسلاسل نصية، والأجسام الفارغة كـ null.

CurlClient::DEFAULT_BASE_URL هو https://api.orcarail.com/api/v1. تُرمَّز أجزاء المسار بترميز URL، وسلاسل الاستعلام وفق RFC 3986.

أصناف أخرى​

الصنفالوصف
OrcaRail\VersionVersion::VERSION — إصدار الحزمة المستخدم في ترويسة User-Agent.
OrcaRail\CatalogPlanMetadataتطبّع parse() البيانات الوصفية لخطط الكتالوج (مصفوفة أو كائن) إلى OrcaRailObject.

انظر أيضًا​