Routing funktioniert nicht
Hi!
ich habe kürzlich eine uralte Standard Contao Version auf die Managed Version aktualisiert.
Das hat soweit funktioniert.
Es gibt aber leider noch ein Problem. Auf der Seite gibt es eine Bezahlfunktion, die mit dem Payum Bundle umgesetzt ist.
Leider funktioniert das nicht, ich vermute das Routing funktioniert nicht.
Ich leite in einem Schritt auf
Code:
order/payment/id/11/patient
weiter. Erhalte dann aber immer einen 404 Error.
Der Payment Controller sieht so aus:
Code:
/**
* @Route("/order/payment/id/{inquiry_id}/{payment_method}", name="generatePayment")
*/
public function generatePaymentAction(Request $request, $inquiry_id, $payment_method = "offline")
{
if(!$request->getSession()->get('fromOrder')){
die("no access");
}
// get order from inquiry
$inquiry = $this->getDoctrine()->getRepository("OrderBundle:Inquiry")->find($inquiry_id);
$order = $this->getDoctrine()->getRepository("OrderBundle:OnlineOrder")->generateOrderFromInquiry($inquiry, false);
$gatewayName = $payment_method;
$storage = $this->get('payum')->getStorage('firm\OrderBundle\Entity\Payment');
/** @var $payment Payment*/
$payment = $storage->create();
$payment->setNumber(uniqid());
$payment->setCurrencyCode('EUR');
$payment->setTotalAmount($order->getTotalAmount() * 100); // we need cent here
$payment->setClientId($order->getClientData()->getMemberId());
$payment->setClientEmail($order->getClientData()->getEmail());
// set firm values
$payment->setClientDataId($order->getClientData()->getId());
$payment->setCreatedAt(new \DateTime("now"));
$payment->setDetails(array());
//$payment->setDetails(array());
$payment->setDescription('Order Number: '.$order->getOrderNr());
$payment->setPaymentMethodStr($payment_method);
$storage->update($payment);
$captureToken = $this->get('payum')->getTokenFactory()->createCaptureToken(
$gatewayName,
$payment,
'paymentDone', // <- route
array('iid' => $inquiry_id)
);
//die($captureToken->getTargetUrl());
return $this->redirect($captureToken->getTargetUrl());
}
Die Filestruktur ist leider etwas ungünstig:
Code:
app
-config
assets
files
src
-firm
--admin-backend-bundle
--catalog-bundle
.
.
.
--order-bundle
---src
----ContaoManager
-----Plugin.php
----Controller
-----PaymentController.php
-----BasketController.pph
----Entity
----Interfaces
----Module
----Repository
----Resources
----Tests
----OrderBundle.php
usw
ich hatte damals für alles ein Bundle gemacht :o
Wenn ich route:match verwende kommt:
Code:
[OK] Route "contao_frontend" matches
Property | Value
+--------------+--------------------------------------------------------------+
| Route Name | contao_frontend
| Path | /{alias}
| Path Regex | #^/(?P<alias>.+)$#sD
| Host | ANY
| Host Regex |
| Scheme | ANY
| Method | ANY
| Requirements | alias: .+
| Class | Symfony\Component\Routing\Route
| Defaults | _controller: ContaoCoreBundle:Frontend:index
| | _scope: frontend
| | _token_check: true
| Options | compiler_class: Symfony\Component\Routing\RouteCompiler
| Callable | Contao\CoreBundle\Controller\FrontendController::indexAction
+--------------+--------------------------------------------------------------+
Hätte jemand ne Idee was falsch sein könnte?
LG
D.
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Tag allerseits,
Sorry wenn ich das nach so langer Zeit nochmal auskrame.
Ich hänge leider noch immer an dem neuen Fehler.
Der hängt mit dem Payum Bundle zusammen.
Immer wenn ich eine Bezahlung machen möchte kommt der Fehler:
Code:
Uncaught PHP Exception Payum\Core\Exception\InvalidArgumentException: "Gateway factory "offline" does not exist." at /vendor/payum/core/Payum/Core/Registry/AbstractRegistry.php line 117 {"exception":"[object] (Payum\\Core\\Exception\\InvalidArgumentException(code: 0): Gateway factory \"offline\" does not exist. at vendor/payum/core/Payum/Core/Registry/AbstractRegistry.php:117)"} []
Meine config dazu sieht so aus:
PHP-Code:
gateways:
core:
payum.template.layout: OrderBundle::layout.html.twig
prepayment:
factory: offline
invoice:
factory: offline
e112:
factory: offline
patient:
factory: offline
paypal_express:
factory: paypal_express_checkout
username: ****
password: ****
signature: ****
sandbox: true
stripe_js:
factory: stripe_js
publishable_key: ****
secret_key: ****
payum.template.layout: OrderBundle::stripe.html.twig
In der Composer verwende ich das
"payum/payum-bundle": "2.1",
auch wenn ich eine der Varianten für stripe bzw. paypal nutze kommt der Fehler mit "Gateway factory "offline" does not exist". Es scheint also hier schon ein Problem zu geben.
Im log sehe ich aber folgende request:
Code:
request.INFO: Matched route "generatePayment". {"route":"generatePayment","route_parameters":{"payment_method":"stripe_js","_controller":"BasketController::generatePaymentAction","inquiry_id":"5","_route":"generatePayment"},"request_uri":"/order/payment/id/5/stripe_js","method":"GET"} []
Hat jemand irgendeine Idee wo ich da noch bei der Fehlersuche ansetzen kann?
Danke euch und LG
D.
P.S.
Was mit eben noch aufgefallen ist: Im BE wird die Versionsnummer nicht angezeigt, s. Bild