Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Payment/CallbackState.php
<?php

namespace XF\Payment;

/**
 * @property \XF\Entity\PurchaseRequest $purchaseRequest
 * @property \XF\Purchasable\AbstractPurchasable $purchasableHandler
 * @property \XF\Entity\PaymentProfile $paymentProfile
 * @property \XF\Entity\User $purchaser;
 *
 * @property int $paymentResult
 *
 * @property string $requestKey
 *
 * @property string $transactionId
 * @property string $subscriberId
 * @property string $paymentCountry
 *
 * @property string $logType
 * @property string $logMessage
 * @property array $logDetails
 * @property int $httpCode
 */
class CallbackState
{
    protected
$purchaseRequest;
    protected
$purchasableHandler;
    protected
$paymentProfile;
    protected
$purchaser;
    protected
$paymentResult;

    const
PAYMENT_RECEIVED = 1; // received payment
   
const PAYMENT_REVERSED = 2; // refund/reversal
   
const PAYMENT_REINSTATED = 3; // reversal cancelled

   
public function getPurchaseRequest()
    {
        return
$this->purchaseRequest;
    }

    public function
getPurchasableHandler()
    {
        if (
$this->purchasableHandler)
        {
            return
$this->purchasableHandler;
        }

       
$purchaseRequest = $this->getPurchaseRequest();
        if (!
$purchaseRequest)
        {
            return
false;
        }

       
/** @var \XF\Entity\Purchasable $purchasable */
       
$purchasable = \XF::em()->find('XF:Purchasable', $purchaseRequest->purchasable_type_id);
        if (!
$purchasable || !$purchasable->handler)
        {
            return
false;
        }

       
$this->purchasableHandler = $purchasable->handler;
        return
$this->purchasableHandler;
    }

    public function
getPaymentProfile()
    {
        if (
$this->paymentProfile)
        {
            return
$this->paymentProfile;
        }

       
$purchaseRequest = $this->getPurchaseRequest();
        if (!
$purchaseRequest)
        {
            return
false;
        }

       
$paymentProfile = \XF::em()->find('XF:PaymentProfile', $purchaseRequest->payment_profile_id);
        if (!
$paymentProfile)
        {
            return
false;
        }

       
$this->paymentProfile = $paymentProfile;
        return
$this->paymentProfile;
    }

    public function
getPurchaser()
    {
        if (
$this->purchaser)
        {
            return
$this->purchaser;
        }

       
$purchaseRequest = $this->purchaseRequest;
        if (!
$purchaseRequest)
        {
            return
false;
        }

       
$user = \XF::em()->find('XF:User', $purchaseRequest->user_id);
        if (!
$user)
        {
            return
false;
        }

       
$this->purchaser = $user;
        return
$this->purchaser;
    }

    function
__get($name)
    {
        return
$this->{$name} ?? null;
    }

    function
__set($name, $value)
    {
        switch (
$name)
        {
            case
'purchaseRequest':
               
$this->purchaseRequest = $value;
                if (
$value)
                {
                   
$this->requestKey = $value->request_key;
                }
                break;

            case
'requestKey':
               
$this->purchaseRequest = \XF::em()->findOne('XF:PurchaseRequest', ['request_key' => $value]);
               
$this->requestKey = $value;
                break;

            default:
               
$this->{$name} = $value;
                break;
        }
    }
}