Вход Регистрация
Файл: iwup.biz/wminc/wmxi.php
Строк: 461
<?php
################################################################################
#                                                                              #
# Webmoney XML Interfaces by DKameleon (http://dkameleon.com)                  #
#                                                                              #
# Updates and new versions: http://my-tools.net/wmxi/                          #
#                                                                              #
# Server requirements:                                                         #
#  - CURL                                                                      #
#  - MBString                                                                  #
#                                                                              #
# History of changes:                                                          #
# 2007.02.14                                                                   #
# - initial release of X1 - X11 interfaces                                     #
# 2007.03.02                                                                   #
# - some technical fixes of X7 interface                                       #
# 2007.04.19                                                                   #
# - enchanced special chars correction                                         #
# 2007.08.26                                                                   #
# - added certificate existance check                                          #
# 2007.12.05                                                                   #
# - added X13 - X16 interfaces                                                 #
#                                                                              #
################################################################################


# WMXI constants
define("WMXI_URL_CLASSIC_X1""https://w3s.webmoney.ru/asp/XMLInvoice.asp");
define("WMXI_URL_LITE_X1""https://w3s.wmtransfer.com/asp/XMLInvoiceCert.asp");

define("WMXI_URL_CLASSIC_X2""https://w3s.webmoney.ru/asp/XMLTrans.asp");
define("WMXI_URL_LITE_X2""https://w3s.wmtransfer.com/asp/XMLTransCert.asp");

define("WMXI_URL_CLASSIC_X3""https://w3s.webmoney.ru/asp/XMLOperations.asp");
define("WMXI_URL_LITE_X3""https://w3s.wmtransfer.com/asp/XMLOperationsCert.asp");

define("WMXI_URL_CLASSIC_X4""https://w3s.webmoney.ru/asp/XMLOutInvoices.asp");
define("WMXI_URL_LITE_X4""https://w3s.webmoney.ru/asp/XMLOutInvoicesCert.asp");

define("WMXI_URL_CLASSIC_X5""https://w3s.webmoney.ru/asp/XMLFinishProtect.asp");
define("WMXI_URL_LITE_X5""https://w3s.wmtransfer.com/asp/XMLFinishProtectCert.asp");

define("WMXI_URL_CLASSIC_X6""https://w3s.webmoney.ru/asp/XMLSendMsg.asp");
define("WMXI_URL_LITE_X6""https://w3s.wmtransfer.com/asp/XMLSendMsgCert.asp");

define("WMXI_URL_CLASSIC_X7""https://w3s.webmoney.ru/asp/XMLClassicAuth.asp");
define("WMXI_URL_LITE_X7""https://w3s.wmtransfer.com/asp/XMLClassicAuthCert.asp");

define("WMXI_URL_CLASSIC_X8""https://w3s.webmoney.ru/asp/XMLFindWMPurse.asp");
define("WMXI_URL_LITE_X8""https://w3s.wmtransfer.com/asp/XMLFindWMPurseCert.asp");

define("WMXI_URL_CLASSIC_X9""https://w3s.webmoney.ru/asp/XMLPurses.asp");
define("WMXI_URL_LITE_X9""https://w3s.wmtransfer.com/asp/XMLPursesCert.asp");

define("WMXI_URL_CLASSIC_X10""https://w3s.webmoney.ru/asp/XMLInInvoices.asp");
define("WMXI_URL_LITE_X10""https://w3s.webmoney.ru/asp/XMLInInvoicesCert.asp");

define("WMXI_URL_CLASSIC_X11""https://passport.webmoney.ru/asp/XMLGetWMPassport.asp");
define("WMXI_URL_LITE_X11""https://passport.webmoney.ru/asp/XMLGetWMPassport.asp");

define("WMXI_URL_CLASSIC_X13""https://w3s.webmoney.ru/asp/XMLRejectProtect.asp");
define("WMXI_URL_LITE_X13""https://w3s.wmtransfer.com/asp/XMLRejectProtectCert.asp");

define("WMXI_URL_CLASSIC_X14""https://w3s.webmoney.ru/asp/XMLTransMoneyback.asp");
define("WMXI_URL_LITE_X14""https://w3s.wmtransfer.com/asp/XMLTransMoneybackCert.asp");

define("WMXI_URL_CLASSIC_X15a""https://w3s.webmoney.ru/asp/XMLTrustList.asp");
define("WMXI_URL_LITE_X15a""https://w3s.webmoney.ru/asp/XMLTrustListCert.asp");

define("WMXI_URL_CLASSIC_X15b""https://w3s.webmoney.ru/asp/XMLTrustList2.asp");
define("WMXI_URL_LITE_X15b""https://w3s.webmoney.ru/asp/XMLTrustList2Cert.asp");

