OJSPaymentManager::createQueuedPayment PHP Method

createQueuedPayment() public method

Create a queued payment.
public createQueuedPayment ( $journalId, $type, $userId, $assocId, $amount, $currencyCode = null ) : QueuedPayment
$journalId int ID of journal payment applies under
$type int PAYMENT_TYPE_...
$userId int ID of user responsible for payment
$assocId int ID of associated entity
$amount numeric Amount of currency $currencyCode
$currencyCode string optional ISO 4217 currency code
return QueuedPayment
    function &createQueuedPayment($journalId, $type, $userId, $assocId, $amount, $currencyCode = null)
    {
        $journalSettingsDao = DAORegistry::getDAO('JournalSettingsDAO');
        if (is_null($currencyCode)) {
            $currencyCode = $journalSettingsDao->getSetting($journalId, 'currency');
        }
        $payment = new OJSQueuedPayment($amount, $currencyCode, $userId, $assocId);
        $payment->setJournalId($journalId);
        $payment->setType($type);
        $router = $this->request->getRouter();
        $dispatcher = $router->getDispatcher();
        switch ($type) {
            case PAYMENT_TYPE_PURCHASE_ARTICLE:
                $payment->setRequestUrl($dispatcher->url($this->request, ROUTE_PAGE, null, 'article', 'view', $assocId));
                break;
            case PAYMENT_TYPE_PURCHASE_ISSUE:
                $payment->setRequestUrl($dispatcher->url($this->request, ROUTE_PAGE, null, 'issue', 'view', $assocId));
                break;
            case PAYMENT_TYPE_MEMBERSHIP:
                $payment->setRequestUrl($dispatcher->url($this->request, ROUTE_PAGE, null, 'user'));
                break;
            case PAYMENT_TYPE_PURCHASE_SUBSCRIPTION:
            case PAYMENT_TYPE_RENEW_SUBSCRIPTION:
                $payment->setRequestUrl($dispatcher->url($this->request, ROUTE_PAGE, null, 'user', 'subscriptions'));
                break;
            case PAYMENT_TYPE_DONATION:
                $payment->setRequestUrl($dispatcher->url($this->request, ROUTE_PAGE, null, 'donations', 'thankYou'));
                break;
            case PAYMENT_TYPE_FASTTRACK:
            case PAYMENT_TYPE_PUBLICATION:
            case PAYMENT_TYPE_SUBMISSION:
                $submissionDao = Application::getSubmissionDAO();
                $submission = $submissionDao->getById($assocId);
                if ($submission->getSubmissionProgress() != 0) {
                    $payment->setRequestUrl($dispatcher->url($this->request, ROUTE_PAGE, null, 'submission', 'wizard', $submission->getSubmissionProgress(), array('submissionId' => $assocId)));
                } else {
                    $payment->setRequestUrl($dispatcher->url($this->request, ROUTE_PAGE, null, 'author'));
                }
                break;
            case PAYMENT_TYPE_GIFT:
                $payment->setRequestUrl($dispatcher->url($this->request, ROUTE_PAGE, null, 'gifts', 'thankYou'));
                break;
            default:
                // Invalid payment type
                assert(false);
                break;
        }
        return $payment;
    }

Usage Example

Example #1
0
 /**
  * Display the donations page.
  * @param $args array
  * @param $request PKPRequest
  */
 function index($args, $request)
 {
     import('classes.payment.ojs.OJSPaymentManager');
     $paymentManager = new OJSPaymentManager($request);
     $journal = $request->getJournal();
     if (!Validation::isLoggedIn()) {
         Validation::redirectLogin('payment.loginRequired.forDonation');
     }
     $user = $request->getUser();
     $queuedPayment = $paymentManager->createQueuedPayment($journal->getId(), PAYMENT_TYPE_DONATION, $user->getId(), 0, 0);
     $queuedPaymentId = $paymentManager->queuePayment($queuedPayment);
     $paymentManager->displayPaymentForm($queuedPaymentId, $queuedPayment);
 }
All Usage Examples Of OJSPaymentManager::createQueuedPayment