kaktusy/modules/hipay/mapi/mapi_paymentparams.php

850 lines
16 KiB
PHP

<?php
/**
* Paramètres
*
*/
class HIPAY_MAPI_PaymentParams extends HIPAY_MAPI_lockable {
/**
* Nom d'utilisateur pour se connecter à la plateforme
*
* @var string
*/
protected $login;
/**
* Mot de passe de connexion
*
* @var string
*/
protected $password;
/**
* Compte sur lequel verser le montant HT des produits
*
* @var int
*/
protected $itemAccount;
/**
* Compte sur lequel verser le montant des taxes
*
* @var int
*/
protected $taxAccount;
/**
* Compte sur lequel verser le montant des assurances
*
* @var int
*/
protected $insuranceAccount;
/**
* Compte sur lequel verser le montant des coûts fixes
*
* @var int
*/
protected $fixedCostAccount;
/**
* Compte sur lequel verser le montant des frais de livraison
*
* @var int
*/
protected $shippingCostAccount;
/**
* Langue par défaut de l'interface de paiement
*
* @var string
*/
protected $defaultLang;
/**
* Type d'interface de paiement
*
* @var string
*/
protected $media;
/**
* Classe d'age à laquelle s'applique cette vente
*
* @var string
*/
protected $rating;
/**
* Type du paiement (simple ou récurrent)
*
* @var int
*/
protected $paymentMethod;
/**
* Délai de capture
*
* @var int
*/
protected $captureDay;
/**
* Devise dans laquelle sont exprimés les montants
*
* @var string
*/
protected $currency;
/**
* Identifiant de cette vente pour le marchant
*
* @var int
*/
protected $idForMerchant;
/**
* Identifiant du site marchand tel que renseigné
* dans l'interface marchande de la plateforme
*
* @var int
*/
protected $merchantSiteId;
/**
* Identifiant du groupe statistique auquel appartient ce paiement
*
* @var int
*/
protected $statsGroupId;
/**
* Données propres au marchand
*
* @var string
*/
protected $merchantDatas;
/**
* Url sur laquelle est redirigée le client si le paiement est ok
*
* @var string
*/
protected $url_ok;
/**
* Url sur laquelle est redirigée le client si le paiement n'est pas ok
*
* @var string
*/
protected $url_nok;
/**
* Url sur laquelle est redirigée le client si le paiement est annulé
*
* @var string
*/
protected $url_cancel;
/**
* Url du script qui sera appellé pour signifier le résultat du paiement
*
* @var string
*/
protected $url_ack;
/**
* Chaine de caractère devant etre retournée par le script $url_ack
* pour informer de la bonne réception des informations
*
* @var string
*/
protected $ack_wd;
/**
* Adresse email vers laquelle la plateforme enverra un email
* pour informer d'un nouveau paiement
*
* @var string
*/
protected $email_ack;
/**
* code hexa de la couleur de fond de l'interface
*
* @var string
*/
protected $bg_color;
/**
* Url du logo du marchand
*
* @var string
*/
protected $logo_url;
/**
* Assigne le login et le mot de passe
*
* @param string $login
* @param string $password
* @return boolean
*/
public function setLogin($login,$password) {
if ($this->_locked)
return false;
$login = HIPAY_MAPI_UTF8::forceUTF8($login);
if (empty($login))
return false;
$password = HIPAY_MAPI_UTF8::forceUTF8($password);
if (empty($password))
return false;
$this->login=$login;
$this->password=$password;
return true;
}
/**
* Retourne le login
*
* @return string
*/
public function getLogin() {
return $this->login;
}
/**
* Retourne le mot de passe
*
* @return string
*/
public function getPassword() {
return $this->password;
}
/**
* Assigne les comptes sur lesquels seront versés les différents montants
*
* @param int $itemAccount
* @param int $taxAccount
* @param int $insuranceAccount
* @param int $fixedCostAccount
* @param int $shippingCostAccount
* @return boolean
*/
public function setAccounts($itemAccount,$taxAccount=0,$insuranceAccount=0,$fixedCostAccount=0,$shippingCostAccount=0) {
if ($this->_locked)
return false;
$itemAccount=(int)$itemAccount;
$taxAccount=(int)$taxAccount;
$insuranceAccount=(int)$insuranceAccount;
$fixedCostAccount=(int)$fixedCostAccount;
$shippingCostAccount=(int)$shippingCostAccount;
if ($itemAccount<=0)
return false;
if ($taxAccount<=0)
$taxAccount=$itemAccount;
if ($insuranceAccount<=0)
$insuranceAccount=$itemAccount;
if ($fixedCostAccount<=0)
$fixedCostAccount=$itemAccount;
if ($shippingCostAccount<=0)
$shippingCostAccount=$itemAccount;
$this->itemAccount = $itemAccount;
$this->taxAccount = $taxAccount;
$this->insuranceAccount = $insuranceAccount;
$this->fixedCostAccount = $fixedCostAccount;
$this->shippingCostAccount = $shippingCostAccount;
return true;
}
/**
* Retourne le numéro de compte sur lequel sera versé
* le montant de produits
*
* @return int
*/
public function getItemAccount() {
return $this->itemAccount;
}
/**
* Retourne le numéro de compte sur lequel sera versé
* le montant des taxes
*
* @return int
*/
public function getTaxAccount() {
return $this->taxAccount;
}
/**
* Retourne le numéro de compte sur lequel sera versé
* le montant des assurances
*
* @return int
*/
public function getInsuranceAccount() {
return $this->insuranceAccount;
}
/**
* Retourne le numéro de compte sur lequel sera versé
* le montant des coûts fixes
*
* @return int
*/
public function getFixedCostAccount() {
return $this->fixedCostAccount;
}
/**
* Retourne le numéro de compte sur lequel sera versé
* le montant des frais d'envoi
*
* @return int
*/
public function getShippingCostAccount() {
return $this->shippingCostAccount;
}
/**
* Assigne la lange par défaut (AZ_az = pays_langue)
*
* @param string $defaultLang
* @return boolean
*/
public function setDefaultLang($defaultLang) {
if ($this->_locked)
return false;
if (!preg_match('#^[A-Z]{2}_[a-z]{2}$#',$defaultLang))
return false;
$this->defaultLang=$defaultLang;
return true;
}
/**
* Retourne la langue par défaut
*
* @return string
*/
public function getDefaultLang() {
return $this->defaultLang;
}
/**
* Défini le type d'interface de paiement
*
* @param string $media
* @return boolean
*/
public function setMedia($media) {
if ($this->_locked)
return false;
if (!preg_match('#^[A-Z]+$#',$media))
return false;
$this->media=$media;
return true;
}
/**
* Retourne le type d'interface de paiement
*
* @return string
*/
public function getMedia() {
return $this->media;
}
/**
* Défini le public visé
*
* @param string $rating
* @return boolean
*/
public function setRating($rating) {
if ($this->_locked)
return false;
$rating = trim(substr($rating,0,HIPAY_MAPI_MAX_RATING_LENGTH));
if ($rating=='')
return false;
$this->rating=$rating;
return true;
}
/**
* Retourne le type de public visé
*
* @return string
*/
public function getRating() {
return $this->rating;
}
/**
* Défini si le paiement est simple ou récurrent
*
* @param int $paymentMethod
* @return boolean
*/
public function setPaymentMethod($paymentMethod) {
if ($this->_locked)
{
return false;
}
$paymentMethod = (int)$paymentMethod;
if ($paymentMethod!=HIPAY_MAPI_METHOD_SIMPLE && $paymentMethod!=HIPAY_MAPI_METHOD_MULTI)
return false;
$this->paymentMethod=$paymentMethod;
return true;
}
/**
* Retourne le type de paiement (simple ou récurrent)
*
* @return int
*/
public function getPaymentMethod() {
return $this->paymentMethod;
}
/**
* Défini le délai de capture
*
* @param int $captureDay
* @return boolean
*/
public function setCaptureDay($captureDay) {
if ($this->_locked)
return false;
$captureDay = (int)$captureDay;
if (($captureDay!=HIPAY_MAPI_CAPTURE_MANUAL && $captureDay!=HIPAY_MAPI_CAPTURE_IMMEDIATE && $captureDay<=0) || $captureDay>HIPAY_MAPI_CAPTURE_MAX_DAYS)
return false;
$this->captureDay=$captureDay;
return true;
}
/**
* Retourne le délai de capture
*
* @return int
*/
public function getCaptureDay() {
return $this->captureDay;
}
/**
* Défini la devise
*
* @param string $currency
* @return boolean
*/
public function setCurrency($currency) {
if ($this->_locked)
return false;
if (!preg_match('#^[A-Z]{3}$#',$currency))
return false;
$this->currency = $currency;
return true;
}
/**
* Retourne la devise
*
* @return string
*/
public function getCurrency() {
return $this->currency;
}
/**
* Défini l'identifiant du groupe statistique auquel appartient ce paiement
*
* @param int $statsGroupId
* @return boolean
*/
public function setStatsGroupId($statsGroupId) {
if ($this->_locked)
return false;
$statsGroupId=(int)$statsGroupId;
if ($statsGroupId<0)
return false;
$this->statsGroupId=$statsGroupId;
return true;
}
/**
* Retourne l'identifiant du groupe statistique auquel appartient ce paiement
*
* @return int
*/
public function getStatsGroupId() {
return $this->statsGroupId;
}
/**
* Défini l'identifiant de cette vente chez le marchand
*
* @param string $idForMerchant
* @return boolean
*/
public function setIdForMerchant($idForMerchant) {
if ($this->_locked)
return false;
$this->idForMerchant=$idForMerchant;
return true;
}
/**
* Retourne l'identifiant de la vente pour le marchand
*
* @return string
*/
public function getIdForMerchant() {
return $this->idForMerchant;
}
/**
* Défini l'identifiant du site marchand
*
* @param int $merchantSiteId
* @return boolean
*/
public function setMerchantSiteId($merchantSiteId) {
if ($this->_locked)
return false;
$merchantSiteId=(int)$merchantSiteId;
if ($merchantSiteId<0)
return false;
$this->merchantSiteId=$merchantSiteId;
return true;
}
/**
* Retourne l'identifiant du site marchand
*
* @return int
*/
public function getMerchantSiteId() {
return $this->merchantSiteId;
}
/**
* Assigne des données marchandes
*
* @param string $merchantDatas
* @return boolean
*/
public function setMerchantDatas($key,$merchantDatas) {
if ($this->_locked)
return false;
if ($key=='')
return false;
$merchantDatas=substr($merchantDatas,0,HIPAY_MAPI_MAX_MDATAS_LENGTH);
$this->merchantDatas[$key]=$merchantDatas;
return true;
}
/**
* Retourne les données marchandes
*
* @return array
*/
public function getMerchantDatas() {
return $this->merchantDatas;
}
/**
* Assigne l'url à appeller si le paiement est ok
*
* @param string $url_ok
* @return unknown
*/
public function setUrlOk($url_ok) {
if ($this->_locked)
return false;
$url_ok = trim($url_ok);
if (!HIPAY_MAPI_UTILS::checkURL($url_ok) && $url_ok!='')
return false;
$this->url_ok=$url_ok;
return true;
}
/**
* Retourne l'url_ok
*
* @return string
*/
public function getUrlOk() {
return $this->url_ok;
}
/**
* Assigne l'url à appeller si le paiement n'est pas ok
*
* @param string $url_nok
* @return unknown
*/
public function setUrlNok($url_nok) {
if ($this->_locked)
return false;
$url_nok = trim($url_nok);
if (!HIPAY_MAPI_UTILS::checkURL($url_nok) && $url_nok!='')
return false;
$this->url_nok=$url_nok;
return true;
}
/**
* Retourne l'url_nok
*
* @return string
*/
public function getUrlNok() {
return $this->url_nok;
}
/**
* Assigne l'url à appeller si le paiement est annulé
*
* @param string $url_cancel
* @return boolean
*/
public function setUrlCancel($url_cancel) {
if ($this->_locked)
return false;
$url_cancel = trim($url_cancel);
if (!HIPAY_MAPI_UTILS::checkURL($url_cancel) && $url_cancel!='')
return false;
$this->url_cancel=$url_cancel;
return true;
}
/**
* Retourne l'url_cancel
*
* @return string
*/
public function getUrlCancel() {
return $this->url_cancel;
}
/**
* Assigne l'url à appeller pour notifier le paiement
*
* @param string $url_cancel
* @return boolean
*/
public function setUrlAck($url_ack) {
if ($this->_locked)
return false;
$url_ack = trim($url_ack);
if (!HIPAY_MAPI_UTILS::checkURL($url_ack) && $url_ack!='')
return false;
$this->url_ack=$url_ack;
return true;
}
/**
* Retourne l'url_ack
*
* @return string
*/
public function getUrlAck() {
return $this->url_ack;
}
/**
* Assigne le mot clé d'acquittement
*
* @param string $ack_wd
* @return boolean
*/
public function setAckWd($ack_wd) {
if ($this->_locked)
return false;
$ack_wd=trim($ack_wd);
if (strlen($ack_wd)>HIPAY_MAPI_MAX_ACKWD_LENGTH)
return false;
$this->ack_wd=$ack_wd;
return true;
}
/**
* Retourne le mot clé d'acquittement
*
* @return string
*/
public function getAckWd() {
return $this->ack_wd;
}
/**
* Assigne l'adresse email de notification de paiement
*
* @param string $email_ack
* @return boolean
*/
public function setEmailAck($email_ack) {
if ($this->_locked)
return false;
$email_ack=trim($email_ack);
if (strlen($email_ack)>HIPAY_MAPI_MAX_ACKMAIL_LENGTH || (!HIPAY_MAPI_UTILS::checkemail($email_ack) && $email_ack!=''))
return false;
$this->email_ack=$email_ack;
return true;
}
/**
* Retourne l'email de notification
*
* @return string
*/
public function getEmailAck() {
return $this->email_ack;
}
/**
* Assigne la couleur de fond de l'interface (#XXXXXX)
*
* @param string $bg_color
* @return boolean
*/
public function setBackgroundColor($bg_color) {
if ($this->_locked)
return false;
$bg_color = trim($bg_color);
if (!preg_match('#^\#([0-9a-f]){6}$#i', $bg_color) && $bg_color != '')
return false;
$this->bg_color = $bg_color;
return true;
}
/**
* Retourne la couleur de fond de l'interface
*
* @return string
*/
public function getBackgroundColor() {
return $this->bg_color;
}
/**
* Assigne l'url du logo du marchand
*
* @param string $logo_url
* @return boolean
*/
public function setLogoUrl($logo_url) {
if ($this->_locked)
return false;
$logo_url = trim($logo_url);
if (!HIPAY_MAPI_UTILS::checkURL($logo_url) && $logo_url!='')
return false;
$this->logo_url=$logo_url;
return true;
}
/**
* Retourne l'url du logo du marchand
*
* @return string
*/
public function getLogoUrl() {
return $this->logo_url;
}
/**
* Vérifie que l'objet est correctement initialisé
*
* @return boolean
*/
public function check() {
if ($this->login=='')
throw new Exception('Nom d\'utilisateur manquant');
if ($this->itemAccount<=0 || $this->taxAccount<=0 || $this->insuranceAccount <=0 ||
$this->fixedCostAccount<=0 || $this->shippingCostAccount<=0)
throw new Exception('Numéros de compte invalides');
if ($this->rating=='')
throw new Exception('Type de public visé invalide');
if ($this->paymentMethod<0)
throw new Exception('Type de paiement invalide');
if ($this->captureDay==-100)
throw new Exception('Délai de capture invalide ');
if ($this->currency=='')
throw new Exception('Devise non-définie');
if ($this->idForMerchant<0)
throw new Exception('ID chez le marchand manquant');
if ($this->idForMerchant>0)
if ($this->password=='')
throw new Exception('Mot de passe manquant');
if ($this->statsGroupId<0)
throw new Exception('ID groupe est négatif');
if ($this->merchantSiteId<0)
throw new Exception('ID du site marchand manquant');
return true;
}
protected function init() {
$this->login='';
$this->password='';
$this->itemAccount=0;
$this->taxAccount=0;
$this->insuranceAccount=0;
$this->fixedCostAccount=0;
$this->shippingCostAccount=0;
$this->defaultLang=HIPAY_MAPI_DEFLANG;
$this->media=HIPAY_MAPI_DEFMEDIA;
$this->rating='';
$this->paymentMethod=-1;
$this->captureDay=-100;
$this->currency='';
$this->idForMerchant=-1;
$this->statsGroupId=0;
$this->merchantSiteId=-1;
$this->merchantDatas=array();
$this->url_ok='';
$this->url_nok='';
$this->url_cancel='';
$this->url_ack='';
$this->ack_wd='';
$this->email_ack='';
$this->bg_color='';
$this->logo_url='';
}
function __construct() {
$this->init();
parent::__construct();
}
}
?>