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
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.
Lesezeichen