Payum: установить свой url для capture

356
01 ноября 2017, 04:09

Я пытаюсь использовать Payum для приёма платежей на сайте.

Проблема в том, что непонятно, как поменять capture url. По умолчанию он строится как '.../capture.php', а мне нужно указать там свой url, так как у приложения свои правила роутинга (используется yii2).

Но я совсем не понимаю архитектуру этого пакета. Я посмотрел исходный код, посмотрел существующие расширения для различных фреймворков, увидел, что есть TokenFactory, где можно задавать url, но все равно не понял, как именно это делать. Я бы бросил, но количество звездочек на github проекта намекает мне, что я просто чего-то не знаю.

Подскажите, пожалуйста, как в payum задать свои url для capture/done и т. п.?

Подробности:

Инициализация payum:

$ymGateway = new \yandexmoney\YandexMoney\Gateway();
$payum = (new PayumBuilder())
    ->addDefaultStorages()
    ->addGateway('yandexKassa', [
        'factory' => 'omnipay',
        'payum.api' => $ymGateway,
    ])
    ->getPayum()
;

Prepare:

$paymentClass = \Payum\Core\Model\Payment::class;
/** @var \Payum\Core\Payum $payum */
$storage = $payum->getStorage($paymentClass);
$payment = $storage->create();
$payment->setNumber(uniqid());
$payment->setCurrencyCode('EUR');
$payment->setTotalAmount(123); // 1.23 EUR
$payment->setDescription('A description');
$payment->setClientId(234);
$payment->setClientEmail('foo@example.com');
$storage->update($payment);
$captureToken = $payum->getTokenFactory()->createCaptureToken('yandexKassa', $payment, 'done.php');
die($captureToken->getTargetUrl());

Это действие отрабатывает на странице '/pay/prepare'. На выходе получается ссылка '/pay/prepare/capture.php'. Мне нужно, чтобы ссылка была '/pay/capture'.

В каком месте здесь нужно вставить инициализацию TokenFactory и как она должна выглядеть, или, если это неправильный способ, что нужно сделать, чтобы можно было задавать свои url?

READ ALSO
К общей сумме товара в корзине прибавить значение

К общей сумме товара в корзине прибавить значение

Подскажите как при формировании общей суммы в корзине товара прибавить значение тв поля этого товара файл mscarthandlerclass

305
goBack не работает как надо

goBack не работает как надо

Я хотел сделать редирект на предыдущую страницу, но $this->goBack() в контроллере возвращает на главнуюГуглил, нашел такое решение $this->goBack(Yii::$app->request->referrer)

270
Активный пункт меню php

Активный пункт меню php

Не могу понять как сделать активный пункт меню php

248