@zevem
Стрелец

Как в return_url Яндекс Кассы передать параметр?

Здравствуйте!

Яндекс Касса, независимо от того успешный был платеж или нет, отправляет только на одну страницу, которая указывается в return_url. На этой странице я хочу, получить статус платежа по id заказа и в зависимости от этого статуса (успешный/неуспешный) выводить соответствующую информацию на странице.

Если платеж успешный, на странице будет так и написано.
Если нет, то будет написано, что платеж неуспешный.

Вопрос:
1) Можно ли как-то в установить две отдельные ссылки для успешной и неуспешной оплаты?
2) Если нет, то можно ли в return_url яндекс кассы как-то передать id заказа? Что-то типа такого site.com/?id=11111 По id заказа я смогу получить информацию о нем.
3) Если и это нельзя, может на этот return_url яндекс отправляет запрос и там можно принять параметры?

Вот мой код отправки платежа:

$client = new Client();
$client->setAuth('ххх', 'yyy');

$response = $client->createPayment(
        array(
            'amount' => array(
                'value' => $price,
                'currency' => 'RUB',
            ),
            'confirmation' => array(
                'type' => 'redirect',
                'return_url' => 'http://site.com/payment',
            ),
            'capture' => true,
            'description' => 'Описание',
        ),
        uniqid('', true)
    );


API создания платежа https://kassa.yandex.ru/developers/api#create_payment
  • Вопрос задан
  • 890 просмотров
Пригласить эксперта
Ответы на вопрос 2
skv1991
@skv1991
веб-программист, спортсмен
Разный return_url задавать нельзя, а вот передать данные о заказе при формировании платежа можно в метаданных.

Подробнее: https://kassa.yandex.ru/developers/api#payment_obj...

Пример формирования платежа на php (адаптируйте на js, если надо):
$paymentConfig = [
      'phone' => 79991234567,
      'email' => "vasya.puplin@example.com",
      'amount' => [
        'value' => "1000.00",
        'currency' => 'RUB',
      ],
      'confirmation' => [
        'type' => 'redirect',
        'return_url' => "url, куда яндекс будет отправлять платежные события на вашем сайте",
      ],
      'capture' => true, // Автоматический прием поступившего платежа.
      'description' => 'Заказ №22',
      'metadata' => [
        'orderId' => 22
      ]
];

$payment = $this->yandexCheckout->createPayment(
      $paymentConfig,
      uniqid('', true)
);


Здесь $this->yandexCheckout - это у меня в проекте так называется клиент из SDK PHP (yandex-checkout-sdk-php)

В свойство metadata можно вкладывать нужную информацию. В бою не раз использовал такой подход. Работает.

При получении платежа, соответственно, смотрите нужное свойство и получите номер заказа.

При формировании платежа попробуйте передать это свойство.
Ответ написан
Комментировать
mahmudchon
@mahmudchon
Вы можете, например, создать изначально платеж, скажем, в базе данных и получить его ID.
Далее, создаем платеж в Яндекс Кассе, узнаем его ID и "дружим" их вместе.
В return_url передаем ID платежа из базы $_GET параметром, например, site.com/payment/?id=1, для дальнейшей идентификации.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы