Saltar al contenido principal

Referencia de la API del SDK de PHP

Esta página lista las clases y métodos públicos del paquete orcarail/orcarail-php (namespace OrcaRail\). Para la instalación, la configuración y los ejemplos, consulta la guía del SDK de PHP.

Cliente​

new OrcaRail\OrcaRailClient(array $config)​

Crea un cliente. Todas las llamadas autenticadas usan HTTP Basic Auth con tu clave y tu secreto de API.

Claves de configuración:

ClaveTipoPor defectoDescripción
api_keystring—Clave de API de OrcaRail (por ejemplo ak_live_xxx). Obligatoria salvo que se indique http_client.
api_secretstring—Secreto de API de OrcaRail (por ejemplo sk_live_xxx). Obligatorio salvo que se indique http_client.
base_urlstringhttps://api.orcarail.com/api/v1URL base versionada de la API. Para usar otra versión, apunta a su URL base.
timeoutint30000Tiempo de espera total de la petición en milisegundos.
connect_timeoutint10000Tiempo de espera de la conexión en milisegundos.
http_clientOrcaRail\HttpClient\ClientInterfaceOrcaRail\HttpClient\CurlClientTransporte personalizado, sobre todo para tests. Sustituye al cliente cURL integrado.

Lanza InvalidArgumentException cuando http_client no implementa ClientInterface, cuando faltan credenciales para el transporte por defecto o cuando un tiempo de espera no es positivo.

Propiedades de servicio (se crean en el primer acceso y luego se reutilizan):

PropiedadClase
paymentIntentsOrcaRail\Service\PaymentIntentService
subscriptionsOrcaRail\Service\SubscriptionService
payOrcaRail\Service\PayService
ratesOrcaRail\Service\RateService
productsOrcaRail\Service\ProductService
pricesOrcaRail\Service\PriceService

Acceder a cualquier otra propiedad lanza InvalidArgumentException.

use OrcaRail\OrcaRailClient;

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

Servicios​

Los parámetros de las peticiones son arrays asociativos con los mismos nombres de campo que la API REST. Las respuestas son instancias de OrcaRailObject salvo que se indique lo contrario.

$orcarail->paymentIntents​

Consulta la visión general de Payment Intents y la referencia REST.

MétodoDescripción
create(array $params)Crea un payment intent. Requiere price_id o todos estos: amount, currency, tokenId, networkId. payment_method_types vale ['crypto'] por defecto.
retrieve(string $id)Obtiene un payment intent por UUID.
confirm(string $id, array $params)Confirma y obtiene la URL de pago alojada. Parámetros: client_secret, return_url. Envía la autenticación con clave de API además del client secret.
complete(string $id)Marca el intent como en procesamiento cuando el cliente llega a la URL de retorno. Lanza payment_intent.processing.
update(string $id, array $params)Actualiza amount, currency, tokenId, networkId, price_id, metadata, las URLs, expires_at o withdrawal_addresses.
cancel(string $id)Cancela un payment intent.

Parámetros de creación: price_id, amount, currency, tokenId, networkId, payment_method_types, return_url, cancel_url, description, metadata, expires_at, withdrawal_addresses (indexado por familia de cadenas, por ejemplo ['evm' => '0x…']).

Combinar price_id con amount, currency, tokenId o networkId lanza InvalidArgumentException, igual que omitir las dos formas.

Redes y tokens: el SDK no tiene métodos para listarlos. Usa GET Pagos: listar redes y GET Pagos: listar tokens por red y pasa los UUID devueltos como networkId y tokenId.

$orcarail->subscriptions​

Las rutas de colección deducen la organización de la clave de API autenticada; las rutas de elementos van en el nivel superior por ID de suscripción.

MétodoDescripción
create(array $params)Crea una suscripción. Requiere price_id o todos estos: amount, currency, token_id, network_id, interval.
retrieve(string $id)Obtiene una suscripción por ID.
update(string $id, array $params)Actualiza una suscripción (por ejemplo cancel_at_period_end, pause_collection, metadata).
cancel(string $id, array $params = [])Cancela una suscripción. cancellation_details opcional (comment, feedback). No envía cuerpo si $params está vacío.
resume(string $id)Reanuda una suscripción en pausa.
all(array $params = [])Lista suscripciones. Devuelve un envoltorio con data y has_more. Se llama all() porque list es una palabra reservada de PHP.
listPaymentLinks(string $id, array $params = [])Lista los enlaces de pago de una suscripción. Devuelve un envoltorio con data y has_more.

Parámetros de listado: status, collection_method, limit, starting_after, ending_before y los filtros de rango created, current_period_start, current_period_end. Los filtros de rango son arrays anidados y se codifican como parámetros de consulta con corchetes, así que ['current_period_end' => ['lte' => $iso]] se envía como current_period_end[lte]=…. Los booleanos se codifican como true/false.

Los endpoints de cobro automático de cara al pagador no están incluidos a propósito; consulta Cobro automático.

$orcarail->pay​

Pago por el slug del enlace de pago. Consulta la API de pago.

MétodoDescripción
retrieve(string $slug)Obtiene el payment intent asociado al slug de un enlace de pago.
get(string $slug)Alias de retrieve().
cancel(string $slug)Cancela por slug.

$orcarail->rates​

Cotizaciones fiat y monedas compatibles. Consulta la API de precios.

MétodoDescripción
getFiatQuote(array $params)Cotización de fiat a USD/USDC. Parámetros: amount, currency. Devuelve un objeto con amountUsd, amountUsdc, sourceAmount, sourceCurrency.
getCurrencies(array $options = [])Lista las monedas fiat. Opción: active (bool). Devuelve list<OrcaRailObject>.

