This commit is contained in:
@@ -1,229 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Objet représentant un affilié
|
||||
* montant de base : montant à partir duquel est calculé le montant qui sera distribué à l'affilié
|
||||
* cible : si l'affiliation est un piurcentage, la cible indique sur quels montant de la transaction
|
||||
* s'applique ce pourcentage
|
||||
* montant calculé : montant reversé à l'affilié
|
||||
*
|
||||
*
|
||||
*/
|
||||
class HIPAY_MAPI_Affiliate extends HIPAY_MAPI_lockable {
|
||||
/**
|
||||
* Numéro de client
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $customerId;
|
||||
|
||||
/**
|
||||
* Numéro de compte
|
||||
*
|
||||
* @var unknown_type
|
||||
*/
|
||||
protected $accountId;
|
||||
|
||||
/**
|
||||
* Valeur de l'affiliation (montant fixe ou pourcentage)
|
||||
*
|
||||
* @var float
|
||||
*/
|
||||
protected $val;
|
||||
|
||||
/**
|
||||
* Si >0, $val est un pourcentage et $percentageTarget détermine
|
||||
* sur quels montants appliquer le pourcentage
|
||||
*
|
||||
* @var unknown_type
|
||||
*/
|
||||
protected $percentageTarget;
|
||||
|
||||
/**
|
||||
* Montant à reversé à l'affilié
|
||||
*
|
||||
* @var unknown_type
|
||||
*/
|
||||
protected $_amount;
|
||||
|
||||
/**
|
||||
* Montant de base sur lequel est calculé le montant
|
||||
* reversé à l'affilié
|
||||
*
|
||||
* @var unknown_type
|
||||
*/
|
||||
protected $_baseAmount;
|
||||
|
||||
|
||||
/**
|
||||
* Assigne le numéro de client
|
||||
*
|
||||
* @param int $customerId
|
||||
* @return boolean
|
||||
*/
|
||||
public function setCustomerId($customerId) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$customerId = (int)$customerId;
|
||||
if ($customerId<=0)
|
||||
return false;
|
||||
$this->customerId = $customerId;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le numéro de client
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getCustomerId() {
|
||||
return $this->customerId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigne le numéro de compte
|
||||
*
|
||||
* @param int $accountId
|
||||
* @return boolean
|
||||
*/
|
||||
public function setAccountId($accountId) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$accountId = (int)$accountId;
|
||||
if ($accountId<=0)
|
||||
return false;
|
||||
$this->accountId = $accountId;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le numéro de compte
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getAccountId() {
|
||||
return $this->accountId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigne le valeur de l'affiliation, qui est un montant fixe ou un pourcentage
|
||||
* S'il s'agit d'un pourcentage, $percentageTarget représente la cible, c'est à dire sur quels
|
||||
* montants est basé le montant de l'affiliation
|
||||
*
|
||||
* @param float $val
|
||||
* @param int $percentageTarget
|
||||
* @return boolean
|
||||
*/
|
||||
public function setValue($val,$percentageTarget=0) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$val = sprintf('%.02f',(float)$val);
|
||||
$percentageTarget = (int)$percentageTarget;
|
||||
if ($val<=0 || $percentageTarget<0)
|
||||
return false;
|
||||
if ($percentageTarget>0 && $val>100)
|
||||
return false;
|
||||
if ($percentageTarget>0 && $percentageTarget>HIPAY_MAPI_TTARGET_ALL)
|
||||
return false;
|
||||
$this->val = $val;
|
||||
$this->percentageTarget = $percentageTarget;
|
||||
$this->setAmount();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne la valeur de l'affiliation
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getValue() {
|
||||
return $this->val;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne sur quoi s'applique le pourcentage
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getPercentageTarget() {
|
||||
return $this->percentageTarget;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigne le montant sur lequel sera calculé l'affiliation
|
||||
*
|
||||
* @param float $baseAmount
|
||||
* @return boolean
|
||||
*/
|
||||
public function setBaseAmount($baseAmount) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$baseAmount = sprintf('%.02f',(float)$baseAmount);
|
||||
|
||||
if ($baseAmount<0)
|
||||
return false;
|
||||
$this->_baseAmount = $baseAmount;
|
||||
$this->setAmount();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant sur lequel sera calculé l'affiliation
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getBaseAmount() {
|
||||
return $this->_baseAmount;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retourne le montant calculé de l'affiliation
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getAmount() {
|
||||
return $this->_amount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigne le montant calculé de l'affiliation
|
||||
*
|
||||
*/
|
||||
protected function setAmount() {
|
||||
if ($this->percentageTarget>0) {
|
||||
$this->_amount = sprintf('%.02f',($this->_baseAmount/100)*$this->val);
|
||||
} else {
|
||||
$this->_amount = sprintf('%.02f',$this->_baseAmount);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie que l'objet est bien initialisé
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function check() {
|
||||
if ($this->customerId<=0 || $this->accountId<=0 || $this->val<=0 || $this->percentageTarget<0)
|
||||
throw new Exception('Numéro de client, numéro de compte, valeur ou cible incorrects');
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function init() {
|
||||
$this->customerId = 0;
|
||||
$this->accountId = 0;
|
||||
$this->_amount = 0;
|
||||
$this->_baseAmount = 0;
|
||||
$this->val = 0;
|
||||
$this->percentageTarget = 0;
|
||||
}
|
||||
|
||||
|
||||
function __construct() {
|
||||
$this->init();
|
||||
parent::__construct();
|
||||
}
|
||||
}
|
||||
@@ -1,122 +0,0 @@
|
||||
<?php
|
||||
class HIPAY_MAPI_COMM_XML
|
||||
{
|
||||
/**
|
||||
* Traitement de la réponse de la plateforme après l'envoi du
|
||||
* flux représentant un paiement
|
||||
*
|
||||
* @param string $xml
|
||||
* @param string $url
|
||||
* @param string $err_msg
|
||||
* @param string $err_keyword
|
||||
* @param string $err_value
|
||||
* @param string $err_code
|
||||
* @return boolean
|
||||
*/
|
||||
public static function analyzeResponseXML($xml,&$url,&$err_msg,&$err_keyword,&$err_value,&$err_code)
|
||||
{
|
||||
$url='';
|
||||
$err_msg='';
|
||||
$err_keyword='';
|
||||
$err_value='';
|
||||
$err_code='';
|
||||
try {
|
||||
$obj = @new SimpleXMLElement(trim($xml));
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
}
|
||||
if (isset($obj->result[0]->url)) {
|
||||
$url = $obj->result[0]->url;
|
||||
return true;
|
||||
}
|
||||
if (isset($obj->result[0]->message))
|
||||
$err_msg = $obj->result[0]->message;
|
||||
if (isset($obj->result[0]->keyword))
|
||||
$err_keyword = $obj->result[0]->keyword;
|
||||
if (isset($obj->result[0]->value))
|
||||
$err_value = $obj->result[0]->value;
|
||||
if (isset($obj->result[0]->code))
|
||||
$err_code = $obj->result[0]->code;
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Traitement du flux XML envoyé par HiPay notifiant le résultat d'une action sur une transaction
|
||||
*
|
||||
* @param string $xml
|
||||
* @param unknown_type $status
|
||||
* @param string $date
|
||||
* @param string $time
|
||||
* @param string $transid
|
||||
* @param string $origAmount
|
||||
* @param string $origCurrency
|
||||
* @param string $idformerchant
|
||||
* @param array $merchantdatas
|
||||
* @return boolean
|
||||
*/
|
||||
public static function analyzeNotificationXML($xml,&$operation,&$status,&$date,&$time,&$transid,&$origAmount,&$origCurrency,&$idformerchant,&$merchantdatas)
|
||||
{
|
||||
$operation='';
|
||||
$status='';
|
||||
$date='';
|
||||
$time='';
|
||||
$transid='';
|
||||
$origAmount='';
|
||||
$origCurrency='';
|
||||
$idformerchant='';
|
||||
$merchantdatas=array();
|
||||
try {
|
||||
$obj = new SimpleXMLElement(trim($xml));
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
}
|
||||
if (isset($obj->result[0]->operation))
|
||||
$operation=$obj->result[0]->operation;
|
||||
else return false;
|
||||
|
||||
if (isset($obj->result[0]->status))
|
||||
$status=$obj->result[0]->status;
|
||||
else return false;
|
||||
|
||||
if (isset($obj->result[0]->date))
|
||||
$date=$obj->result[0]->date;
|
||||
else return false;
|
||||
|
||||
if (isset($obj->result[0]->time))
|
||||
$time=$obj->result[0]->time;
|
||||
else return false;
|
||||
|
||||
if (isset($obj->result[0]->transid))
|
||||
$transid=$obj->result[0]->transid;
|
||||
else return false;
|
||||
|
||||
if (isset($obj->result[0]->origAmount))
|
||||
$origAmount=$obj->result[0]->origAmount;
|
||||
else return false;
|
||||
|
||||
if (isset($obj->result[0]->origCurrency))
|
||||
$origCurrency=$obj->result[0]->origCurrency;
|
||||
else return false;
|
||||
|
||||
if (isset($obj->result[0]->idForMerchant))
|
||||
$idformerchant=$obj->result[0]->idForMerchant;
|
||||
else return false;
|
||||
|
||||
if (isset($obj->result[0]->merchantDatas)) {
|
||||
$d = $obj->result[0]->merchantDatas->children();
|
||||
foreach($d as $xml2) {
|
||||
if (preg_match('#^_aKey_#i',$xml2->getName())) {
|
||||
$indice = substr($xml2->getName(),6);
|
||||
$xml2 = (array)$xml2;
|
||||
$valeur = (string)$xml2[0];
|
||||
$merchantdatas[$indice]=$valeur;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Définition des montants sur lesquels s'appliquent les taxes
|
||||
*
|
||||
*/
|
||||
define('HIPAY_MAPI_TTARGET_TAX', 1);
|
||||
define('HIPAY_MAPI_TTARGET_INSURANCE', 2);
|
||||
define('HIPAY_MAPI_TTARGET_FCOST', 4);
|
||||
define('HIPAY_MAPI_TTARGET_SHIPPING', 8);
|
||||
define('HIPAY_MAPI_TTARGET_ITEM', 16);
|
||||
define('HIPAY_MAPI_TTARGET_ALL',HIPAY_MAPI_TTARGET_TAX+HIPAY_MAPI_TTARGET_INSURANCE+HIPAY_MAPI_TTARGET_FCOST+HIPAY_MAPI_TTARGET_SHIPPING+HIPAY_MAPI_TTARGET_ITEM);
|
||||
|
||||
/**
|
||||
* Type de paiements possibles
|
||||
*
|
||||
*/
|
||||
define('HIPAY_MAPI_METHOD_SIMPLE',0);
|
||||
define('HIPAY_MAPI_METHOD_MULTI',1);
|
||||
|
||||
/**
|
||||
* Valeurs par défaut
|
||||
*
|
||||
*/
|
||||
define('HIPAY_MAPI_DEFLANG','FR_fr');
|
||||
define('HIPAY_MAPI_DEFMEDIA','WEB');
|
||||
|
||||
define('HIPAY_MAPI_MAX_INFO_LENGTH',200);
|
||||
define('HIPAY_MAPI_MAX_TITLE_LENGTH',80);
|
||||
|
||||
define('HIPAY_MAPI_MAX_LOGIN_LENGTH',20);
|
||||
define('HIPAY_MAPI_MAX_PASSWORD_LENGTH',20);
|
||||
|
||||
define('HIPAY_MAPI_MAX_RATING_LENGTH',8);
|
||||
|
||||
define('HIPAY_MAPI_MAX_MDATAS_LENGTH',200);
|
||||
|
||||
define('HIPAY_MAPI_MAX_ACKWD_LENGTH',8);
|
||||
|
||||
define('HIPAY_MAPI_MAX_ACKMAIL_LENGTH',64);
|
||||
|
||||
define('HIPAY_MAPI_MAX_PRODUCT_NAME_LENGTH',100);
|
||||
|
||||
define('HIPAY_MAPI_MAX_PRODUCT_INFO_LENGTH',100);
|
||||
|
||||
define('HIPAY_MAPI_MAX_PRODUCT_REF_LENGTH',35);
|
||||
|
||||
define('HIPAY_MAPI_MAX_TAX_NAME_LENGTH',32);
|
||||
|
||||
/**
|
||||
* Valeurs particulières pour le délai de capture
|
||||
*
|
||||
*/
|
||||
define('HIPAY_MAPI_CAPTURE_MANUAL',-1);
|
||||
define('HIPAY_MAPI_CAPTURE_IMMEDIATE',0);
|
||||
define('HIPAY_MAPI_CAPTURE_MAX_DAYS',7);
|
||||
|
||||
define('HIPAY_MAPI_OPE_PREAUTH','preauthorization');
|
||||
define('HIPAY_MAPI_OPE_AUTH','authorization');
|
||||
define('HIPAY_MAPI_OPE_CANCEL','cancellation');
|
||||
define('HIPAY_MAPI_OPE_REFUND','refund');
|
||||
define('HIPAY_MAPI_OPE_CAPTURE','capture');
|
||||
define('HIPAY_MAPI_OPE_REJECT','rejet');
|
||||
|
||||
define('HIPAY_MAPI_STATUS_OK','ok');
|
||||
define('HIPAY_MAPI_STATUS_NOK','nok');
|
||||
|
||||
// Nombre de secondes avant le timeout de curl avec le serveur Hipay
|
||||
// A régler en fonction de votre rapidité d'accès à la plate forme hipay
|
||||
define('HIPAY_MAPI_CURL_TIMEOUT', 30);
|
||||
|
||||
// Configuration d'un serveur proxy
|
||||
// activer cette option a true pour demander au curl de passer par un proxy
|
||||
define('HIPAY_MAPI_CURL_PROXY_ON', false);
|
||||
// Adresse du proxy
|
||||
define('HIPAY_MAPI_CURL_PROXY', 'http://');
|
||||
// port du proxy
|
||||
define('HIPAY_MAPI_CURL_PROXYPORT','');
|
||||
|
||||
// Configuration d'un fichier de log pour curl en cas de pb de connexion avec le serveur Hipay
|
||||
define('HIPAY_MAPI_CURL_LOG_ON', false);
|
||||
// fichier de log de curl (sous environnement windows, le chemin du fichier pourra être de type C:\tmp\mapicurl.log)
|
||||
define('HIPAY_MAPI_CURL_LOGFILE', '/tmp/curl.log');
|
||||
|
||||
define('MAPI_VERSION','1.0');
|
||||
|
||||
@@ -1,126 +0,0 @@
|
||||
<?php
|
||||
define('MAPI_EXCEPTION_AFFILIATE_BASE_ERROR',101);
|
||||
define('MAPI_EXCEPTION_AFFILIATE_UNKNOWN_AFFILIATE',102);
|
||||
define('MAPI_EXCEPTION_AFFILIATE_INCORRECT_EU',103);
|
||||
define('MAPI_EXCEPTION_AFFILIATE_CUSTOMER_ID_ERROR',104);
|
||||
define('MAPI_EXCEPTION_AFFILIATE_ACCOUNT_ID_ERROR',105);
|
||||
define('MAPI_EXCEPTION_AFFILIATE_VALUE_ERROR',106);
|
||||
define('MAPI_EXCEPTION_AFFILIATE_INCORRECT_TAG',107);
|
||||
|
||||
|
||||
define('MAPI_EXCEPTION_INSTALLMENT_BASE_ERROR',201);
|
||||
define('MAPI_EXCEPTION_INSTALLMENT_SETFIRST_ERROR',202);
|
||||
define('MAPI_EXCEPTION_INSTALLMENT_FIRST_BOOLEAN',203);
|
||||
define('MAPI_EXCEPTION_INSTALLMENT_PRICE_ERROR',204);
|
||||
define('MAPI_EXCEPTION_INSTALLMENT_INCORRECT_TAG',205);
|
||||
define('MAPI_EXCEPTION_INSTALLMENT_TAX_ERROR',206);
|
||||
|
||||
|
||||
define('MAPI_EXCEPTION_MULTIPLEP_ORDER_TAG_CONTENT_ERROR',301);
|
||||
define('MAPI_EXCEPTION_MULTIPLEP_ORDER_TAG_TOO_MANY_OBJECTS',302);
|
||||
define('MAPI_EXCEPTION_MULTIPLEP_ITEMS_TAG_CONTENT_ERROR',303);
|
||||
define('MAPI_EXCEPTION_MULTIPLEP_ITEMS_TAG_TOO_MANY_OBJECTS',304);
|
||||
define('MAPI_EXCEPTION_MULTIPLEP_INCORRECT_TAG',305);
|
||||
define('MAPI_EXCEPTION_MULTIPLEP_CONSTRUCT_ERROR',306);
|
||||
|
||||
|
||||
define('MAPI_EXCEPTION_ORDER_BASE_ERROR',401);
|
||||
define('MAPI_EXCEPTION_ORDER_UNKNOWN_CATEGORY',402);
|
||||
define('MAPI_EXCEPTION_ORDER_TITLE_ERROR',403);
|
||||
define('MAPI_EXCEPTION_ORDER_INFO_ERROR',404);
|
||||
define('MAPI_EXCEPTION_ORDER_UNKNOWN_TAG',405);
|
||||
define('MAPI_EXCEPTION_ORDER_SHIPPING_ERROR',406);
|
||||
define('MAPI_EXCEPTION_ORDER_INSURANCE_ERROR',407);
|
||||
define('MAPI_EXCEPTION_ORDER_FCOST_ERROR',408);
|
||||
define('MAPI_EXCEPTION_ORDER_AFFILIATE_ERROR',409);
|
||||
|
||||
|
||||
define('MAPI_EXCEPTION_SIMPLEP_ORDER_TAG_CONTENT_ERROR',501);
|
||||
define('MAPI_EXCEPTION_SIMPLEP_ITEMS_TAG_CONTENT_ERROR',502);
|
||||
define('MAPI_EXCEPTION_SIMPLEP_INCORRECT_TAG',503);
|
||||
define('MAPI_EXCEPTION_SIMPLEP_CONSTRUCT_ERROR',504);
|
||||
|
||||
define('MAPI_EXCEPTION_PARAMS_BASE_ERROR',601);
|
||||
define('MAPI_EXCEPTION_PARAMS_INCORRECT_LOGIN',602);
|
||||
define('MAPI_EXCEPTION_PARAMS_INCORRECT_PASSWORD',603);
|
||||
define('MAPI_EXCEPTION_PARAMS_INCORRECT_LOGIN_2',604);
|
||||
define('MAPI_EXCEPTION_PARAMS_UNKNOWN_ITEM_ACCT',605);
|
||||
define('MAPI_EXCEPTION_PARAMS_FORBIDDEN_ITEM_ACCT',606);
|
||||
define('MAPI_EXCEPTION_PARAMS_UNKNOWN_ITEM_ACCT_2',607);
|
||||
define('MAPI_EXCEPTION_PARAMS_UNKNOWN_TAX_ACCT',608);
|
||||
define('MAPI_EXCEPTION_PARAMS_FORBIDDEN_TAX_ACCT',609);
|
||||
define('MAPI_EXCEPTION_PARAMS_UNKNOWN_TAX_ACCT_2',610);
|
||||
define('MAPI_EXCEPTION_PARAMS_UNKNOWN_INS_ACCT',611);
|
||||
define('MAPI_EXCEPTION_PARAMS_FORBIDDEN_INS_ACCT',612);
|
||||
define('MAPI_EXCEPTION_PARAMS_UNKNOWN_INS_ACCT_2',613);
|
||||
define('MAPI_EXCEPTION_PARAMS_UNKNOWN_FCOST_ACCT',614);
|
||||
define('MAPI_EXCEPTION_PARAMS_FORBIDDEN_FCOST_ACCT',615);
|
||||
define('MAPI_EXCEPTION_PARAMS_UNKNOWN_FCOST_ACCT_2',616);
|
||||
define('MAPI_EXCEPTION_PARAMS_UNKNOWN_SHIP_ACCT',617);
|
||||
define('MAPI_EXCEPTION_PARAMS_FORBIDDEN_SHIP_ACCT',618);
|
||||
define('MAPI_EXCEPTION_PARAMS_UNKNOWN_SHIP_ACCT_2',619);
|
||||
define('MAPI_EXCEPTION_PARAMS_UNKNOWN_EU_ID',620);
|
||||
define('MAPI_EXCEPTION_PARAMS_NO_LANG_AVAILABLE',621);
|
||||
define('MAPI_EXCEPTION_PARAMS_LANG_NOT_SUPPORTED',622);
|
||||
define('MAPI_EXCEPTION_PARAMS_NO_MEDIA_AVAILABLE',623);
|
||||
define('MAPI_EXCEPTION_PARAMS_MEDIA_NOT_SUPPORTED',624);
|
||||
define('MAPI_EXCEPTION_PARAMS_INCORRECT_RATING',625);
|
||||
define('MAPI_EXCEPTION_PARAMS_INCORRECT_PAYMENT_METHOD',626);
|
||||
define('MAPI_EXCEPTION_PARAMS_INCORRECT_CURRENCY',627);
|
||||
define('MAPI_EXCEPTION_PARAMS_INCORRECT_MERCH_SITE_ID',628);
|
||||
define('MAPI_EXCEPTION_PARAMS_LANG_ERROR',629);
|
||||
define('MAPI_EXCEPTION_PARAMS_MEDIA_ERROR',630);
|
||||
define('MAPI_EXCEPTION_PARAMS_RATING_ERROR',631);
|
||||
define('MAPI_EXCEPTION_PARAMS_METHOD_ERROR',632);
|
||||
define('MAPI_EXCEPTION_PARAMS_CAPTURE_DAY_ERROR',633);
|
||||
define('MAPI_EXCEPTION_PARAMS_CURRENCY_ERROR',634);
|
||||
define('MAPI_EXCEPTION_PARAMS_ID_MERCHANT_ERROR',635);
|
||||
define('MAPI_EXCEPTION_PARAMS_SITE_ID_ERROR',636);
|
||||
define('MAPI_EXCEPTION_PARAMS_URLOK_ERROR',637);
|
||||
define('MAPI_EXCEPTION_PARAMS_URLNOK_ERROR',638);
|
||||
define('MAPI_EXCEPTION_PARAMS_URLCAN_ERROR',639);
|
||||
define('MAPI_EXCEPTION_PARAMS_URLACK_ERROR',640);
|
||||
define('MAPI_EXCEPTION_PARAMS_ACKWD_ERROR',641);
|
||||
define('MAPI_EXCEPTION_PARAMS_EMAILACK_ERROR',642);
|
||||
define('MAPI_EXCEPTION_PARAMS_BGCOLOR_ERROR',643);
|
||||
define('MAPI_EXCEPTION_PARAMS_URLLOGO_ERROR',644);
|
||||
define('MAPI_EXCEPTION_PARAMS_MDATAS_ERROR',645);
|
||||
define('MAPI_EXCEPTION_PARAMS_UNKNOWN_TAG',646);
|
||||
define('MAPI_EXCEPTION_PARAMS_LOGIN_ERROR',647);
|
||||
define('MAPI_EXCEPTION_PARAMS_ACCTS_ERROR',648);
|
||||
define('MAPI_EXCEPTION_PARAMS_ID_GROUP_ERROR',649);
|
||||
|
||||
|
||||
define('MAPI_EXCEPTION_PRODUCT_BASE_ERROR',701);
|
||||
define('MAPI_EXCEPTION_PRODUCT_NAME_ERROR',702);
|
||||
define('MAPI_EXCEPTION_PRODUCT_INFO_ERROR',703);
|
||||
define('MAPI_EXCEPTION_PRODUCT_QUANTITY_ERROR',704);
|
||||
define('MAPI_EXCEPTION_PRODUCT_REF_ERROR',705);
|
||||
define('MAPI_EXCEPTION_PRODUCT_CATEGORY_ERROR',706);
|
||||
define('MAPI_EXCEPTION_PRODUCT_PRICE_ERROR',707);
|
||||
define('MAPI_EXCEPTION_PRODUCT_INCORRECT_TAG',708);
|
||||
define('MAPI_EXCEPTION_PRODUCT_TAX_ERROR',709);
|
||||
|
||||
define('MAPI_EXCEPTION_TAX_BASE_ERROR',801);
|
||||
define('MAPI_EXCEPTION_TAX_NAME_ERROR',802);
|
||||
define('MAPI_EXCEPTION_TAX_ACCOUNT_ERROR',803);
|
||||
define('MAPI_EXCEPTION_TAX_PERCENTAGE_NOT_BOOLEAN_ERROR',804);
|
||||
define('MAPI_EXCEPTION_TAX_VALUE_ERROR',805);
|
||||
define('MAPI_EXCEPTION_TAX_INCORRECT_TAG',806);
|
||||
|
||||
class MAPI_Exception extends Exception {
|
||||
private $keyword;
|
||||
private $value;
|
||||
function __construct($keyword,$value,$msg,$code=0) {
|
||||
$this->keyword=$keyword;
|
||||
$this->value=$value;
|
||||
parent::__construct($msg,$code);
|
||||
}
|
||||
|
||||
public function getKeyword() {
|
||||
return $this->keyword;
|
||||
}
|
||||
public function getValue() {
|
||||
return $this->value;
|
||||
}
|
||||
}
|
||||
@@ -1,208 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Représente la ligne de la commande pour un paiement récurrent
|
||||
*
|
||||
*/
|
||||
class HIPAY_MAPI_Installment extends HIPAY_MAPI_Item {
|
||||
|
||||
/**
|
||||
* Montant HT
|
||||
*
|
||||
* @var float
|
||||
*/
|
||||
protected $price;
|
||||
|
||||
/**
|
||||
* Taxes s'appliquant à ce paiement
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $tax;
|
||||
|
||||
/**
|
||||
* Indique s'il s'agit du premier paiement (true) ou des suivants (false)
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $first;
|
||||
|
||||
/**
|
||||
* Délai avant le déclenchement du premier paiement (si $first=true),
|
||||
* ou interval entre les paiements suivants (si $first=false)
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $paymentDelay;
|
||||
|
||||
/**
|
||||
* timestamp du premier paiement ou des paiements récurrents
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_delayTS;
|
||||
|
||||
|
||||
/**
|
||||
* Assigne le montant HT
|
||||
*
|
||||
* @param float $price
|
||||
* @return boolean
|
||||
*/
|
||||
public function setPrice($price) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$price = sprintf('%.02f',(float)$price);
|
||||
if ($price<0)
|
||||
return false;
|
||||
$this->price=$price;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant HT
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getPrice() {
|
||||
return $this->price;
|
||||
}
|
||||
|
||||
/**
|
||||
* Défini s'il s'agit du premier paiement ou des suivants et le délai de déclenchement
|
||||
*
|
||||
* @param boolean $first
|
||||
* @param string $paymentDelay
|
||||
* @return boolean
|
||||
*/
|
||||
public function setFirst($first,$paymentDelay) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
if (!is_bool($first))
|
||||
return false;
|
||||
$paymentDelay=trim($paymentDelay);
|
||||
if ($first) {
|
||||
if (!preg_match("#[0-9]+[HDM]#",$paymentDelay))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (!preg_match("#[0-9]+[DM]#",$paymentDelay)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
$num = (int)substr($paymentDelay,0,strlen($paymentDelay)-1);
|
||||
if (($num<1 && !$first) || ($num<0 && $first) || $num>365) {
|
||||
return false;
|
||||
}
|
||||
$this->first=$first;
|
||||
$this->paymentDelay=$paymentDelay;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigne les taxes s'appliquant à ce paiement
|
||||
*
|
||||
* @param array $tax
|
||||
* @return boolean
|
||||
*/
|
||||
public function setTax($tax) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
if (!HIPAY_MAPI_UTILS::is_an_array_of($tax,'HIPAY_MAPI_Tax'))
|
||||
return false;
|
||||
foreach ($tax as $obj)
|
||||
$this->tax[]= clone $obj;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* assigne le timestamp du premier paiement ou des paiements récurrents
|
||||
*
|
||||
*/
|
||||
public function setDelayTS( $baseTS=0 )
|
||||
{
|
||||
if( (int)$baseTS <= 0 ) {
|
||||
$baseTS = time();
|
||||
}
|
||||
|
||||
switch( substr($this->paymentDelay, -1, 1) ) {
|
||||
case 'd': case 'D': $unit='day'; break;
|
||||
case 'm': case 'M': $unit='month'; break;
|
||||
case 'h': case 'H':
|
||||
default : $unit='hour'; break;
|
||||
}
|
||||
|
||||
$this->_delayTS = strtotime( '+'.substr($this->paymentDelay, 0, -1).' '.$unit, $baseTS );
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne les taxes s'appliquant à ce paiement
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getTax() {
|
||||
return $this->tax;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne s'il s'agit du premier paiement
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function getFirst() {
|
||||
return $this->first;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le délai de déclenchement
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPaymentDelay() {
|
||||
return $this->paymentDelay;
|
||||
}
|
||||
|
||||
/**
|
||||
* retourne le timestamp du premier paiement
|
||||
*
|
||||
*/
|
||||
public function getDelayTS()
|
||||
{
|
||||
return $this->_delayTS;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie si l'objet est correctement initialisé
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function check() {
|
||||
if ($this->price<0)
|
||||
throw new Exception('Montant invalide ou pas initilisé');
|
||||
if (!HIPAY_MAPI_UTILS::is_an_array_of($this->tax,'HIPAY_MAPI_Tax'))
|
||||
throw new Exception('Taxes invalides ou pas initialisées');
|
||||
foreach($this->tax as $obj) {
|
||||
if (!$obj->check())
|
||||
return false;
|
||||
}
|
||||
if (!is_bool($this->first))
|
||||
throw new Exception('Premier paiement ou suivant n\'est pas initialisé');
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function init()
|
||||
{
|
||||
$this->price = -1;
|
||||
$this->tax = array();
|
||||
$this->first = '';
|
||||
$this->paymentDelay = '';
|
||||
$this->_delayTS = '';
|
||||
}
|
||||
|
||||
function __construct() {
|
||||
$this->init();
|
||||
parent::__construct();
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Représente une ligne de la commande
|
||||
*
|
||||
*/
|
||||
class HIPAY_MAPI_Item extends HIPAY_MAPI_lockable {
|
||||
function __construct() {
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function getName() {
|
||||
return '';
|
||||
}
|
||||
public function getInfo() {
|
||||
return '';
|
||||
}
|
||||
public function getQuantity() {
|
||||
return 1;
|
||||
}
|
||||
public function getRef() {
|
||||
return '';
|
||||
}
|
||||
public function getCategory() {
|
||||
return 1;
|
||||
}
|
||||
public function getPrice() {
|
||||
return 0;
|
||||
}
|
||||
public function getTax() {
|
||||
return array();
|
||||
}
|
||||
public function check() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
<?php
|
||||
class HIPAY_MAPI_lockable extends HIPAY_MAPI_XML {
|
||||
/**
|
||||
* Etat du vérou
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $_locked;
|
||||
|
||||
/**
|
||||
* Vérouille l'objet
|
||||
*
|
||||
*/
|
||||
public function lock() {
|
||||
$this->_locked=true;
|
||||
}
|
||||
|
||||
function __construct() {
|
||||
$this->_locked=false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Représente un paiement récurrent
|
||||
* Un paiement simple contient :
|
||||
* - 1 objet paramètres HIPAY_MAPI_PaymentParams
|
||||
* - 1 objet order pour le premier paiement HIPAY_MAPI_Order
|
||||
* - 1 objet installment pour le premier paiement HIPAY_MAPI_Installment
|
||||
* - 1 objet order pour le second paiement HIPAY_MAPI_Order
|
||||
* - 1 objet installment pour le second paiement HIPAY_MAPI_Installment
|
||||
*
|
||||
*/
|
||||
|
||||
class HIPAY_MAPI_MultiplePayment extends HIPAY_MAPI_Payment {
|
||||
function __construct(HIPAY_MAPI_PaymentParams $paymentParams,HIPAY_MAPI_Order $firstOrder,HIPAY_MAPI_Installment $firstInstallment,HIPAY_MAPI_Order $nextOrder,HIPAY_MAPI_Installment $nextInstallment) {
|
||||
if ($firstInstallment->getFirst()===$nextInstallment->getFirst() || !$firstInstallment->getFirst()) {
|
||||
throw new Exception('Vous devez définir un objet installment pour le premier et les paiements suivants');
|
||||
}
|
||||
$firstInstallment->setDelayTS();
|
||||
$nextInstallment->setDelayTS( $firstInstallment->getDelayTS() );
|
||||
try {
|
||||
parent::__construct($paymentParams,array($firstOrder,$nextOrder),array($firstInstallment,$nextInstallment));
|
||||
} catch(Exception $e) {
|
||||
throw new Exception($e->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant total de la somme devant être
|
||||
* distribuée aux affiliés
|
||||
*/
|
||||
protected function _getTotalAmountForAffiliates($installement_nr) {
|
||||
$affiliates=$this->order[0]->getAffiliate();
|
||||
if (!HIPAY_MAPI_UTILS::is_an_array_of($affiliates,'HIPAY_MAPI_Affiliate'))
|
||||
return false;
|
||||
$total_aff = 0;
|
||||
foreach($affiliates as $aff) {
|
||||
$total_aff+=$aff->getAmount();
|
||||
}
|
||||
return $total_aff;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,370 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Objet représentant les informations de la commande
|
||||
*
|
||||
*/
|
||||
class HIPAY_MAPI_Order extends HIPAY_MAPI_lockable {
|
||||
|
||||
/**
|
||||
* Montant des frais de livraison
|
||||
*
|
||||
* @var float
|
||||
*/
|
||||
protected $shippingAmount;
|
||||
|
||||
/**
|
||||
* Taxes s'appliquants aux frais de livraison
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $shippingTax;
|
||||
|
||||
/**
|
||||
* Montant des assurances
|
||||
*
|
||||
* @var float
|
||||
*/
|
||||
protected $insuranceAmount;
|
||||
|
||||
/**
|
||||
* Taxes s'appliquants aux assurances
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $insuranceTax;
|
||||
|
||||
/**
|
||||
* Montant des coûts fixes
|
||||
*
|
||||
* @var float
|
||||
*/
|
||||
protected $fixedCostAmount;
|
||||
|
||||
/**
|
||||
* Taxes s'appliquants aux coûts fixes
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $fixedCostTax;
|
||||
|
||||
/**
|
||||
* Affiliés
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $affiliate;
|
||||
|
||||
/**
|
||||
* Intitulé de la commande
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $orderTitle;
|
||||
|
||||
/**
|
||||
* Informations sur la commande
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $orderInfo;
|
||||
|
||||
/**
|
||||
* Catégorie de la commande
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $orderCategory;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Défini le montant des frais d'envoi et les taxes s'y appliquant
|
||||
*
|
||||
* @param float $shippingAmount
|
||||
* @param array $shippingTax
|
||||
* @return boolean
|
||||
*/
|
||||
public function setShipping($shippingAmount,$shippingTax) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$shippingAmount = sprintf('%.02f',(float)$shippingAmount);
|
||||
if ($shippingAmount<0) {
|
||||
return false;
|
||||
}
|
||||
if (!HIPAY_MAPI_UTILS::is_an_array_of($shippingTax,'HIPAY_MAPI_Tax')) {
|
||||
return false;
|
||||
}
|
||||
$this->shippingAmount=$shippingAmount;
|
||||
foreach ($shippingTax as $obj)
|
||||
$this->shippingTax[]= clone $obj;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant des frais d'envoi
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getShippingAmount() {
|
||||
return $this->shippingAmount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne les taxes s'appliquants aux frais d'envoi
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function &getShippingTax() {
|
||||
return $this->shippingTax;
|
||||
}
|
||||
|
||||
/**
|
||||
* Défini le montant des assurances
|
||||
*
|
||||
* @param float $insuranceAmount
|
||||
* @param array $insuranceTax
|
||||
* @return boolean
|
||||
*/
|
||||
public function setInsurance($insuranceAmount,$insuranceTax) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$insuranceAmount = sprintf('%.02f',(float)$insuranceAmount);
|
||||
if ($insuranceAmount<0)
|
||||
return false;
|
||||
if (!HIPAY_MAPI_UTILS::is_an_array_of($insuranceTax,'HIPAY_MAPI_Tax'))
|
||||
return false;
|
||||
$this->insuranceAmount=$insuranceAmount;
|
||||
foreach ($insuranceTax as $obj)
|
||||
$this->insuranceTax[]= clone $obj;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant des assurances
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getInsuranceAmount() {
|
||||
return $this->insuranceAmount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne les taxes s'appliquants aux assurances
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function &getInsuranceTax() {
|
||||
return $this->insuranceTax;
|
||||
}
|
||||
|
||||
/**
|
||||
* Défini le montant des coûts fixes et les taxes s'y appliquant
|
||||
*
|
||||
* @param float $fixedCostAmount
|
||||
* @param array $fixedCostTax
|
||||
* @return boolean
|
||||
*/
|
||||
public function setFixedCost($fixedCostAmount,$fixedCostTax) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$fixedCostAmount = sprintf('%.02f',(float)$fixedCostAmount);
|
||||
if ($fixedCostAmount<0)
|
||||
return false;
|
||||
if (!HIPAY_MAPI_UTILS::is_an_array_of($fixedCostTax,'HIPAY_MAPI_Tax'))
|
||||
return false;
|
||||
$this->fixedCostAmount=$fixedCostAmount;
|
||||
foreach ($fixedCostTax as $obj)
|
||||
$this->fixedCostTax[]= clone $obj;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant des coûts fixes
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getFixedCostAmount() {
|
||||
return $this->fixedCostAmount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne les taxes s'appliquant aux coûts fixes
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function &getFixedCostTax() {
|
||||
return $this->fixedCostTax;
|
||||
}
|
||||
|
||||
/**
|
||||
* Défini les affiliés qui recevront une rétribution pour cette commande
|
||||
*
|
||||
* @param array $affiliate
|
||||
* @return boolean
|
||||
*/
|
||||
public function setAffiliate($affiliate) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
if (!HIPAY_MAPI_UTILS::is_an_array_of($affiliate,'HIPAY_MAPI_Affiliate'))
|
||||
return false;
|
||||
foreach ($affiliate as $obj)
|
||||
$this->affiliate[]= clone $obj;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne la liste des affiliés de cette commande
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function &getAffiliate() {
|
||||
return $this->affiliate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigne l'intitulé de la commande
|
||||
*
|
||||
* @param string $orderTitle
|
||||
* @return boolean
|
||||
*/
|
||||
public function setOrderTitle($orderTitle) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$orderTitle = HIPAY_MAPI_UTF8::forceUTF8($orderTitle);
|
||||
$len=HIPAY_MAPI_UTF8::strlen_utf8($orderTitle);
|
||||
if ($len<1 || $len>HIPAY_MAPI_MAX_TITLE_LENGTH)
|
||||
return false;
|
||||
$this->orderTitle=$orderTitle;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne l'intitulé de la commande
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getOrderTitle() {
|
||||
return $this->orderTitle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigne les infos sur la commande
|
||||
*
|
||||
* @param string $orderInfo
|
||||
* @return boolean
|
||||
*/
|
||||
public function setOrderInfo($orderInfo) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$orderInfo = HIPAY_MAPI_UTF8::forceUTF8($orderInfo);
|
||||
$len=HIPAY_MAPI_UTF8::strlen_utf8($orderInfo);
|
||||
if ($len>HIPAY_MAPI_MAX_INFO_LENGTH)
|
||||
return false;
|
||||
$this->orderInfo=$orderInfo;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne les infos sur la commande
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getOrderInfo() {
|
||||
return $this->orderInfo;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Assigne la catégorie de la commande
|
||||
*
|
||||
* @param int $orderCategory
|
||||
* @return boolean
|
||||
*/
|
||||
public function setOrderCategory($orderCategory) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$orderCategory = (int)$orderCategory;
|
||||
if ($orderCategory<1)
|
||||
return false;
|
||||
$this->orderCategory=$orderCategory;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne la catégorie de la commande
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getOrderCategory() {
|
||||
return $this->orderCategory;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Vérifie si l'objet est correctement initialisé
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function check() {
|
||||
if ($this->orderTitle=='' || $this->orderCategory<0)
|
||||
throw new Exception('L\'intitulé et/ou la catégorie de la commande sont manquants');
|
||||
|
||||
foreach($this->affiliate as $obj) {
|
||||
try {
|
||||
$obj->check();
|
||||
} catch (Exception $e) {
|
||||
throw new Exception($e->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
foreach($this->shippingTax as $obj) {
|
||||
try {
|
||||
$obj->check();
|
||||
} catch (Exception $e) {
|
||||
throw new Exception($e->getMessage());
|
||||
}
|
||||
}
|
||||
foreach($this->insuranceTax as $obj) {
|
||||
try {
|
||||
$obj->check();
|
||||
} catch (Exception $e) {
|
||||
throw new Exception($e->getMessage());
|
||||
}
|
||||
}
|
||||
foreach($this->fixedCostTax as $obj) {
|
||||
try {
|
||||
$obj->check();
|
||||
} catch (Exception $e) {
|
||||
throw new Exception($e->getMessage());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function init() {
|
||||
$this->shippingAmount=0;
|
||||
$this->shippingTax=array();
|
||||
$this->insuranceAmount=0;
|
||||
$this->insuranceTax=array();
|
||||
$this->fixedCostAmount=0;
|
||||
$this->fixedCostTax=array();
|
||||
$this->affiliate=array();
|
||||
$this->orderTitle='';
|
||||
$this->orderInfo='';
|
||||
$this->orderCategory=-1;
|
||||
|
||||
}
|
||||
|
||||
|
||||
function __construct() {
|
||||
$this->init();
|
||||
parent::__construct();
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
$_mapi_dir=dirname(__FILE__);
|
||||
require_once($_mapi_dir.'/mapi_defs.php');
|
||||
require_once($_mapi_dir.'/mapi_utils.php');
|
||||
require_once($_mapi_dir.'/mapi_utf8.php');
|
||||
require_once($_mapi_dir.'/mapi_xml.php');
|
||||
require_once($_mapi_dir.'/mapi_send_xml.php');
|
||||
require_once($_mapi_dir.'/mapi_comm_xml.php');
|
||||
require_once($_mapi_dir.'/mapi_lockable.php');
|
||||
|
||||
require_once($_mapi_dir.'/mapi_tax.php');
|
||||
require_once($_mapi_dir.'/mapi_affiliate.php');
|
||||
require_once($_mapi_dir.'/mapi_item.php');
|
||||
require_once($_mapi_dir.'/mapi_installment.php');
|
||||
require_once($_mapi_dir.'/mapi_product.php');
|
||||
require_once($_mapi_dir.'/mapi_paymentparams.php');
|
||||
require_once($_mapi_dir.'/mapi_order.php');
|
||||
require_once($_mapi_dir.'/mapi_payment.php');
|
||||
require_once($_mapi_dir.'/mapi_multiplepayment.php');
|
||||
require_once($_mapi_dir.'/mapi_simplepayment.php');
|
||||
@@ -1,447 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Représente un paiement.
|
||||
* N'est pas utilisé directement
|
||||
*
|
||||
*/
|
||||
class HIPAY_MAPI_Payment extends HIPAY_MAPI_XML {
|
||||
|
||||
/**
|
||||
* Paramètres du paiement
|
||||
*
|
||||
* @var HIPAY_MAPI_PaymentParams
|
||||
*/
|
||||
protected $paymentParams;
|
||||
|
||||
/**
|
||||
* Objets HIPAY_MAPI_Order
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $order;
|
||||
|
||||
/**
|
||||
* Objets HIPAY_MAPI_Item
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $items;
|
||||
|
||||
/**
|
||||
* Total des taxes sur les produits
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_taxItemsAmount;
|
||||
|
||||
/**
|
||||
* Total des taxes sur les frais d'envoi
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_taxShippingAmount;
|
||||
/**
|
||||
* Total des taxes sur les assurances
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_taxInsuranceAmount;
|
||||
|
||||
/**
|
||||
* Total des taxes sur les coûts fixes
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_taxFixedCostAmount;
|
||||
|
||||
/**
|
||||
* Total du montant HT des produits
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_itemsTotalAmount;
|
||||
|
||||
/**
|
||||
* Total des taxes
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $_taxTotalAmount;
|
||||
|
||||
/**
|
||||
* Total de la commande hors taxes
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_orderTotalAmountHT;
|
||||
|
||||
/**
|
||||
* Total de la commande
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_orderTotalAmount;
|
||||
|
||||
|
||||
/**
|
||||
* Total des affilies
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_affiliateTotalAmount;
|
||||
|
||||
|
||||
public function __construct($paymentParams,$order,$items) {
|
||||
try {
|
||||
$this->init($paymentParams,$order,$items);
|
||||
} catch(Exception $e) {
|
||||
throw new Exception($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
protected function init($paymentParams,$order,$items) {
|
||||
if (!($paymentParams instanceof HIPAY_MAPI_PaymentParams)
|
||||
|| !HIPAY_MAPI_UTILS::is_an_array_of($order,'HIPAY_MAPI_Order')
|
||||
|| !HIPAY_MAPI_UTILS::is_an_array_of($items,'HIPAY_MAPI_Item')
|
||||
|| count($items)<1)
|
||||
throw new Exception('Wrong parameters');
|
||||
|
||||
try {
|
||||
$paymentParams->check();
|
||||
} catch (Exception $e) {
|
||||
throw new Exception($e->getMessage());
|
||||
}
|
||||
foreach($order as $orderObj) {
|
||||
try {
|
||||
$orderObj->check();
|
||||
} catch (Exception $e) {
|
||||
throw new Exception($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
foreach($items as $obj)
|
||||
try {
|
||||
$obj->check();
|
||||
} catch (Exception $e) {
|
||||
throw new Exception($e->getMessage());
|
||||
}
|
||||
|
||||
$this->paymentParams= clone $paymentParams;
|
||||
$this->paymentParams->lock();
|
||||
|
||||
|
||||
foreach($order as $obj) {
|
||||
$this->order[]= clone $obj;
|
||||
end($this->order)->lock();
|
||||
$this->_taxItemsAmount[]=0;
|
||||
$this->_taxShippingAmount[]=0;
|
||||
$this->_taxInsuranceAmount[]=0;
|
||||
$this->_taxFixedCostAmount[]=0;
|
||||
$this->_itemsTotalAmount[]=0;
|
||||
$this->_taxTotalAmount[]=0;
|
||||
$this->_orderTotalAmount[]=0;
|
||||
$this->_affiliateTotalAmount[]=0;
|
||||
|
||||
}
|
||||
foreach($items as $obj) {
|
||||
$this->items[]= clone $obj;
|
||||
end($this->items)->lock();
|
||||
}
|
||||
try {
|
||||
$this->compute();
|
||||
} catch(Exception $e) {
|
||||
throw new Exception($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcul les différents montants (taxes, affiliés, totaux) de la commande
|
||||
*
|
||||
*/
|
||||
protected function compute() {
|
||||
|
||||
// Mise à jour du montant total des taxes pour chaque item du tableau _taxItemsAmount
|
||||
// Mise à jour du montant total des taxes de livraison pour chaque order du tableau _taxShippingAmount
|
||||
// Mise à jour du montant total des taxes d'assurances pour chaque order du tableau _taxInsuranceAmount
|
||||
// Mise à jour du montant total des taxes de couts fixes pour chaque order du tableau _taxFixedCostAmount
|
||||
$this->computeTaxes();
|
||||
// Mise a jour du montant total HT des produits pour chaque item du tableau _itemsTotalAmount
|
||||
$this->computeItemsAmount();
|
||||
// Pour chaque commande
|
||||
foreach($this->order as $key=>$order) {
|
||||
$this->_taxTotalAmount[$key] = $this->_taxItemsAmount[$key] + $this->_taxShippingAmount[$key] + $this->_taxInsuranceAmount[$key] + $this->_taxFixedCostAmount[$key];
|
||||
$this->_orderTotalAmountHT[$key] = $order->getShippingAmount() + $order->getInsuranceAmount() + $order->getFixedCostAmount() + $this->_itemsTotalAmount[$key];
|
||||
$this->_orderTotalAmount[$key] = $this->_orderTotalAmountHT[$key] + $this->_taxTotalAmount[$key];
|
||||
// $this->_orderTotalAmount[$key] = $order->getShippingAmount() + $order->getInsuranceAmount() + $order->getFixedCostAmount() + $this->_itemsTotalAmount[$key] +
|
||||
// $this->_taxItemsAmount[$key] +
|
||||
// $this->_taxShippingAmount[$key] +
|
||||
// $this->_taxInsuranceAmount[$key] +
|
||||
// $this->_taxFixedCostAmount[$key];
|
||||
}
|
||||
try {
|
||||
$this->computeAffiliates();
|
||||
} catch(Exception $e) {
|
||||
throw new Exception($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Calcul le montant des taxes
|
||||
*
|
||||
*/
|
||||
protected function computeTaxes() {
|
||||
|
||||
// Taxes sur les produits au niveau de l'item (ligne de commande)
|
||||
// @FIXME bug et confusion entre indice d'item et indice d'order ?
|
||||
$cur=0;
|
||||
// pour chaque ligne de commande
|
||||
foreach($this->items as $item) {
|
||||
// Liste des taxes de la ligne
|
||||
$itemTaxes= $item->getTax();
|
||||
$tItemsAmount=0;
|
||||
// pour chaque taxe appliquée sur cette ligne
|
||||
foreach($itemTaxes as $tax) {
|
||||
$amount=HIPAY_MAPI_UTILS::computeTax($item->getPrice(),$tax);
|
||||
$tax->setTaxAmount($amount);
|
||||
$tax->lock();
|
||||
// mise a jour du montant total des taxes pour cet item (ligne de commande)
|
||||
$tItemsAmount+=$amount;
|
||||
}
|
||||
if (!isset($this->order[$cur]))
|
||||
$cur=0;
|
||||
if (!isset($this->_taxItemsAmount[$cur]))
|
||||
$this->_taxItemsAmount[$cur]=0;
|
||||
// mise a jour du montant total des taxes pour cette ligne de commande
|
||||
// avec prise en compte du nombre de produits dans l'indice numLigneCommande
|
||||
// du tableau _taxItemsAmount de cette commande
|
||||
$this->_taxItemsAmount[$cur]+=($tItemsAmount*$item->getQuantity());
|
||||
$item->lock();
|
||||
$cur++;
|
||||
}
|
||||
|
||||
// Taxes sur frais d'envoi, assurances, coûts fixes
|
||||
// au niveau des commandes
|
||||
$cur=0;
|
||||
foreach($this->order as $order) {
|
||||
// Taxes sur frais d'envoi
|
||||
$taxArr =& $order->getShippingTax();
|
||||
foreach($taxArr as $key=>$tax) {
|
||||
$amount=HIPAY_MAPI_UTILS::computeTax($order->getShippingAmount(),$tax);
|
||||
$taxArr[$key]->setTaxAmount($amount);
|
||||
$taxArr[$key]->lock();
|
||||
|
||||
if (!isset($this->_taxShippingAmount[$cur]))
|
||||
$this->_taxShippingAmount[$cur]=0;
|
||||
$this->_taxShippingAmount[$cur]+=$amount;
|
||||
}
|
||||
// Taxes sur assurances
|
||||
$taxArr =& $order->getInsuranceTax();
|
||||
foreach($taxArr as $key=>$tax) {
|
||||
$amount=HIPAY_MAPI_UTILS::computeTax($order->getInsuranceAmount(),$tax);
|
||||
$taxArr[$key]->setTaxAmount($amount);
|
||||
$taxArr[$key]->lock();
|
||||
if (!isset($this->_taxInsuranceAmount[$cur]))
|
||||
$this->_taxInsuranceAmount[$cur]=0;
|
||||
$this->_taxInsuranceAmount[$cur]+=$amount;
|
||||
}
|
||||
// Taxes sur coûts fixes
|
||||
$taxArr =& $order->getFixedCostTax();
|
||||
foreach($taxArr as $key=>$tax) {
|
||||
$amount=HIPAY_MAPI_UTILS::computeTax($order->getFixedCostAmount(),$tax);
|
||||
$taxArr[$key]->setTaxAmount($amount);
|
||||
$taxArr[$key]->lock();
|
||||
if (!isset($this->_taxFixedCostAmount[$cur]))
|
||||
$this->_taxFixedCostAmount[$cur]=0;
|
||||
$this->_taxFixedCostAmount[$cur]+=$amount;
|
||||
}
|
||||
$cur++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcul le montant total HT des produits
|
||||
*
|
||||
*/
|
||||
protected function computeItemsAmount() {
|
||||
$itemsAmount=0;
|
||||
$cur=0;
|
||||
foreach($this->items as $item) {
|
||||
$mt=sprintf("%.02f",$item->getPrice()*$item->getQuantity());
|
||||
|
||||
if (!isset($this->order[$cur]))
|
||||
$cur=0;
|
||||
if (!isset($this->_itemsTotalAmount[$cur]))
|
||||
$this->_itemsTotalAmount[$cur]=0;
|
||||
$this->_itemsTotalAmount[$cur]+=$mt;
|
||||
$cur++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant total des taxes
|
||||
*
|
||||
* @param array $tItemsAmount
|
||||
* @param array $tShippingAmount
|
||||
* @param array $tInsuranceAmount
|
||||
* @param array $tFixedCostAmount
|
||||
*/
|
||||
public function getTotalTaxes(&$tItemsAmount,&$tShippingAmount,&$tInsuranceAmount,&$tFixedCostAmount) {
|
||||
$tItemsAmount=$this->getItemsTaxes();
|
||||
$tShippingAmount=$this->getShippingTaxes();
|
||||
$tInsuranceAmount=$this->getInsuranceTaxes();
|
||||
$tFixedCostAmount=$this->getFixedCostTaxes();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant des taxes sur les articles
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getItemsTaxes() {
|
||||
return $this->_taxItemsAmount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant des taxes sur les frais de port
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getShippingTaxes() {
|
||||
return $this->_taxShippingAmount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant des taxes sur les assurances
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getInsuranceTaxes() {
|
||||
return $this->_taxInsuranceAmount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant des taxes sur les couts fixes
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getFixedCostTaxes() {
|
||||
return $this->_taxFixedCostAmount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant total des produits
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getItemsTotalAmount() {
|
||||
return $this->_itemsTotalAmount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant total des taxes
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getTaxesTotalAmount() {
|
||||
return $this->_taxTotalAmount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant total hors taxes de la commande
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getOrderTotalAmountHT() {
|
||||
return $this->_orderTotalAmountHT;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant total TTC de la commande
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getOrderTotalAmount() {
|
||||
return $this->_orderTotalAmount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant total des affiliés
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getAffiliateTotalAmount() {
|
||||
return $this->_affiliateTotalAmount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne les objets order
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getOrder() {
|
||||
return $this->order;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne les objets items
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getItems() {
|
||||
return $this->items;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne l'objet paramètre
|
||||
*
|
||||
* @return HIPAY_MAPI_PaymentParams
|
||||
*/
|
||||
public function getPaymentParams() {
|
||||
return $this->paymentParams;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Calcul les montants à redistribuer aux affiliés
|
||||
*
|
||||
*/
|
||||
protected function computeAffiliates() {
|
||||
|
||||
|
||||
foreach($this->order as $k=>$order) {
|
||||
$totalAmount=0;
|
||||
$tAffiliate = $order->getAffiliate();
|
||||
foreach($tAffiliate as $key=>$affiliate) {
|
||||
$baseAmount=0;
|
||||
$percentageTarget= $affiliate->getPercentageTarget();
|
||||
if ($percentageTarget>0) {
|
||||
if ($percentageTarget & HIPAY_MAPI_TTARGET_ITEM)
|
||||
$baseAmount+=$this->_itemsTotalAmount[$k];
|
||||
if ($percentageTarget & HIPAY_MAPI_TTARGET_TAX)
|
||||
$baseAmount+=$this->_taxItemsAmount[$k]+$this->_taxFixedCostAmount[$k]+$this->_taxInsuranceAmount[$k]+$this->_taxShippingAmount[$k];
|
||||
if ($percentageTarget& HIPAY_MAPI_TTARGET_INSURANCE)
|
||||
$baseAmount+=$order->getInsuranceAmount();
|
||||
if ($percentageTarget & HIPAY_MAPI_TTARGET_FCOST)
|
||||
$baseAmount+=$order->getFixedCostAmount();
|
||||
if ($percentageTarget & HIPAY_MAPI_TTARGET_SHIPPING)
|
||||
$baseAmount+=$order->getShippingAmount();
|
||||
$tAffiliate[$key]->setBaseAmount($baseAmount);
|
||||
} else {
|
||||
$baseAmount = $affiliate->getValue();
|
||||
$tAffiliate[$key]->setBaseAmount($baseAmount);
|
||||
}
|
||||
$totalAmount+=$tAffiliate[$key]->getAmount();
|
||||
$tAffiliate[$key]->lock();
|
||||
}
|
||||
$this->_affiliateTotalAmount[$k]=$totalAmount;
|
||||
if ($totalAmount > $this->_orderTotalAmount[$k]) {
|
||||
throw new Exception('Le montant à redistribuer est supérieur au montant de la transaction ('.$totalAmount.'/'.$this->_orderTotalAmount.')');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,849 +0,0 @@
|
||||
<?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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,274 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Représente une ligne de la commande pour un paiement simple
|
||||
*
|
||||
*/
|
||||
class HIPAY_MAPI_Product extends HIPAY_MAPI_Item {
|
||||
/**
|
||||
* Nom du produit
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $name;
|
||||
|
||||
/**
|
||||
* Informations sur le produit
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $info;
|
||||
|
||||
/**
|
||||
* quantité
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $quantity;
|
||||
|
||||
/**
|
||||
* Réference produit
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $ref;
|
||||
|
||||
/**
|
||||
* Catégorie du produit
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $category;
|
||||
|
||||
/**
|
||||
* Montant unitaire HT du produit
|
||||
*
|
||||
* @var float
|
||||
*/
|
||||
protected $price;
|
||||
|
||||
/**
|
||||
* Taxes s'appliquant à ce produit
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $tax;
|
||||
|
||||
|
||||
/**
|
||||
* Assigne le nom du produit
|
||||
*
|
||||
* @param string $name
|
||||
* @return boolean
|
||||
*/
|
||||
public function setName($name) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$name = HIPAY_MAPI_UTF8::forceUTF8($name);
|
||||
$len=HIPAY_MAPI_UTF8::strlen_utf8($name);
|
||||
if ($len<1 || $len>HIPAY_MAPI_MAX_PRODUCT_NAME_LENGTH)
|
||||
return false;
|
||||
$this->name=$name;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le nom du produit
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getName() {
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigne les informations sur le produit
|
||||
*
|
||||
* @param string $info
|
||||
* @return boolean
|
||||
*/
|
||||
public function setInfo($info) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$info = HIPAY_MAPI_UTF8::forceUTF8($info);
|
||||
$len=HIPAY_MAPI_UTF8::strlen_utf8($info);
|
||||
if ($len>HIPAY_MAPI_MAX_PRODUCT_INFO_LENGTH)
|
||||
return false;
|
||||
$this->info=$info;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne les informations sur le produit
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getInfo() {
|
||||
return $this->info;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigne la quantité de produit
|
||||
*
|
||||
* @param int $quantity
|
||||
* @return boolean
|
||||
*/
|
||||
public function setQuantity($quantity) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$quantity=(int)$quantity;
|
||||
if ($quantity<1)
|
||||
return false;
|
||||
$this->quantity=$quantity;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne la quantité de produit
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getQuantity() {
|
||||
return $this->quantity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigne la réference du produit
|
||||
*
|
||||
* @param string $ref
|
||||
* @return boolean
|
||||
*/
|
||||
public function setRef($ref) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$ref = HIPAY_MAPI_UTF8::forceUTF8($ref);
|
||||
$len=HIPAY_MAPI_UTF8::strlen_utf8($ref);
|
||||
if ($len>HIPAY_MAPI_MAX_PRODUCT_REF_LENGTH)
|
||||
return false;
|
||||
$this->ref=$ref;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne la réference du produit
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getRef() {
|
||||
return $this->ref;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Assigne la catégorie du produit
|
||||
*
|
||||
* @param int $category
|
||||
* @return boolean
|
||||
*/
|
||||
public function setCategory($category) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$category = (int)$category;
|
||||
if ($category<1)
|
||||
return false;
|
||||
$this->category=$category;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne la catégorie du produit
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getCategory() {
|
||||
return $this->category;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigne le montant unitaire HT du produit
|
||||
*
|
||||
* @param float $price
|
||||
* @return boolean
|
||||
*/
|
||||
public function setPrice($price) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$price = sprintf('%.02f',(float)$price);
|
||||
if ($price<0)
|
||||
return false;
|
||||
$this->price=$price;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne montant unitaire HT du produit
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
public function getPrice() {
|
||||
return $this->price;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigne les taxes s'appliquant à ce produit
|
||||
*
|
||||
* @param array $tax
|
||||
* @return boolean
|
||||
*/
|
||||
public function setTax($tax) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
if (!HIPAY_MAPI_UTILS::is_an_array_of($tax,'HIPAY_MAPI_Tax'))
|
||||
return false;
|
||||
foreach ($tax as $obj)
|
||||
$this->tax[]= clone $obj;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne les taxes s'appliquant à ce produit
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getTax() {
|
||||
return $this->tax;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie que l'objet est correctement initialisé
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function check() {
|
||||
if ($this->name=='' || $this->quantity<0 || $this->category<0 || $this->price<0 || !HIPAY_MAPI_UTILS::is_an_array_of($this->tax,'HIPAY_MAPI_Tax'))
|
||||
throw new Exception('L\'objet n\'à pas été initilisé. Vous devez préciser un nom de produit, une quantité, un prix, une catégorie et des taxes');
|
||||
foreach($this->tax as $obj) {
|
||||
if (!$obj->check())
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
protected function init() {
|
||||
$this->name='';
|
||||
$this->info='';
|
||||
$this->quantity=-1;
|
||||
$this->ref='';
|
||||
$this->category=-1;
|
||||
$this->price=-1;
|
||||
$this->tax=array();
|
||||
}
|
||||
|
||||
function __construct() {
|
||||
$this->init();
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
<?php
|
||||
class HIPAY_MAPI_SEND_XML {
|
||||
|
||||
/**
|
||||
* Envoi le flux XML et retourne la réponse du serveur
|
||||
*
|
||||
* un timeout trop bas
|
||||
* Une mauvaise url
|
||||
* un proxy mal configuré s'il existe
|
||||
*
|
||||
* peuvent engendrer une erreur de connexion
|
||||
*
|
||||
* @param string $xml
|
||||
* @return string
|
||||
*/
|
||||
public static function sendXML($xml, $url="") {
|
||||
$xml=self::prepare($xml);
|
||||
|
||||
if ($url=="")
|
||||
$turl=parse_url(HIPAY_GATEWAY_URL);
|
||||
else $turl=parse_url($url);
|
||||
if (!isset($turl['path']))
|
||||
$turl['path']='/';
|
||||
|
||||
$curl = curl_init();
|
||||
curl_setopt($curl,CURLOPT_TIMEOUT, HIPAY_MAPI_CURL_TIMEOUT);
|
||||
curl_setopt($curl,CURLOPT_POST,1);
|
||||
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
|
||||
curl_setopt($curl,CURLOPT_USERAGENT,"HIPAY");
|
||||
curl_setopt($curl,CURLOPT_URL, $turl['scheme'].'://'.$turl['host'].$turl['path']);
|
||||
curl_setopt($curl,CURLOPT_POSTFIELDS,'xml='.urlencode($xml));
|
||||
|
||||
if(HIPAY_MAPI_CURL_PROXY_ON === true)
|
||||
{
|
||||
curl_setopt($curl, CURLOPT_PROXY, HIPAY_MAPI_CURL_PROXY);
|
||||
curl_setopt($curl, CURLOPT_PROXYPORT, HIPAY_MAPI_CURL_PROXYPORT);
|
||||
}
|
||||
|
||||
if(HIPAY_MAPI_CURL_LOG_ON === true)
|
||||
{
|
||||
$errorFileLog = fopen(HIPAY_MAPI_CURL_LOGFILE, "a+");
|
||||
curl_setopt($curl, CURLOPT_VERBOSE, true);
|
||||
curl_setopt($curl, CURLOPT_STDERR, $errorFileLog);
|
||||
}
|
||||
|
||||
curl_setopt($curl, CURLOPT_HEADER, 0);
|
||||
|
||||
ob_start();
|
||||
if (curl_exec($curl) !== true)
|
||||
{
|
||||
$output = $turl['scheme'].'://'.$turl['host'].$turl['path'].' is not reachable';
|
||||
$output .= '<br />Network problem ? Verify your proxy configuration in mapi_defs.php';
|
||||
}
|
||||
else $output = ob_get_contents();
|
||||
ob_end_clean();
|
||||
curl_close($curl);
|
||||
if(HIPAY_MAPI_CURL_LOG_ON === true)
|
||||
{
|
||||
fclose($errorFileLog);
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prépare le flux XML
|
||||
*
|
||||
* @param string $xml
|
||||
* @return string
|
||||
*/
|
||||
public static function prepare($xml) {
|
||||
$cleanXML='';
|
||||
$xml = trim($xml);
|
||||
$md5 = hash('md5',$xml);
|
||||
$cleanXML="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
|
||||
$cleanXML.="<mapi>\n";
|
||||
$cleanXML.="<mapiversion>".MAPI_VERSION."</mapiversion>\n";
|
||||
$cleanXML.='<md5content>'.$md5."</md5content>\n";
|
||||
$cleanXML.=$xml;
|
||||
$cleanXML.="\n</mapi>\n";
|
||||
return trim($cleanXML);
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Représente un paiement simple
|
||||
* Un paiement simple contient :
|
||||
* - 1 objet paramètres HIPAY_MAPI_PaymentParams
|
||||
* - 1 objet order HIPAY_MAPI_Order
|
||||
* - n objet produits représentant les lignes de la commande HIPAY_MAPI_Product
|
||||
*
|
||||
*/
|
||||
class HIPAY_MAPI_SimplePayment extends HIPAY_MAPI_Payment {
|
||||
|
||||
function __construct(HIPAY_MAPI_PaymentParams $paymentParams,HIPAY_MAPI_Order $order,$items) {
|
||||
try {
|
||||
parent::__construct($paymentParams,array($order),$items);
|
||||
} catch(Exception $e) {
|
||||
throw new Exception($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,168 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Gestion des taxes
|
||||
*
|
||||
*/
|
||||
class HIPAY_MAPI_Tax extends HIPAY_MAPI_lockable
|
||||
{
|
||||
/**
|
||||
* nom de la taxe
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $taxName;
|
||||
|
||||
/**
|
||||
* valeur de la taxe
|
||||
*
|
||||
* @var float
|
||||
*/
|
||||
protected $taxVal;
|
||||
|
||||
/**
|
||||
* true si la valeur de la taxe est un pourcentage
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $percentage;
|
||||
|
||||
/**
|
||||
* Montant calculé de la taxe
|
||||
*
|
||||
* @var float
|
||||
*/
|
||||
protected $_amount;
|
||||
|
||||
|
||||
/**
|
||||
* assigne le nom de la taxe
|
||||
*
|
||||
* @param string $taxName nom de la taxe
|
||||
* @return boolean true si l'assignation s'est bien déroulée
|
||||
*/
|
||||
public function setTaxName($taxName) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
$taxName = HIPAY_MAPI_UTF8::forceUTF8($taxName);
|
||||
$len=HIPAY_MAPI_UTF8::strlen_utf8($taxName);
|
||||
if ($len<1 || $len>HIPAY_MAPI_MAX_TAX_NAME_LENGTH)
|
||||
return false;
|
||||
$this->taxName=$taxName;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* retourne le nom de la taxe
|
||||
*
|
||||
* @return string nom de la taxe
|
||||
*/
|
||||
public function getTaxName() {
|
||||
return $this->taxName;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* assigne la valeur de la taxe
|
||||
*
|
||||
* @param float $taxVal valeur de la taxe
|
||||
* @param boolean $percentage true si la valeur de la taxe est un pourcentage
|
||||
* @return boolean true si l'assignation s'est bien déroulée
|
||||
*/
|
||||
public function setTaxVal($taxVal,$percentage=true) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
if (!is_bool($percentage))
|
||||
return false;
|
||||
$taxVal = sprintf('%.02f',(float)$taxVal);
|
||||
if ($percentage && ($taxVal<=0 || $taxVal>100))
|
||||
return false;
|
||||
$this->taxVal=$taxVal;
|
||||
$this->percentage=$percentage;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* retourne la valeur de la taxe
|
||||
*
|
||||
* @return float valeur de la taxe
|
||||
*/
|
||||
public function getTaxVal() {
|
||||
return $this->taxVal;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* détermine si la valeur de la taxe est un pourcentage
|
||||
*
|
||||
* @return boolean true si la valeur de la taxe est un pourcentage
|
||||
*/
|
||||
public function isPercentage() {
|
||||
return $this->percentage;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* effectue une vérification des propriétés de la taxe
|
||||
*
|
||||
* @return boolean true si les propriétés de la taxe sont correctes
|
||||
*/
|
||||
public function check() {
|
||||
if ($this->taxName=='' || $this->taxVal<0)
|
||||
throw new Exception('Nom ou valeur de la taxe non initialisée');
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* initilise les propriétés de la taxe
|
||||
*
|
||||
*/
|
||||
protected function init() {
|
||||
$this->taxVal=-1;
|
||||
$this->taxName='';
|
||||
$this->percentage=false;
|
||||
$this->_amount=0;
|
||||
$this->_locked=false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* assigne le montant calculé de la taxe
|
||||
*
|
||||
* @param float $amount montant calculé
|
||||
* @return boolean true si l'assignation s'est bien déroulée
|
||||
*/
|
||||
public function setTaxAmount($amount) {
|
||||
if ($this->_locked)
|
||||
return false;
|
||||
|
||||
$amount=(float)$amount;
|
||||
if ($amount<0)
|
||||
$amount=0;
|
||||
$this->_amount = sprintf("%.02f",$amount);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* retourne le montant calculé de la taxe
|
||||
*
|
||||
* @return float montant calculé
|
||||
*/
|
||||
public function getTaxAmount() {
|
||||
return $this->_amount;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* constructeur
|
||||
*
|
||||
*/
|
||||
function __construct() {
|
||||
$this->init();
|
||||
parent::__construct();
|
||||
}
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
<?php
|
||||
class HIPAY_MAPI_UTF8 {
|
||||
/**
|
||||
* Test si une chaine est en UTF-8
|
||||
*
|
||||
* @param string $string
|
||||
* @return boolean
|
||||
*/
|
||||
public static function is_utf8($string) {
|
||||
// From http://w3.org/International/questions/qa-forms-utf-8.html
|
||||
return preg_match('%^(?:
|
||||
[\x09\x0A\x0D\x20-\x7E] # ASCII
|
||||
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
|
||||
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
|
||||
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
|
||||
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
|
||||
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
|
||||
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
|
||||
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
|
||||
)*$%xs', $string);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Encode une chaine en UTF-8 si elle ne l'est pas déjà
|
||||
*
|
||||
* @param string $string
|
||||
* @return string
|
||||
*/
|
||||
public static function forceUTF8($string) {
|
||||
if (!self::is_utf8($string))
|
||||
return utf8_encode($string);
|
||||
else return $string;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Longueur d'une chaine UTF-8
|
||||
*
|
||||
* @param string $str
|
||||
* @return int longueur de la chaine
|
||||
*/
|
||||
public static function strlen_utf8 ($str) {
|
||||
$i = 0;
|
||||
$count = 0;
|
||||
$len = strlen ($str);
|
||||
while ($i < $len)
|
||||
{
|
||||
$chr = ord ($str[$i]);
|
||||
$count++;
|
||||
$i++;
|
||||
if ($i >= $len)
|
||||
break;
|
||||
|
||||
if ($chr & 0x80)
|
||||
{
|
||||
$chr <<= 1;
|
||||
while ($chr & 0x80)
|
||||
{
|
||||
$i++;
|
||||
$chr <<= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $count;
|
||||
}
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
<?php
|
||||
class HIPAY_MAPI_UTILS {
|
||||
|
||||
/**
|
||||
* Vérifie si le tableau $array contient des objet $objectName
|
||||
*
|
||||
* @param array $array
|
||||
* @param string $objectName
|
||||
* @return boolean
|
||||
*/
|
||||
public static function is_an_array_of($array,$objectName) {
|
||||
if (!is_array($array))
|
||||
return false;
|
||||
try {
|
||||
foreach($array as $obj) {
|
||||
if (!($obj instanceof $objectName)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le montant calculé d'une taxe en fonction de la valeur $itemValue
|
||||
*
|
||||
* @param float $itemValue
|
||||
* @param HIPAY_MAPI_Tax $tax
|
||||
* @return float
|
||||
*/
|
||||
public static function computeTax($itemValue,HIPAY_MAPI_Tax $tax) {
|
||||
$itemValue = (float) $itemValue;
|
||||
$taxAmount=0;
|
||||
if ($tax->isPercentage()) {
|
||||
$taxAmount=sprintf("%.02f",($itemValue/100)*$tax->getTaxVal());
|
||||
} else {
|
||||
$taxAmount+=sprintf("%.02f",$tax->getTaxVal());
|
||||
}
|
||||
return (float)$taxAmount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie la validité d'une URL
|
||||
*
|
||||
* @param string $url
|
||||
* @return boolean
|
||||
*/
|
||||
public static function checkURL( $url ) {
|
||||
return preg_match( '#^(((http|https):\/\/){0,1})(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(.*)#i', $url );
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie la validité de l'email
|
||||
*
|
||||
* @param string $email
|
||||
* @return boolean
|
||||
*/
|
||||
public static function checkemail( $email ) {
|
||||
return preg_match( '#^[_a-z0-9-]+(\.[_a-z0-9-]*)*@[a-z0-9-]+(\.[a-z0-9-]+)+$#i', $email );
|
||||
}
|
||||
|
||||
public static function parseDelay( $delay )
|
||||
{
|
||||
$array = array_fill_keys( array('H', 'I', 'S', 'M', 'D', 'Y'), 0 );
|
||||
$n = substr( $delay, 0, -1 );
|
||||
$r = substr( $delay, -1, 1 );
|
||||
$array[ strtoupper($r) ] = $n;
|
||||
|
||||
return $array;
|
||||
}
|
||||
}
|
||||
@@ -1,71 +0,0 @@
|
||||
<?php
|
||||
class HIPAY_MAPI_XML {
|
||||
|
||||
/**
|
||||
* Cré le flux XML de cet objet.
|
||||
* Les membres commençants par "_" sont ignorées
|
||||
*
|
||||
* @param int $t
|
||||
* @return string
|
||||
*/
|
||||
public function getXML($t=0,$noshow=true) {
|
||||
$xml='';
|
||||
$xml.=str_repeat(chr(9),$t)."<".get_class($this).">\n";
|
||||
foreach($this as $name=>$value) {
|
||||
if ($noshow && substr($name,0,1)=='_')
|
||||
continue;
|
||||
|
||||
if (!is_array($this->$name) && !is_object($this->$name) && !is_bool($this->$name)) {
|
||||
$xml.=str_repeat(chr(9),$t+1)."<$name>$value</$name>\n";
|
||||
} else if (is_bool($this->$name)) {
|
||||
if ($value===true)
|
||||
$xml.=str_repeat(chr(9),$t+1)."<$name>true</$name>\n";
|
||||
else
|
||||
$xml.=str_repeat(chr(9),$t+1)."<$name>false</$name>\n";
|
||||
} else if (is_object($this->$name) && method_exists($this->$name,'getXML')) {
|
||||
$xml.=$this->$name->getXml($t+1);
|
||||
} else if (is_array($this->$name)) {
|
||||
$xml.=str_repeat(chr(9),$t+1)."<$name>\n";
|
||||
$xml.=self::getXMLArray($this->$name,$t+1,$noshow);
|
||||
$xml.=str_repeat(chr(9),$t+1)."</$name>\n";
|
||||
}
|
||||
// else : no getXML method available
|
||||
|
||||
}
|
||||
$xml.=str_repeat(chr(9),$t)."</".get_class($this).">\n";
|
||||
return $xml;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Cré le flux XML d'un tableau
|
||||
*
|
||||
* @param array $array
|
||||
* @param int $t
|
||||
* @return string
|
||||
*/
|
||||
protected function getXMLArray($array,$t=0,$noshow=true) {
|
||||
$xml='';
|
||||
foreach($array as $name=>$value) {
|
||||
if (substr($name,0,1)=='_')
|
||||
continue;
|
||||
|
||||
if (!is_array($array[$name]) && !is_object($array[$name]) && !is_bool($array[$name])) {
|
||||
$xml.=str_repeat(chr(9),$t+1)."<_aKey_$name>$value</_aKey_$name>\n";
|
||||
} else if (is_bool($array[$name])) {
|
||||
if ($value===true)
|
||||
$xml.=str_repeat(chr(9),$t+1)."<$name>true</$name>\n";
|
||||
else
|
||||
$xml.=str_repeat(chr(9),$t+1)."<$name>false</$name>\n";
|
||||
} else if (is_object($array[$name]) && method_exists($array[$name],'getXML')) {
|
||||
$xml.=$array[$name]->getXml($t+1);
|
||||
} else if (is_array($array[$name])){
|
||||
$xml.=str_repeat(chr(9),$t+1)."<$name>\n";
|
||||
$xml.=self::getXMLArray($array[$name],$t+1,$noshow);
|
||||
$xml.=str_repeat(chr(9),$t+1)."</$name>\n";
|
||||
}
|
||||
}
|
||||
return $xml;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user