app/Plugin/UnivaPay/Controller/Admin/OrderController.php line 88

Open in your IDE?
  1. <?php
  2. namespace Plugin\UnivaPay\Controller\Admin;
  3. use Eccube\Controller\AbstractController;
  4. use Eccube\Entity\Order;
  5. use Eccube\Entity\Master\OrderStatus;
  6. use Eccube\Repository\Master\OrderStatusRepository;
  7. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
  8. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
  11. use Plugin\UnivaPay\Util\SDK;
  12. use Plugin\UnivaPay\Repository\ConfigRepository;
  13. use Money\Currency;
  14. use Money\Money;
  15. class OrderController extends AbstractController
  16. {
  17.     /** @var ConfigRepository */
  18.     protected $Config;
  19.     /**
  20.      * @var OrderStatusRepository
  21.      */
  22.     private $orderStatusRepository;
  23.     /**
  24.      * OrderController constructor.
  25.      *
  26.      * @param ConfigRepository $configRepository
  27.      * @param OrderStatusRepository $orderStatusRepository
  28.      */
  29.     public function __construct(
  30.         ConfigRepository $configRepository,
  31.         OrderStatusRepository $orderStatusRepository
  32.     ) {
  33.         $this->Config $configRepository;
  34.         $this->orderStatusRepository $orderStatusRepository;
  35.     }
  36.     /**
  37.      * Change status
  38.      *
  39.      * @Method("POST")
  40.      * @Route("/%eccube_admin_route%/univapay/order/change/{id}", requirements={"id" = "\d+"}, name="univa_pay_admin_order_change")
  41.      */
  42.     public function changeStatus(Request $requestOrder $Order)
  43.     {
  44.         if ($request->isXmlHttpRequest() && $this->isTokenValid()) {
  45.             $util = new SDK($this->Config->findOneById(1));
  46.             $chargeId $Order->getUnivapayChargeId();
  47.             $charge $util->getCharge($chargeId);
  48.             switch ($request->get("action")) {
  49.                 case "capture":
  50.                     $charge->capture();
  51.                     $charge->fetch();
  52.                     $OrderStatus $this->orderStatusRepository->find(OrderStatus::PAID);
  53.                     $Order->setPaymentDate(new \DateTime());
  54.                     break;
  55.                 case "cancel":
  56.                     if($charge->status->getName() === "SUCCESSFUL") {
  57.                         $money = new Money($charge->chargedAmountFormatted, new Currency($charge->chargedCurrency.""));
  58.                         $charge->createRefund($money)->awaitResult();
  59.                     } else {
  60.                         $charge->cancel()->awaitResult();
  61.                     }
  62.                     $OrderStatus $this->orderStatusRepository->find(OrderStatus::CANCEL);
  63.                     break;
  64.             }
  65.             $Order->setOrderStatus($OrderStatus);
  66.             $this->entityManager->persist($Order);
  67.             $this->entityManager->flush();
  68.             $this->addSuccess('univa_pay.admin.order.change_status.success''admin');
  69.             return $this->json($charge->status);
  70.         }
  71.         throw new BadRequestHttpException();
  72.     }
  73.     /**
  74.      * Get status
  75.      *
  76.      * @Method("GET")
  77.      * @Route("/%eccube_admin_route%/univapay/order/get/{id}", requirements={"id" = "\d+"}, name="univa_pay_admin_order_get")
  78.      */
  79.     public function getStatus(Request $requestOrder $Order)
  80.     {
  81.         if ($request->isXmlHttpRequest() && $this->isTokenValid()) {
  82.             $util = new SDK($this->Config->findOneById(1));
  83.             $charge $util->getCharge($Order->getUnivapayChargeId());
  84.             $ret = [
  85.                 'status' => $charge->status->getValue(),
  86.                 'id' => $charge->id,
  87.                 'subscription_id' => $charge->subscriptionId
  88.             ];
  89.             $refund current(current($charge->listRefunds()));
  90.             if($refund) {
  91.                 $ret['status'] = 'refund';
  92.                 if($refund->status->getValue() !== 'successful') {
  93.                     $ret['status'] = $refund->status->getValue();
  94.                 }
  95.             }
  96.             return $this->json($ret);
  97.         }
  98.         throw new BadRequestHttpException();
  99.     }
  100. }