bebeboutik/modules/hipay/mapi/mapi_comm_xml.php
Srv Bebeboutik 6c0978166c add modules
2016-01-04 12:49:26 +01:00

125 lines
3.0 KiB
PHP
Executable File

<?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;
}
}