Files

6.8 KiB

Работа со способами оплаты

Только для тех, кто использует привязку на нулевую сумму для сохранения банковских карт.

Способ оплаты — данные платежного средства пользователя. Например, данные банковской карты.

С помощью SDK вы можете создать способ оплаты — сохранить платежные данные в ЮKassa с привязкой к вашему магазину. Также через SDK вы можете получить актуальную информацию о созданном способе оплаты.

Запрос на создание способа оплаты

Создание способа оплаты в документации

Объект способа оплаты SavePaymentMethod содержит всю информацию о платежном средстве пользователя, актуальную на текущий момент времени. Он формируется при создании способа оплаты и приходит в ответ на любой запрос, связанный со способами оплаты.

Набор возвращаемых параметров зависит от статуса объекта (значение параметра status) и того, какие параметры вы передали в запросе на создание способа оплаты.

В ответ на запрос придет объект способа оплаты - SavePaymentMethod в актуальном статусе.

require_once 'vendor/autoload.php';

$client = new \YooKassa\Client();
$client->setAuth('xxxxxx', 'test_XXXXXXX');

try {
    $response = $client->createPaymentMethod(
        [
            'confirmation' => [
                'enforce' => true,
                'type' => 'redirect',
                'return_url' => 'https://www.example.com/return_url',
                'locale' => 'ru_RU'
            ],
            'type' => 'bank_card',
            'card' => [
                'number' => '4100000000000002',
                'expiry_year' => '2025',
                'expiry_month' => '12',
                'cardholder' => 'Inna Ivanovna',
                'csc' => '123'
            ],
            'holder' => [
                'gateway_id' => '123456'
            ],
            'client_ip' => '127.0.0.1',
        ],
        uniqid('', true)
    );
    if ($response->getStatus() === SavePaymentMethodStatus::PENDING) {
        echo $response->getConfirmation()->getConfirmationUrl(); // Получаем ссылку на URL, на который необходимо перенаправить пользователя для подтверждения привязки
    }
} catch (\Exception $e) {
    var_dump($response);
}

Запрос на создание способа оплаты через билдер

Создание способа оплаты в документации

Билдер позволяет создать объект запроса на создание способа оплаты — CreatePaymentMethodRequestBuilder программным способом, через объекты.

require_once 'vendor/autoload.php';

$client = new \YooKassa\Client();
$client->setAuth('xxxxxx', 'test_XXXXXXX');

try {
    $paymentMethodBuilder = \YooKassa\Request\PaymentMethods\CreatePaymentMethodRequest::builder();
    $paymentMethodBuilder
        ->setType(\YooKassa\Model\SavePaymentMethod\SavePaymentMethodType::BANK_CARD)
        ->setCard(new \YooKassa\Request\PaymentMethods\PaymentMethodCard([
            'number' => '4100000000000002',
            'expiry_year' => '2025',
            'expiry_month' => '12',
            'cardholder' => 'Ivan Ivanov',
            'csc' => '123',
        ]))
        ->setClientIp('127.0.0.1')
    ;

    // Создаем объект запроса
    $request = $paymentMethodBuilder->build();

    // Можно изменить данные, если нужно
    $request->setClientIp('127.0.0.2');

    $idempotenceKey = uniqid('', true);
    $response = $client->createPaymentMethod($request, $idempotenceKey);
    if ($response->getStatus() === SavePaymentMethodStatus::PENDING) {
        echo $response->getConfirmation()->getConfirmationUrl(); // Получаем ссылку на URL, на который необходимо перенаправить пользователя для подтверждения привязки
    }
} catch (Exception $e) {
    var_dump($e);
}

Получить информацию о способе оплаты

Информация о способе оплаты в документации

Запрос позволяет получить информацию о текущем состоянии способа оплаты по его уникальному идентификатору.

В ответ на запрос придет объект способа оплаты — PaymentMethodResponse — в актуальном статусе.

require_once 'vendor/autoload.php';

$client = new \YooKassa\Client();
$client->setAuth('xxxxxx', 'test_XXXXXXX');

try {
    $paymentMethodId = '285c0ab7-0003-5000-9000-0e1166498fda';
    $response = $client->getPaymentMethodInfo($paymentMethodId);
    print_r($response->toArray());
    if ($response->getStatus() === SavePaymentMethodStatus::PENDING) {
        echo $response->getConfirmation()->getConfirmationUrl(); // Получаем ссылку на URL, на который необходимо перенаправить пользователя для подтверждения привязки
    }
} catch (Exception $e) {
    var_dump($e);
}