define("WMXI_URL_CLASSIC_X15c""https://w3s.webmoney.ru/asp/XMLTrustSave2.asp");
define("WMXI_URL_LITE_X15c""https://w3s.webmoney.ru/asp/XMLTrustSave2Cert.asp");

define("WMXI_URL_CLASSIC_X16""https://w3s.webmoney.ru/asp/XMLCreatePurse.asp");
define("WMXI_URL_LITE_X16""https://w3s.wmtransfer.com/asp/XMLCreatePurseCert.asp");


# WMXI class
class WMXI {

    var 
$classic true;

    var 
$wm_cert "";
    var 
$encoding "UTF-8";

    var 
$kwm ""# classic
    
var $wmid ""# classic
    
var $pass ""# classic + lite
    
var $rsa_key "";  # lite
    
var $rsa_cert "";  # lite


    # constructor
    
function WMXI($wm_cert ""$encoding "UTF-8") {
        if ((
$wm_cert != "") && !file_exists($wm_cert)) {
            die(
"Specified certificate $wm_cert not found.");
        }
        
$this->wm_cert $wm_cert;
        
$this->encoding $encoding;
    }


    
# initialize classic
    
function Classic($wmid$pass$kwm) {
        
$this->classic true;
        
$this->wmid $wmid;
        
$this->pass $pass;
        
$this->kwm $kwm;
        require_once(
"wmsigner.php");
    }


    
# initialize lite
    
function Lite($rsa_key$rsa_cert$pass) {
        
$this->classic false;
        
$this->rsa_key $rsa_key;
        
$this->rsa_cert $rsa_cert;
        
$this->pass $pass;
    }


    
# change string encoding
    
function _change_encoding($text$encoding$entities false) {
        
$text $entities htmlspecialchars($textENT_QUOTES) : $text;
        return 
mb_convert_encoding($text$encoding$this->encoding);
    }


    
# generate reqn
    
function _reqn() {
        list(
$usec$sec) = explode(" "substr(microtime(), 2));
        return 
substr($sec.$usec015);
    }


    
# external sign function
    
function _sign($data) {
        
$text $this->_change_encoding($data"windows-1251");
        return 
Sign($text$this->wmid$this->pass$this->kwm);
    }


    
# external request structure creator
    
function _xml($data$name "w3s.request") {
        return 
$this->__xml(array($name => $data));
    }


    
# internal request structure creator
    
function __xml($data) {
        
$result "";

        foreach(
$data as $k => $v) {
            
$value is_array($v) ? "n".$this->__xml($v) : $this->_change_encoding($v"HTML-ENTITIES"true);
            
$result .= "<$k>$value</$k>n";
        }

        return 
$result;
    }


    
# request to server
    
function _request($url$xml) {
        
$ch curl_init($url);
        
curl_setopt($chCURLOPT_HEADER0);
        
curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
curl_setopt($chCURLOPT_POST1);
        
curl_setopt($chCURLOPT_POSTFIELDS$xml);
        if (
$this->wm_cert != "") {
            
curl_setopt($chCURLOPT_CAINFO$this->wm_cert);
        } else {
            
curl_setopt($chCURLOPT_SSL_VERIFYPEERfalse);
        }

        if(!
$this->classic){
            
curl_setopt($chCURLOPT_SSLKEY$this->rsa_key);
            
curl_setopt($chCURLOPT_SSLKEYPASSWD $this->pass);
            
curl_setopt($chCURLOPT_SSLCERT$this->rsa_cert);
        };

        
$result curl_exec($ch);
        if(
curl_errno($ch) != 0) {
            
$result "";
            
$result .= "<errno>".curl_errno($ch)."</errno>n";
            
$result .= "<error>".curl_error($ch)."</error>n";
        };
        
curl_close($ch);

        return 
$result;
    }


    
# interface X1
    
function X1($orderid$customerwmid$storepurse$amount$desc$address$period$expiration) {
        
$data["reqn"] = $this->_reqn();
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["invoice"] = array(
            
"orderid" => $orderid,
            
"customerwmid" => $customerwmid,
            
"storepurse" => $storepurse,
            
"amount" => $amount,
            
"desc" => $desc,
            
"address" => $address,
            
"period" => $period,
            
"expiration" => $expiration,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign(implode(""array_values($data["invoice"])).$data["reqn"]);
        }

        
$xml $this->_xml($data);
        
$url $this->classic WMXI_URL_CLASSIC_X1 WMXI_URL_LITE_X1;
        
$result $this->_request($url$xml);
        return 
$result;
    }


    
# interface X2
    
function X2($tranid$pursesrc$pursedest$amount$period$pcode$desc$wminvid) {
        
$data["reqn"] = $this->_reqn();
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["trans"] = array(
            
"tranid" => $tranid,
            
"pursesrc" => $pursesrc,
            
"pursedest" => $pursedest,
            
"amount" => $amount,
            
"period" => $period,
            
"pcode" => $pcode,
            
"desc" => $desc,
            
"wminvid" => $wminvid,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign($data["reqn"].implode(""array_values($data["trans"])));
        }

        
$xml $this->_xml($data);
        
$url $this->classic WMXI_URL_CLASSIC_X2 WMXI_URL_LITE_X2;
        
$result $this->_request($url$xml);
        return 
$result;
    }


    
# interface X3
    
function X3($purse$wmtranid$tranid$wminvid$orderid$datestart$datefinish) {
        
$data["reqn"] = $this->_reqn();
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["getoperations"] = array(
            
"purse" => $purse,
            
"wmtranid" => $wmtranid,
            
"tranid" => $tranid,
            
"wminvid" => $wminvid,
            
"orderid" => $orderid,
            
"datestart" => $datestart,
            
"datefinish" => $datefinish,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign($data["getoperations"]["purse"].$data["reqn"]);
        }

        
$xml $this->_xml($data);
        
$url $this->classic WMXI_URL_CLASSIC_X3 WMXI_URL_LITE_X3;
        
$result $this->_request($url$xml);
        return 
$result;
    }


    
# interface X4
    
function X4($purse$wminvid$orderid$datestart$datefinish) {
        
$data["reqn"] = $this->_reqn();
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["getoutinvoices"] = array(
            
"purse" => $purse,
            
"wminvid" => $wminvid,
            
"orderid" => $orderid,
            
"datestart" => $datestart,
            
"datefinish" => $datefinish,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign($data["getoutinvoices"]["purse"].$data["reqn"]);
        }

        
$xml $this->_xml($data);
        
$url $this->classic WMXI_URL_CLASSIC_X4 WMXI_URL_LITE_X4;
        
$result $this->_request($url$xml);
        return 
$result;
    }


    
# interface X5
    
function X5($wmtranid$pcode) {
        
$data["reqn"] = $this->_reqn();
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["finishprotect"] = array(
            
"wmtranid" => $wmtranid,
            
"pcode" => $pcode,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign(implode(""array_values($data["finishprotect"])).$data["reqn"]);
        }

        
$xml $this->_xml($data);
        
$url $this->classic WMXI_URL_CLASSIC_X5 WMXI_URL_LITE_X5;
        
$result $this->_request($url$xml);
        return 
$result;
    }


    
# interface X6
    
function X6($receiverwmid$msgsubj$msgtext) {
        
$data["reqn"] = $this->_reqn();
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["message"] = array(
            
"receiverwmid" => $receiverwmid,
            
"msgsubj" => $msgsubj,
            
"msgtext" => $msgtext,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign($data["message"]["receiverwmid"].$data["reqn"].$data["message"]["msgtext"].$data["message"]["msgsubj"]);
        }

        
$xml $this->_xml($data);
        
$url $this->classic WMXI_URL_CLASSIC_X6 WMXI_URL_LITE_X6;
        
$result $this->_request($url$xml);
        return 
$result;
    }


    
# interface X7
    
function X7($wmid$plan$sign) {
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["testsign"] = array(
            
"wmid" => $wmid,
            
"plan" => $plan,
            
"sign" => $sign,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign($data["wmid"].implode(""array_values($data["testsign"])));
        }

#        $data["testsign"]["plan"] = "<![CDATA[".$data["testsign"]["plan"]."]]>";

        
$xml $this->_xml($data);
        
$url $this->classic WMXI_URL_CLASSIC_X7 WMXI_URL_LITE_X7;
        
$result $this->_request($url$xml);
        return 
$result;
    }


    
# interface X8
    
function X8($wmid$purse) {
        
$data["reqn"] = $this->_reqn();
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["testwmpurse"] = array(
            
"wmid" => $wmid,
            
"purse" => $purse,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign(implode(""array_values($data["testwmpurse"])));
        }

        
$xml $this->_xml($data);
        
$url $this->classic WMXI_URL_CLASSIC_X8 WMXI_URL_LITE_X8;
        
$result $this->_request($url$xml);
        return 
$result;
    }


    
# interface X9
    
function X9($wmid) {
        
$data["reqn"] = $this->_reqn();
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["getpurses"] = array(
            
"wmid" => $wmid,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign(implode(""array_values($data["getpurses"])).$data["reqn"]);
        }

        
$xml $this->_xml($data);
        
$url $this->classic WMXI_URL_CLASSIC_X9 WMXI_URL_LITE_X9;
        
$result $this->_request($url$xml);
        return 
$result;
    }


    
# interface X10
    
function X10($wmid$wminvid$datestart$datefinish) {
        
$data["reqn"] = $this->_reqn();
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["getininvoices"] = array(
            
"wmid" => $wmid,
            
"wminvid" => $wminvid,
            
"datestart" => $datestart,
            
"datefinish" => $datefinish,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign(implode(""array_values($data["getininvoices"])).$data["reqn"]);
        }

        
$xml $this->_xml($data);
        
$url $this->classic WMXI_URL_CLASSIC_X10 WMXI_URL_LITE_X10;
        
$result $this->_request($url$xml);
        return 
$result;
    }


    
# interface X11
    
function X11($passportwmid$dict$info$mode) {
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        
$data["passportwmid"] = $passportwmid;
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["params"] = array(
            
"dict" => $dict,
            
"info" => $info,
            
"mode" => $mode,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign($data["wmid"].$data["passportwmid"]);
        }

        
$xml $this->_xml($data"request");
        
$url $this->classic WMXI_URL_CLASSIC_X11 WMXI_URL_LITE_X11;
        
$result $this->_request($url$xml);
        return 
$result;
    }


    
# interface X13
    
function X13($wmtranid) {
        
$data["reqn"] = $this->_reqn();
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["rejectprotect"] = array(
            
"wmtranid" => $wmtranid,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign($data["rejectprotect"]["wmtranid"].$data["reqn"]);
        }

        
$xml $this->_xml($data);
        
$url $this->classic WMXI_URL_CLASSIC_X13 WMXI_URL_LITE_X13;
        
$result $this->_request($url$xml);
        return 
$result;
    }


    
# interface X14
    
function X14($inwmtranid$amount) {
        
$data["reqn"] = $this->_reqn();
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["trans"] = array(
            
"inwmtranid" => $inwmtranid,
            
"amount" => $amount,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign($data["reqn"].implode(""array_values($data["trans"])));
        }

        
$xml $this->_xml($data);
        
$url $this->classic WMXI_URL_CLASSIC_X14 WMXI_URL_LITE_X14;
        
$result $this->_request($url$xml);
        return 
$result;
    }


    
# interface X15a
    
function X15a($wmid) {
        
$data["reqn"] = $this->_reqn();
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["gettrustlist"] = array(
            
"wmid" => $wmid,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign(implode(""array_values($data["gettrustlist"])).$data["reqn"]);
        }

        
$xml $this->_xml($data);
        
$url $this->classic WMXI_URL_CLASSIC_X15a WMXI_URL_LITE_X15a;
        
$result $this->_request($url$xml);
        return 
$result;
    }


    
# interface X15b
    
function X15b($wmid) {
        
$data["reqn"] = $this->_reqn();
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["gettrustlist"] = array(
            
"wmid" => $wmid,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign(implode(""array_values($data["gettrustlist"])).$data["reqn"]);
        }

        
$xml $this->_xml($data);
        
$url $this->classic WMXI_URL_CLASSIC_X15b WMXI_URL_LITE_X15b;
        
$result $this->_request($url$xml);
        return 
$result;
    }


    
# interface X15c
    
function X15c($masterwmid$slavewmid$purse$ainv$atrans$apurse$atranshist$limit$daylimit$weeklimit$monthlimit) {
        
$data["reqn"] = $this->_reqn();
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["trust"] = array(
            
"masterwmid" => $masterwmid,
            
"slavewmid" => $slavewmid,
            
"purse" => $purse,
            
"limit" => $limit,
            
"daylimit" => $daylimit,
            
"weeklimit" => $weeklimit,
            
"monthlimit" => $monthlimit,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign($data["wmid"].$data["trust"]["purse"].$data["trust"]["masterwmid"].$data["reqn"]);
        }

        
$xml $this->_xml($data);
        
$attr '<trust inv="'
                
.($ainv "1" "0").'" trans="'
                
.($atrans "1" "0").'" purse="'
                
.($apurse "1" "0").'" transhist="'
                
.($atranshist "1" "0").'">';

        
$xml str_replace("<trust>"$attr$xml);
        
$url $this->classic WMXI_URL_CLASSIC_X15c WMXI_URL_LITE_X15c;
        
$result $this->_request($url$xml);
        return 
$result;
    }


    
# interface X16
    
function X16($wmid$pursetype$desc) {
        
$data["reqn"] = $this->_reqn();
        if (
$this->classic) { $data["wmid"] = $this->wmid; }
        if (
$this->classic) { $data["sign"] = ""; }
        
$data["createpurse"] = array(
            
"wmid" => $wmid,
            
"pursetype" => $pursetype,
            
"desc" => $desc,
        );

        if (
$this->classic) {
            
$data["sign"] = $this->_sign($data["createpurse"]["wmid"].$data["createpurse"]["pursetype"].$data["reqn"]);
        }

        
$xml $this->_xml($data);
        
$url $this->classic WMXI_URL_CLASSIC_X16 WMXI_URL_LITE_X16;
        
$result $this->_request($url$xml);
        return 
$result;
    }


}
# WMXI class

?>
Онлайн: 2
Реклама