Payum, определите значение для $paymentClass в prepare.php

Я пытаюсь заставить payum работать с paypal_pro_checkout, но я застрял в файле prepare.php:

<?php
//config.php


include 'vendor/autoload.php';

use Payum\Core\PayumBuilder;
use Payum\Core\Payum;

$paymentClass = Payment::class;


/** @var Payum $payum */
$payum = (new PayumBuilder())
  ->addDefaultStorages()
  ->addGateway('gatewayName', [
    'factory' => 'paypal_pro_checkout',
    'username' => 'REPLACE IT',
    'password' => 'REPLACE IT',
    'partner' => 'REPLACE IT',
    'vendor' => 'REPLACE IT',
    'tender' => 'REPLACE IT',
        'sandbox' => true
    ])

    ->getPayum()
;

    <?php
// prepare.php

include __DIR__.'/config.php';

$gatewayName = 'paypal_pro_checkout';

/** @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('anId');
$payment->setClientEmail('[email protected]');

$payment->setDetails(array(
  // put here any fields in a gateway format.
  // for example if you use Paypal ExpressCheckout you can define a description of the first item:
  // 'L_PAYMENTREQUEST_0_DESC0' => 'A desc',
));


$storage->update($payment);

$captureToken = $payum->getTokenFactory()->createCaptureToken($gatewayName, $payment, 'done.php');

header("Location: ".$captureToken->getTargetUrl());


?>

Это согласно документу. Payum, но с $paymentClass у меня возникли проблемы. Они не определили его в config.php Paypal, но не определяя его, выдает ошибку. Когда я беру определение из примера для начала работы (как указано выше в конфигурации, я получаю

Фатальная ошибка: Uncaught Payum\Core\Exception\InvalidArgumentException: Хранилище для модели Payment не было зарегистрировано. Есть хранилища для следующих моделей: Payum\Core\Model\Payment, Payum\Core\Model\ArrayObject, Payum\Core\Model\Payout. в C:\Users\User\Desktop\www\payum_test\vendor\payum\core\Payum\Core\Registry\AbstractRegistry.php

Я использую это без каких-либо фреймворков и не знаком с этими моделями, упомянутыми в ошибке.


person user2822542    schedule 16.02.2018    source источник


Ответы (1)


Насколько я понимаю, $paymentClass содержит класс модели оплаты. Если вы используете стандартные модели Payum, то это может быть Payum\Core\Model\Payment. В противном случае - собственный класс модели - MyApp\Model\Payment

person zain    schedule 29.12.2018