%PDF- %PDF-
| Direktori : /home/lightco1/public_html/plugins/vmpayment/klarna/klarna/api/ |
| Current File : /home/lightco1/public_html/plugins/vmpayment/klarna/klarna/api/klarnapclass.php |
<?php
defined ('_JEXEC') or die();
/**
* KlarnaPClass
*
* PHP Version 5.3
*
* @ignore Do not show in PHPDoc.
* @category Payment
* @package KlarnaAPI
* @author MS Dev <ms.modules@klarna.com>
* @copyright 2012 Klarna AB (http://klarna.com)
* @license http://opensource.org/licenses/BSD-2-Clause BSD-2
* @link http://integration.klarna.com/
*/
/**
* PClass object used for part payment.
*
* PClasses are used in conjunction with KlarnaCalc to determine part payment costs.
*
* @ignore Do not show in PHPDoc.
* @category Payment
* @package KlarnaAPI
* @author MS Dev <ms.modules@klarna.com>
* @copyright 2012 Klarna AB (http://klarna.com)
* @license http://opensource.org/licenses/BSD-2-Clause BSD-2
* @link http://integration.klarna.com/
*/
class KlarnaPClass
{
/**
* Invoice type/identifier, used for invoice purchases.
*
* @var int
*/
const INVOICE = -1;
/**
* Campaign type pclass.
*
* @var int
*/
const CAMPAIGN = 0;
/**
* Account type pclass.
*
* @var int
*/
const ACCOUNT = 1;
/**
* Special campaign type pclass.<br>
* "Buy now, pay in x month"<br>
*
* @var int
*/
const SPECIAL = 2;
/**
* Fixed campaign type pclass
*
* @var int
*/
const FIXED = 3;
/**
* Delayed campaign type pclass.<br>
* "Pay in X months"<br>
*
* @var int
*/
const DELAY = 4;
/**
* Klarna Mobile type pclass
*
* @var int
*/
const MOBILE = 5;
/**
* The description for this PClass.
* HTML entities for special characters.
*
* @ignore Do not show in PHPDoc.
* @var string
*/
protected $description;
/**
* Number of months for this PClass.
*
* @ignore Do not show in PHPDoc.
* @var int
*/
protected $months;
/**
* PClass starting fee.
*
* @ignore Do not show in PHPDoc.
* @var float
*/
protected $startFee;
/**
* PClass invoice/handling fee.
*
* @ignore Do not show in PHPDoc.
* @var float
*/
protected $invoiceFee;
/**
* PClass interest rate.
*
* @ignore Do not show in PHPDoc.
* @var float
*/
protected $interestRate;
/**
* PClass minimum amount for purchase/product.
*
* @ignore Do not show in PHPDoc.
* @var float
*/
protected $minAmount;
/**
* PClass country.
*
* @ignore Do not show in PHPDoc.
* @see KlarnaCountry
* @var int
*/
protected $country;
/**
* PClass ID.
*
* @ignore Do not show in PHPDoc.
* @var int
*/
protected $id;
/**
* PClass type.
*
* @see self::CAMPAIGN
* @see self::ACCOUNT
* @see self::SPECIAL
* @see self::FIXED
* @see self::DELAY
* @see self::MOBILE
*
* @ignore Do not show in PHPDoc.
* @var int
*/
protected $type;
/**
* Expire date / valid until date as unix timestamp.<br>
* Compare it with e.g. $_SERVER['REQUEST_TIME'].<br>
*
* @ignore Do not show in PHPDoc.
* @var int
*/
protected $expire;
/**
* Merchant ID / Estore ID.
*
* @ignore Do not show in PHPDoc.
* @var int
*/
protected $eid;
/**
* Class constructor
*
* The optional array argument can be:
* array (
* 0 = eid (this is created in the API)
* 1 = id number
* 2 = description
* 3 = amount of months for part payment
* 4 = start fee
* 5 = invoice fee
* 6 = interest rate
* 7 = minimum purchase amount for pclass
* 8 = country
* 9 = type
* (This is used to determine which pclass-id is an account and
* a campaign, 0 = campaign, 1 = account, 2 = special campaign
* i.e. x-mas campaign)
* 10 = expire date
*
* @param null|array $arr Associative or numeric array of PClass data.
*/
public function __construct($arr = null)
{
if (!is_array($arr) || count($arr) < 11) {
return;
}
foreach ($arr as $key => $val) {
switch($key) {
case "0":
case "eid":
$this->setEid($val);
break;
case "1":
case "id":
$this->setId($val);
break;
case "2":
case "desc":
case "description":
$this->setDescription($val);
break;
case "3":
case "months":
$this->setMonths($val);
break;
case "4":
case "startfee":
$this->setStartFee($val);
break;
case "5":
case "invoicefee":
$this->setInvoiceFee($val);
break;
case "6":
case "interestrate":
$this->setInterestRate($val);
break;
case "7":
case "minamount":
$this->setMinAmount($val);
break;
case "8":
case "country":
$this->setCountry($val);
break;
case "9":
case "type":
$this->setType($val);
break;
case "10":
case "expire":
$this->setExpire($val);
break;
default:
//Array index not supported.
break;
}
}
}
/**
* Returns an associative array mirroring this PClass.
*
* @return array
*/
public function toArray()
{
return array(
'eid' => $this->eid,
'id' => $this->id,
'description' => $this->description,
'months' => $this->months,
'startfee' => $this->startFee,
'invoicefee' => $this->invoiceFee,
'interestrate' => $this->interestRate,
'minamount' => $this->minAmount,
'country' => $this->country,
'type' => $this->type,
'expire' => $this->expire
);
}
/**
* Sets the descriptiton, converts to HTML entities.
*
* @param string $description PClass description.
*
* @return void
*/
public function setDescription($description)
{
$this->description = $description;
}
/**
* Sets the number of months.
*
* @param int $months Number of months.
*
* @return void
*/
public function setMonths($months)
{
$this->months = intval($months);
}
/**
* Sets the starting fee.
*
* @param float $startFee Starting fee.
*
* @return void
*/
public function setStartFee($startFee)
{
$this->startFee = floatval($startFee);
}
/**
* Sets the invoicing/handling fee.
*
* @param float $invoiceFee Invoicing fee.
*
* @return void
*/
public function setInvoiceFee($invoiceFee)
{
$this->invoiceFee = floatval($invoiceFee);
}
/**
* Sets the interest rate.
*
* @param float $interestRate Interest rate.
*
* @return void
*/
public function setInterestRate($interestRate)
{
$this->interestRate = floatval($interestRate);
}
/**
* Sets the Minimum amount to use this PClass.
*
* @param float $minAmount Minimum amount.
*
* @return void
*/
public function setMinAmount($minAmount)
{
$this->minAmount = floatval($minAmount);
}
/**
* Sets the country for this PClass.
*
* @param int $country {@link KlarnaCountry} constant.
*
* @see KlarnaCountry
*
* @return void
*/
public function setCountry($country)
{
$this->country = intval($country);
}
/**
* Sets the ID for this pclass.
*
* @param int $id PClass identifier.
*
* @return void
*/
public function setId($id)
{
$this->id = intval($id);
}
/**
* Sets the type for this pclass.
*
* @param int $type PClass type identifier.
*
* @see self::CAMPAIGN
* @see self::ACCOUNT
* @see self::SPECIAL
* @see self::FIXED
* @see self::DELAY
* @see self::MOBILE
*
* @return void
*/
public function setType($type)
{
$this->type = intval($type);
}
/**
* Returns the ID for this PClass.
*
* @return int PClass identifier.
*/
public function getId()
{
return $this->id;
}
/**
* Returns this PClass's type.
*
* @see self::CAMPAIGN
* @see self::ACCOUNT
* @see self::SPECIAL
* @see self::FIXED
* @see self::DELAY
* @see self::MOBILE
*
* @return int PClass type identifier.
*/
public function getType()
{
return $this->type;
}
/**
* Returns the Merchant ID or Estore ID connected to this PClass.
*
* @return int
*/
public function getEid()
{
return $this->eid;
}
/**
* Merchant ID or Estore ID connected to this PClass.
*
* @param int $eid Merchant ID.
*
* @return void
*/
public function setEid($eid)
{
$this->eid = intval($eid);
}
/**
* Checks whether this PClass is valid.
*
* @param int $now Unix timestamp
*
* @return bool
*/
public function isValid($now = null)
{
if ($this->expire == null
|| $this->expire == '-'
|| $this->expire <= 0
) {
//No expire, or unset? assume valid.
return true;
}
if ($now === null || !is_numeric($now)) {
$now = time();
}
//If now is before expire, it is still valid.
return ($now > $this->expire) ? false : true;
}
/**
* Returns the valid until/expire date unix timestamp.
*
* @return int
*/
public function getExpire()
{
return $this->expire;
}
/**
* Sets the valid until/expire date unix timestamp.
*
* @param int $expire unix timestamp for expire
*
* @return void
*/
public function setExpire($expire)
{
$this->expire = $expire;
}
/**
* Returns the description for this PClass.
*
* <b>Note</b>:<br>
* Encoded with HTML entities.
*
* @return string PClass description.
*/
public function getDescription()
{
return $this->description;
}
/**
* Returns the number of months for this PClass.
*
* @return int Number of months.
*/
public function getMonths()
{
return $this->months;
}
/**
* Returns the starting fee for this PClass.
*
* @return float Starting fee.
*/
public function getStartFee()
{
return $this->startFee;
}
/**
* Returns the invoicing/handling fee for this PClass.
*
* @return float Invoicing fee.
*/
public function getInvoiceFee()
{
return $this->invoiceFee;
}
/**
* Returns the interest rate for this PClass.
*
* @return float Interest rate.
*/
public function getInterestRate()
{
return $this->interestRate;
}
/**
* Returns the minimum order/product amount for which this PClass is allowed.
*
* @return float Minimum amount to use this PClass.
*/
public function getMinAmount()
{
return $this->minAmount;
}
/**
* Returns the country related to this PClass.
*
* @see KlarnaCountry
* @return int {@link KlarnaCountry} constant.
*/
public function getCountry()
{
return $this->country;
}
}