$orcarail->products​

Productos del catálogo de la organización. Cada método recibe primero el UUID de la organización.

MétodoDescripción
all(string $organizationId)Lista los productos. Desenvuelve el envoltorio de lista; devuelve list<OrcaRailObject>.
create(string $organizationId, array $params)Crea un producto (name, description, active, metadata).
update(string $organizationId, string $productId, array $params)Actualiza un producto.
delete(string $organizationId, string $productId)Elimina (desactiva) un producto.

$orcarail->prices​

Precios del catálogo de la organización, más helpers para precios de pago único.

MétodoDescripción
all(string $organizationId, array $params = [])Lista los precios (por ejemplo ['active' => true, 'recurring' => true]). Devuelve list<OrcaRailObject>.
create(string $organizationId, array $params)Crea un precio (product, nickname, unit_amount_decimal, currency, token_id, network_id, recurring, active, metadata).
update(string $organizationId, string $priceId, array $params)Actualiza un precio.
deactivate(string $organizationId, string $priceId)Desactiva un precio.
listActiveRecurring(string $organizationId)Atajo para los precios recurrentes activos.
findOneTimeByAmount(string $organizationId, array $params)Busca un precio de pago único activo que coincida con amount, currencyCode y productName. Devuelve null si no existe.
ensureOneTime(string $organizationId, array $params)Busca o crea un precio de pago único, creando el producto si hace falta. Parámetros: amount, currencyCode, tokenId, networkId, productName y, opcionalmente, productDescription, productMetadata.

Los importes se normalizan a dos decimales; un importe no numérico o no positivo lanza InvalidArgumentException. Un envoltorio del catálogo mal formado lanza UnexpectedValueException.

Webhooks​

Ambos helpers son estáticos y no necesitan cliente. Pasa siempre el cuerpo de la petición sin modificar.

OrcaRail\Webhook​

MétodoDescripción
Webhook::constructEvent(string $payload, string $signature, string $secret)Verifica la firma y analiza el cuerpo como OrcaRailObject. Lanza SignatureVerificationException si la firma no es válida, si el JSON no es válido o si el cuerpo no es un objeto.

OrcaRail\WebhookSignature​

MétodoDescripción
WebhookSignature::verifyHeader(string $payload, string $signature, string $secret)Devuelve true cuando la cabecera x-webhook-signature es igual al HMAC-SHA256 del cuerpo en bruto, comparándolos con hash_equals(). Los valores vacíos y las firmas no hexadecimales devuelven false.
WebhookSignature::assertValid(string $payload, string $signature, string $secret)La misma comprobación, pero lanza SignatureVerificationException en lugar de devolver false.

Consulta Webhooks y Firmas.

OrcaRail\OrcaRailObject​

Objeto de respuesta compatible con versiones futuras. Los objetos JSON anidados se convierten en OrcaRailObject; los arrays JSON siguen siendo listas de PHP. Los campos desconocidos se conservan, así que las respuestas no se rompen cuando la API añade campos.

MiembroDescripción
__get(string $name)Acceso por propiedad. Devuelve null para las claves que faltan.
ArrayAccessLectura, escritura, isset() y unset() con $object['field']. Las claves deben ser strings.
IteratorAggregate, Countableforeach sobre los campos y count($object).
toArray()Conversión recursiva a un array simple.
jsonSerialize()Hace que json_encode($object) devuelva la misma estructura.
OrcaRailObject::convert(mixed $value)Helper estático usado para hidratar el JSON decodificado.

Enums​

Enums de string respaldados en OrcaRail\Enum\. Compáralos con $enum->value al leer strings de la API.

EnumCasos
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

Gestiona con cuidado los tipos de evento desconocidos: se pueden añadir eventos nuevos.

Excepciones​

Todas las excepciones del SDK extienden OrcaRail\Exception\OrcaRailException, que extiende RuntimeException.

ClaseCuándo se lanza
OrcaRailExceptionClase base de todas las excepciones del SDK.
ApiExceptionLa API devolvió un estado distinto de 2xx. Propiedades: statusCode, type, details, request.
AuthenticationException401: clave o secreto de API no válidos. Extiende ApiException con type authentication_error.
TransportExceptionFallo de red, tiempo de espera agotado, petición que no se puede codificar o respuesta que no se puede decodificar. Propiedad: request.
SignatureVerificationExceptionFirma de webhook no válida o cuerpo que no es un objeto JSON. Propiedad: signature.

InvalidArgumentException y UnexpectedValueException (incorporadas en PHP) indican un uso local incorrecto: combinaciones de parámetros no válidas, configuración no válida, nombres de servicio desconocidos o una forma de respuesta inesperada.

Transporte HTTP​

Clase / interfazDescripción
OrcaRail\HttpClient\ClientInterfacerequest(string $method, string $path, ?array $body = null, bool $requireAuth = true): mixed. Impleméntala para cambiar de transporte en los tests.
OrcaRail\HttpClient\CurlClientTransporte cURL por defecto. Envía Accept/Content-Type: application/json, Basic auth cuando hace falta y User-Agent: orcarail-php/<version>. Los cuerpos que no son JSON se devuelven como strings; los vacíos, como null.

CurlClient::DEFAULT_BASE_URL es https://api.orcarail.com/api/v1. Los segmentos de ruta se codifican como URL y las cadenas de consulta con RFC 3986.

Otras clases​

ClaseDescripción
OrcaRail\VersionVersion::VERSION: versión del paquete usada en la cabecera User-Agent.
OrcaRail\CatalogPlanMetadataparse() normaliza los metadatos de los planes del catálogo (array u objeto) en un OrcaRailObject.

Consulta también​