168 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			168 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
    /**
 | 
						|
     * @package     Freemius
 | 
						|
     * @copyright   Copyright (c) 2016, Freemius, Inc.
 | 
						|
     * @license     https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
 | 
						|
     * @since       1.0.0
 | 
						|
     */
 | 
						|
 | 
						|
    if ( ! defined( 'ABSPATH' ) ) {
 | 
						|
        exit;
 | 
						|
    }
 | 
						|
 | 
						|
    class FS_Payment extends FS_Entity {
 | 
						|
 | 
						|
        #region Properties
 | 
						|
 | 
						|
        /**
 | 
						|
         * @var number
 | 
						|
         */
 | 
						|
        public $plugin_id;
 | 
						|
        /**
 | 
						|
         * @var number
 | 
						|
         */
 | 
						|
        public $user_id;
 | 
						|
        /**
 | 
						|
         * @var number
 | 
						|
         */
 | 
						|
        public $install_id;
 | 
						|
        /**
 | 
						|
         * @var number
 | 
						|
         */
 | 
						|
        public $subscription_id;
 | 
						|
        /**
 | 
						|
         * @var number
 | 
						|
         */
 | 
						|
        public $plan_id;
 | 
						|
        /**
 | 
						|
         * @var number
 | 
						|
         */
 | 
						|
        public $license_id;
 | 
						|
        /**
 | 
						|
         * @var float
 | 
						|
         */
 | 
						|
        public $gross;
 | 
						|
        /**
 | 
						|
         * @author Leo Fajardo (@leorw)
 | 
						|
         * @since 2.3.0
 | 
						|
         *
 | 
						|
         * @var string One of the following: `usd`, `gbp`, `eur`.
 | 
						|
         */
 | 
						|
        public $currency;
 | 
						|
        /**
 | 
						|
         * @var number
 | 
						|
         */
 | 
						|
        public $bound_payment_id;
 | 
						|
        /**
 | 
						|
         * @var string
 | 
						|
         */
 | 
						|
        public $external_id;
 | 
						|
        /**
 | 
						|
         * @var string
 | 
						|
         */
 | 
						|
        public $gateway;
 | 
						|
        /**
 | 
						|
         * @var string ISO 3166-1 alpha-2 - two-letter country code.
 | 
						|
         *
 | 
						|
         * @link http://www.wikiwand.com/en/ISO_3166-1_alpha-2
 | 
						|
         */
 | 
						|
        public $country_code;
 | 
						|
        /**
 | 
						|
         * @var string
 | 
						|
         */
 | 
						|
        public $vat_id;
 | 
						|
        /**
 | 
						|
         * @var float Actual Tax / VAT in $$$
 | 
						|
         */
 | 
						|
        public $vat;
 | 
						|
        /**
 | 
						|
         * @var int Payment source.
 | 
						|
         */
 | 
						|
        public $source = 0;
 | 
						|
 | 
						|
        #endregion Properties
 | 
						|
 | 
						|
        const CURRENCY_USD = 'usd';
 | 
						|
        const CURRENCY_GBP = 'gbp';
 | 
						|
        const CURRENCY_EUR = 'eur';
 | 
						|
 | 
						|
        /**
 | 
						|
         * @param object|bool $payment
 | 
						|
         */
 | 
						|
        function __construct( $payment = false ) {
 | 
						|
            parent::__construct( $payment );
 | 
						|
        }
 | 
						|
 | 
						|
        static function get_type() {
 | 
						|
            return 'payment';
 | 
						|
        }
 | 
						|
 | 
						|
        /**
 | 
						|
         * @author Vova Feldman (@svovaf)
 | 
						|
         * @since  1.0.0
 | 
						|
         *
 | 
						|
         * @return bool
 | 
						|
         */
 | 
						|
        function is_refund() {
 | 
						|
            return ( parent::is_valid_id( $this->bound_payment_id ) && 0 > $this->gross );
 | 
						|
        }
 | 
						|
 | 
						|
        /**
 | 
						|
         * Checks if the payment was migrated from another platform.
 | 
						|
         *
 | 
						|
         * @author Vova Feldman (@svovaf)
 | 
						|
         * @since  2.0.2
 | 
						|
         *
 | 
						|
         * @return bool
 | 
						|
         */
 | 
						|
        function is_migrated() {
 | 
						|
            return ( 0 != $this->source );
 | 
						|
        }
 | 
						|
 | 
						|
        /**
 | 
						|
         * Returns the gross in this format:
 | 
						|
         *  `{symbol}{amount | 2 decimal digits} {currency | uppercase}`
 | 
						|
         *
 | 
						|
         * Examples: £9.99 GBP, -£9.99 GBP.
 | 
						|
         *
 | 
						|
         * @author Leo Fajardo (@leorw)
 | 
						|
         * @since 2.3.0
 | 
						|
         *
 | 
						|
         * @return string
 | 
						|
         */
 | 
						|
        function formatted_gross()
 | 
						|
        {
 | 
						|
            return (
 | 
						|
                ( $this->gross < 0 ? '-' : '' ) .
 | 
						|
                $this->get_symbol() .
 | 
						|
                number_format( abs( $this->gross ), 2, '.', ',' ) . ' ' .
 | 
						|
                strtoupper( $this->currency )
 | 
						|
            );
 | 
						|
        }
 | 
						|
 | 
						|
        /**
 | 
						|
         * A map between supported currencies with their symbols.
 | 
						|
         *
 | 
						|
         * @var array<string,string>
 | 
						|
         */
 | 
						|
        static $CURRENCY_2_SYMBOL;
 | 
						|
 | 
						|
        /**
 | 
						|
         * @author Leo Fajardo (@leorw)
 | 
						|
         * @since 2.3.0
 | 
						|
         *
 | 
						|
         * @return string
 | 
						|
         */
 | 
						|
        private function get_symbol() {
 | 
						|
            if ( ! isset( self::$CURRENCY_2_SYMBOL ) ) {
 | 
						|
                // Lazy load.
 | 
						|
                self::$CURRENCY_2_SYMBOL = array(
 | 
						|
                    self::CURRENCY_USD => '$',
 | 
						|
                    self::CURRENCY_GBP => '£',
 | 
						|
                    self::CURRENCY_EUR => '€',
 | 
						|
                );
 | 
						|
            }
 | 
						|
 | 
						|
            return self::$CURRENCY_2_SYMBOL[ $this->currency ];
 | 
						|
        }
 | 
						|
    } |