/b2b/core/model/service/mdl.tbsend.php
PHP | 174 lines | 126 code | 12 blank | 36 comment | 25 complexity | 867fa9330af6f39d526157e0e4a02ce7 MD5 | raw file
- <?php
- include_once('shopObject.php');
- class mdl_tbsend extends shopObject {
- var $error;
- function setparams($params,$charset='utf-8',$sign_type='MD5'){
- if($params['service']==""){
- return '??????????';
- }
- $params['_input_charset']=$charset;
- $PrivateKey = $params['PrivateKey'];
- unset($params['PrivateKey']);
- $params['transport_type'] = 'EXPRESS';
- $params['create_transport_type'] = 'EXPRESS';
- $params['seller_ip'] = $_SERVER['REMOTE_ADDR'];
- //??????????????????
- $params = $this->paraFilter($params);
- //??????????
- $params = $this->argSort($params);
- $params['sign'] = $this->buildMysign($params,$PrivateKey,$sign_type = "MD5");
- //$params['sign'] = md5(urldecode(http_build_query($params)).$PrivateKey);
- $params['sign_type']=strtoupper(trim($sign_type));
- return $params;
- }
-
- function getUrl($params){
- $data = $this->setparams($params);
- if(!is_array($data)){
- return $data;
- }
- $url = ALIPAY_GATEWAY.$this->createLinkstring($data);
- //$url = ALIPAY_GATEWAY.urldecode(http_build_query($data));
- return $url;
- }
- function getContents($params){
- $url = $this->getUrl($params);
- if(!$url)
- return false;
- //$getdata = file_get_contents($url);
- $xml_data = $this->getHttpResponse($url,trim(strtolower('utf-8')));
- if($xml_data){
- $xml=$this->system->loadModel('utility/xml');
- $result=$xml->xml2array($xml_data);
- if(is_array($result)){
- return $result;
- }else{
- $this->error=$result;
- return false;
- }
- }else{
- return false;
- }
- }
-
-
-
- function buildMysign($sort_para,$key,$sign_type = "MD5") {
- //????????????=???????&????????
- $prestr = $this->createLinkstring($sort_para);
- //?????????????????????
- $prestr = $prestr.$key;
- //????????????????
- $mysgin = $this->sign($prestr,$sign_type);
- return $mysgin;
- }
- /**
- * ????????????=???????&????????
- * @param $para ???????
- * return ??????????
- */
- function createLinkstring($para) {
- $arg = "";
- while (list ($key, $val) = each ($para)) {
- $arg.=$key."=".$val."&";
- }
- //??????&??
- $arg = substr($arg,0,count($arg)-2);
-
- //???????????????
- if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
-
- return $arg;
- }
- /**
- * ?????????????
- * @param $para ?????
- * return ?????????????????
- */
- function paraFilter($para) {
- $para_filter = array();
- while (list ($key, $val) = each ($para)) {
- if($key == "sign" || $key == "sign_type" || $val == "")continue;
- else $para_filter[$key] = $para[$key];
- }
- return $para_filter;
- }
- /**
- * ?????
- * @param $para ??????
- * return ??????
- */
- function argSort($para) {
- ksort($para);
- reset($para);
- return $para;
- }
- /**
- * ?????
- * @param $prestr ????????
- * @param $sign_type ???? ????MD5
- * return ????
- */
- function sign($prestr,$sign_type='MD5') {
- $sign='';
- if($sign_type == 'MD5') {
- $sign = md5($prestr);
- }
- return $sign;
- }
- /**
- * ?????????????????????????????
- * ??????????fopen??
- * @param $word ??????????? ??????
- */
- function logResult($word='') {
- $fp = fopen("log.txt","a");
- flock($fp, LOCK_EX) ;
- fwrite($fp,"?????".strftime("%Y%m%d%H%M%S",time())."\n".$word."\n");
- flock($fp, LOCK_UN);
- fclose($fp);
- }
-
- function getHttpResponse($url, $input_charset = '', $time_out = "60") {
- $urlarr = parse_url($url);
- $errno = "";
- $errstr = "";
- $transports = "";
- $responseText = "";
- if($urlarr["scheme"] == "https") {
- $transports = "ssl://";
- $urlarr["port"] = "443";
- } else {
- $transports = "tcp://";
- $urlarr["port"] = "80";
- }
- $fp=@fsockopen($transports . $urlarr['host'],$urlarr['port'],$errno,$errstr,$time_out);
- if(!$fp) {
- die("ERROR: $errno - $errstr<br />\n");
- } else {
- if (trim($input_charset) == '') {
- fputs($fp, "POST ".$urlarr["path"]." HTTP/1.1\r\n");
- }
- else {
- fputs($fp, "POST ".$urlarr["path"].'?_input_charset='.$input_charset." HTTP/1.1\r\n");
- }
- fputs($fp, "Host: ".$urlarr["host"]."\r\n");
- fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
- fputs($fp, "Content-length: ".strlen($urlarr["query"])."\r\n");
- fputs($fp, "Connection: close\r\n\r\n");
- fputs($fp, $urlarr["query"] . "\r\n\r\n");
- while(!feof($fp)) {
- $responseText .= @fgets($fp, 1024);
- }
- fclose($fp);
- $responseText = trim(stristr($responseText,"\r\n\r\n"),"\r\n");
-
- return $responseText;
- }
- }
- }
- ?>