public function paymentJson()
 {
     $request = Ajde::app()->getRequest();
     $provider = $request->getPostParam('provider', false);
     if (empty($provider)) {
         return ['success' => false, 'message' => trans('Please choose a payment provider')];
     }
     // Check for current transaction
     $transaction = new TransactionModel();
     $session = new Ajde_Session('AC.Shop');
     if ($session->has('currentTransaction') && $transaction->loadByPK($session->get('currentTransaction'))) {
         if ($transaction->payment_status !== 'pending') {
             return ['success' => false, 'message' => trans('Payment already initiated, please refresh this page')];
         }
     } else {
         return ['success' => false, 'message' => trans('No current order found')];
     }
     $transaction->payment_provider = $provider;
     $provider = $transaction->getProvider();
     $redirectUrl = $provider->getRedirectUrl();
     if ($redirectUrl !== false) {
         $transaction->payment_status = 'requested';
         $transaction->save();
         if ($provider->usePostProxy()) {
             $this->setAction('postproxy');
             $proxy = $this->getView();
             $proxy->assign('provider', $provider);
             return ['success' => true, 'postproxy' => $proxy->render()];
         }
         return ['success' => true, 'redirect' => $redirectUrl];
     }
     return ['success' => false, 'message' => 'Could not contact the payment provider, please try again'];
 }