PHP и Node.js: что поддерживает каждый SDK

PHP

Каждый вызов двух SDK рядом и чем ещё они различаются — среда выполнения, HTTP-клиент, журнал, спаны, Laravel.

У Slen два SDK — для PHP и для Node.js. Они обращаются к одному API, у них одинаковые вызовы, они выбрасывают один и тот же тип ошибки для каждого кода и пишут одинаковый журнал и одинаковые спаны. Эта страница их сравнивает.

Вызовы

Вызов называется одинаково в обоих SDK: operations.execute — это slen.operations.execute() в Node.js и $slen->operations()->execute() в PHP.

МетодPHPNode.js
customers.adjustДаДа
customers.blockДаДа
customers.chargeДаДа
customers.createДаДа
customers.deleteДаДа
customers.entriesДаДа
customers.getДаДа
customers.listДаДа
customers.pricesДаДа
customers.topUpДаДа
customers.unblockДаДа
customers.updateAccountДаДа
executions.getДаДа
executions.traceДаДа
executions.waitДаДа
flushНетДа
healthДаДа
operations.executeДаДа
operations.executeAsyncДаДа
webhooks.constructEventДаДа
webhooks.verifyДаДа

Вызовы одного SDK с запросом, который делает каждый, перечисляет статья Клиент и методы.

Чем ещё они различаются

ЧтоPHPNode.js
Пакетslen/sdk@slen/sdk
Среда выполненияPHP 8.3 или новееNode.js 20.3 или новее
HTTP-клиентЛюбой клиент PSR-18 вашего приложения: Guzzle, Symfony HttpClient или другойfetch среды выполнения
Ключ из окруженияНет: передайте его в SlenConfig. В Laravel его читает файл конфигурацииДа, SLEN_API_KEY — Конфигурация
Логгер журналаЛоггер PSR-3console или объект с теми же четырьмя методами
Спаны в логДа, Psr3SpanRecorderДа, LoggerSpanRecorder
Спаны в OpenTelemetryНет: реализуйте свой записывающийДа, по OTLP или в трассировки вашего приложения — Спаны
Отправка того, что держит записывающий, перед выходомНе нужна: спан пишется сразуflush()
Ожидание без ограничения по времениНет: ограничение ожидания — целое число секундДа, timeoutSeconds, равный Infinity
Завершение вызова или ожидания извнеНетДа, signal
Таймаут одного вызоваДа, timeout опций вызоваДа, timeoutMs вызова
Повторы одного вызоваДа, retries опций вызоваДа, retries вызова
Приёмник вебхуков без API-ключаWebhooksFacade::standalone(), его секрет — в WebhooksOptionswebhooks, экспортируемый пакетом, секрет — в опциях каждого вызова
Laravel: сервис-провайдер, фасад и файл конфигурацииДа — Интеграция с LaravelНет
Тестовый дублёр сетиFakeHttpClientFakeFetch — Тестирование интеграции
Результат вызоваОбъект со свойствами в camel caseОтвет API с его именами полей

Что у двух SDK общего: одни и те же типы ошибок для одних и тех же кодов (Типы ошибок), одни и те же события журнала (Журнал), одни и те же десять полей спана (Спаны) и одни и те же правила того, что отправляется ещё раз (Повторы и таймауты).

Что читать дальше

Собрано из openapi b070e1f, sdk contract 6a2e0e0, php 4089db3, node 0fa87be