PHP code example of pimcore / payment-provider-unzer
1. Go to this page and download the library: Download pimcore/payment-provider-unzer library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
pimcore / payment-provider-unzer example snippets
/**
* @Route("/checkout-payment", name="shop-checkout-payment")
*
* @param Factory $factory
* @return array
*/
public function checkoutPaymentAction(Factory $factory) {
$cartManager = $factory->getCartManager();
$cart = $cartManager->getOrCreateCartByName('cart');
$checkoutManager = $factory->getCheckoutManager($cart);
$paymentProvider = $checkoutManager->getPayment();
$accessKey = '';
if($paymentProvider instanceof Unzer) {
$accessKey = $paymentProvider->getPublicAccessKey();
}
return [
'cart' => $cart,
'accessKey' => $accessKey
];
}
/**
* @Route("/checkout-start-payment", name="shop-checkout-start-payment")
*
* @param Request $request
* @param Factory $factory
* @return RedirectResponse
*/
public function startPaymentAction(Request $request, Factory $factory, LoggerInterface $logger) {
try {
$cartManager = $factory->getCartManager();
$cart = $cartManager->getOrCreateCartByName('cart');
/** @var CheckoutManagerInterface $checkoutManager */
$checkoutManager = $factory->getCheckoutManager($cart);
$paymentInfo = $checkoutManager->initOrderPayment();
/** @var OnlineShopOrder $order */
$order = $paymentInfo->getObject();
$paymentConfig = new UnzerRequest();
$paymentConfig->setInternalPaymentId($paymentInfo->getInternalPaymentId());
$paymentConfig->setPaymentReference($request->get('paymentId'));
$paymentConfig->setReturnUrl($this->generateUrl('shop-commit-order', ['order' => $order->getOrdernumber()], UrlGeneratorInterface::ABSOLUTE_URL));
$paymentConfig->setErrorUrl($this->generateUrl('shop-checkout-payment-error', [], UrlGeneratorInterface::ABSOLUTE_URL));
$response = $checkoutManager->startOrderPaymentWithPaymentProvider($paymentConfig);
if($response instanceof UrlResponse) {
return new RedirectResponse($response->getUrl());
}
} catch (\Exception $e) {
$this->addFlash('danger', $e->getMessage());
$logger->error($e->getMessage());
return $this->redirectToRoute('shop-checkout-payment');
}
}
/**
* @Route("/payment-error", name = "shop-checkout-payment-error" )
*/
public function paymentErrorAction(Request $request, LoggerInterface $logger)
{
$logger->error('payment error: ' . $request->get('merchantMessage'));
if($clientMessage = $request->get('clientMessage')) {
$this->addFlash('danger', $clientMessage);
}
return $this->redirectToRoute('shop-checkout-payment');
}
/**
* @Route("/payment-commit-order", name="shop-commit-order")
*
* @param Request $request
* @param Factory $factory
* @param LoggerInterface $logger
* @param Translator $translator
* @param SessionInterface $session
* @return RedirectResponse
* @throws \Pimcore\Bundle\EcommerceFrameworkBundle\Exception\UnsupportedException
*/
public function commitOrderAction(Request $request, Factory $factory, LoggerInterface $logger, Translator $translator, SessionInterface $session) {
$order = OnlineShopOrder::getByOrdernumber($request->query->get('order'), 1);
$cartManager = $factory->getCartManager();
$cart = $cartManager->getOrCreateCartByName('cart');
/**
* @var CheckoutManagerInterface $checkoutManager
*/
$checkoutManager = $factory->getCheckoutManager($cart);
try {
$order = $checkoutManager->handlePaymentResponseAndCommitOrderPayment([
'order' => $order
]);
} catch(\Exception $e) {
$logger->error($e->getMessage());
}
if(!$order || $order->getOrderState() !== AbstractOrder::ORDER_STATE_COMMITTED) {
$this->addFlash('danger', $translator->trans('checkout.payment-failed'));
return $this->redirectToRoute('shop-checkout-payment');
}
if (!$session->isStarted()) {
$session->start();
}
$session->set("last_order_id", $order->getId());
return $this->redirectToRoute('shop-checkout-completed');
}
bash
php bin/console pimcore:bundle:enable PimcorePaymentProviderUnzerBundle
php bin/console pimcore:bundle:install PimcorePaymentProviderUnzerBundle