first commit
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file classes/payment/PaymentManager.php
|
||||
*
|
||||
* Copyright (c) 2014-2021 Simon Fraser University
|
||||
* Copyright (c) 2000-2021 John Willinsky
|
||||
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
||||
*
|
||||
* @class PaymentManager
|
||||
*
|
||||
* @ingroup payment
|
||||
*
|
||||
* @see Payment
|
||||
*
|
||||
* @brief Provides payment management functions.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace PKP\payment;
|
||||
|
||||
use Exception;
|
||||
use PKP\context\Context;
|
||||
use PKP\db\DAORegistry;
|
||||
|
||||
abstract class PaymentManager
|
||||
{
|
||||
public const PAYMENT_TYPE_PUBLICATION = 7; // FIXME: This is OJS-only but referred to in pkp-lib. Move back to OJS.
|
||||
|
||||
/** @var Context */
|
||||
public $_context;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param Context $context
|
||||
*/
|
||||
public function __construct($context)
|
||||
{
|
||||
$this->_context = $context;
|
||||
}
|
||||
|
||||
/**
|
||||
* Queue a payment for receipt.
|
||||
*
|
||||
* @param object $queuedPayment
|
||||
* @param string $expiryDate optional
|
||||
*
|
||||
* @return mixed Queued payment ID for new payment, or false if fails
|
||||
*/
|
||||
public function queuePayment($queuedPayment, $expiryDate = null)
|
||||
{
|
||||
if (!$this->isConfigured()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$queuedPaymentDao = DAORegistry::getDAO('QueuedPaymentDAO'); /** @var QueuedPaymentDAO $queuedPaymentDao */
|
||||
$queuedPaymentId = $queuedPaymentDao->insertObject($queuedPayment, $expiryDate);
|
||||
|
||||
// Perform periodic cleanup
|
||||
if (time() % 100 == 0) {
|
||||
$queuedPaymentDao->deleteExpired();
|
||||
}
|
||||
|
||||
return $queuedPaymentId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Abstract method for fetching the payment plugin
|
||||
*
|
||||
* @return \PKP\plugins\PaymethodPlugin
|
||||
*/
|
||||
abstract public function getPaymentPlugin();
|
||||
|
||||
/**
|
||||
* Check if there is a payment plugin and if is configured
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isConfigured()
|
||||
{
|
||||
$paymentPlugin = $this->getPaymentPlugin();
|
||||
if ($paymentPlugin !== null) {
|
||||
return $paymentPlugin->isConfigured($this->_context);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the payment form for the configured payment plugin and specified payment.
|
||||
*
|
||||
* @param QueuedPayment $queuedPayment
|
||||
*
|
||||
* @return \PKP\form\Form
|
||||
*/
|
||||
public function getPaymentForm($queuedPayment)
|
||||
{
|
||||
$paymentPlugin = $this->getPaymentPlugin();
|
||||
if ($paymentPlugin !== null && $paymentPlugin->isConfigured($this->_context)) {
|
||||
return $paymentPlugin->getPaymentForm($this->_context, $queuedPayment);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch a queued payment
|
||||
*
|
||||
* @param int $queuedPaymentId
|
||||
*
|
||||
* @return QueuedPayment
|
||||
*/
|
||||
public function getQueuedPayment($queuedPaymentId)
|
||||
{
|
||||
$queuedPaymentDao = DAORegistry::getDAO('QueuedPaymentDAO'); /** @var QueuedPaymentDAO $queuedPaymentDao */
|
||||
$queuedPayment = $queuedPaymentDao->getById($queuedPaymentId);
|
||||
return $queuedPayment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fulfill a queued payment
|
||||
*
|
||||
* @param \PKP\core\PKPRequest $request
|
||||
* @param QueuedPayment $queuedPayment
|
||||
*
|
||||
* @return bool success/failure
|
||||
*/
|
||||
abstract public function fulfillQueuedPayment($request, $queuedPayment);
|
||||
}
|
||||
|
||||
if (!PKP_STRICT_MODE) {
|
||||
class_alias('\PKP\payment\PaymentManager', '\PaymentManager');
|
||||
}
|
||||
Reference in New Issue
Block a user