mirror of
https://git.yoomoney.ru/scm/sdk/yookassa-sdk-php.git
synced 2026-08-17 11:30:05 +00:00
130 lines
6.8 KiB
Markdown
130 lines
6.8 KiB
Markdown
## Работа со способами оплаты
|
|
|
|
> Только для тех, кто использует [привязку на нулевую сумму](https://yookassa.ru/developers/payment-acceptance/scenario-extensions/recurring-payments/save-payment-method/save-without-payment) для сохранения банковских карт.
|
|
|
|
Способ оплаты — данные платежного средства пользователя. Например, данные банковской карты.
|
|
|
|
С помощью SDK вы можете создать способ оплаты — сохранить платежные данные в ЮKassa с привязкой к вашему магазину. Также через SDK вы можете получить актуальную информацию о созданном способе оплаты.
|
|
|
|
* [Запрос на создание способа оплаты](#Запрос-на-создание-способа-оплаты)
|
|
* [Запрос на создание способа оплаты через билдер](#Запрос-на-создание-способа-оплаты-через-билдер)
|
|
* [Получить информацию о способе оплаты](#Получить-информацию-о-способе-оплаты)
|
|
|
|
### Запрос на создание способа оплаты <a name="Запрос-на-создание-способа-оплаты"></a>
|
|
|
|
[Создание способа оплаты в документации](https://yookassa.ru/developers/api#create_payment_method)
|
|
|
|
Объект способа оплаты `SavePaymentMethod` содержит всю информацию о платежном средстве пользователя, актуальную на текущий момент времени. Он формируется при создании способа оплаты и приходит в ответ на любой запрос, связанный со способами оплаты.
|
|
|
|
Набор возвращаемых параметров зависит от статуса объекта (значение параметра `status`) и того, какие параметры вы передали в запросе на создание способа оплаты.
|
|
|
|
В ответ на запрос придет объект способа оплаты - `SavePaymentMethod` в актуальном статусе.
|
|
|
|
```php
|
|
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);
|
|
}
|
|
```
|
|
---
|
|
|
|
### Запрос на создание способа оплаты через билдер <a name="Запрос-на-создание-способа-оплаты-через-билдер"></a>
|
|
|
|
[Создание способа оплаты в документации](https://yookassa.ru/developers/api#create_payment_method)
|
|
|
|
Билдер позволяет создать объект запроса на создание способа оплаты — `CreatePaymentMethodRequestBuilder` программным способом, через объекты.
|
|
|
|
```php
|
|
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);
|
|
}
|
|
```
|
|
---
|
|
|
|
### Получить информацию о способе оплаты <a name="Получить-информацию-о-способе-оплаты"></a>
|
|
|
|
[Информация о способе оплаты в документации](https://yookassa.ru/developers/api#get_payment_method)
|
|
|
|
Запрос позволяет получить информацию о текущем состоянии способа оплаты по его уникальному идентификатору.
|
|
|
|
В ответ на запрос придет объект способа оплаты — `PaymentMethodResponse` — в актуальном статусе.
|
|
|
|
```php
|
|
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);
|
|
}
|
|
```
|