PHP SDK

Официальный Composer-пакет ruswallet/sdk для PHP 8.2+. Удобная типизированная обёртка над REST API — для Laravel, Symfony, OpenCart и custom PHP-решений.

Когда выбирать

  • Backend магазина на PHP и нужен чистый код без raw HTTP.
  • Типизированные DTO, enum-ы и обработка ошибок из коробки.
  • Один и тот же контракт, что у Open API и Bitrix-модуля.

Установка

composer require ruswallet/sdk

Пример: клиент известен (однофазный сценарий)

<?php
declare(strict_types=1);

use RusWallet\Sdk\Client;
use RusWallet\Sdk\DTO\CreateApplicationRequest;
use RusWallet\Sdk\DTO\Customer;
use RusWallet\Sdk\DTO\Item;
use RusWallet\Sdk\Enums\CreditType;
use RusWallet\Sdk\Enums\ItemType;

$ruswallet = new Client(
    apiKey: getenv('RUSWALLET_API_KEY'),
    baseUrl: 'https://ruswallet.ru/api/v1',
);

$response = $ruswallet->createApplication(new CreateApplicationRequest(
    orderId: 'SHOP-12345',
    items: [
        new Item('iPhone 15 Pro 256GB', 119990, 1, ItemType::Product),
    ],
    formSuccessUrl: 'https://shop.example.ru/order/12345/thanks',
    creditType: CreditType::Installment, // или CreditType::Credit; по умолчанию Installment
    customer: new Customer(
        phone: '+79991234567',
        firstName: 'Иван',
        lastName: 'Иванов',
    ),
));

header('Location: ' . $response->redirectUrl());
exit;

Двухфазный сценарий

Опустите аргумент customer — метод redirectUrl() вернёт customer_form_url:

$response = $ruswallet->createApplication(new CreateApplicationRequest(
    orderId:        'SHOP-12345',
    items:          [new Item('iPhone 15 Pro 256GB', 119990, 1, ItemType::Product)],
    formSuccessUrl: 'https://shop.example.ru/order/12345/thanks',
    creditType:     CreditType::Installment, // или CreditType::Credit; по умолчанию Installment
));

header('Location: ' . $response->redirectUrl(), true, 303);

Обработка ошибок

  • AuthenticationException — неверный API-ключ (401/403)
  • ValidationException — ошибки валидации (422), массив ->errors
  • ApiException — прочие 4xx/5xx
  • RusWalletException — сетевые ошибки

Используйте серверный api_key, не публичный ключ виджета (pk_…).

Нужна помощь?

Документация по полям API: Open API