www.gusucode.com > 08CMS空白站群系统 3.3 繁体 UTF-8 > upload/payonline/alipay/service.php

    <?php
!defined('M_COM') && exit('No Permission');
class alipay_service
{
	var $gateway = 'https://www.alipay.com/cooperate/gateway.do?';         //支付接口
	var $parameter;			//全部需要传递的参数
	var $security_code;  	//安全校验码
	var $mysign;            //签名
	//构造支付宝外部服务接口控制
	function alipay_service($parameter,$security_code,$sign_type = 'MD5',$transport= 'https'){	
		$this->parameter      = $this->para_filter($parameter);
		$this->security_code  = $security_code;
		$this->sign_type      = $sign_type;
		$this->mysign         = '';
		$this->transport      = $transport;
		if($parameter['_input_charset'] == '') $this->parameter['_input_charset'] = 'GBK';
		if($this->transport == 'https'){
			$this->gateway = 'https://www.alipay.com/cooperate/gateway.do?';
		}else $this->gateway = 'http://www.alipay.com/cooperate/gateway.do?';
		$sort_array = array();
		$arg = "";
		$sort_array = $this->arg_sort($this->parameter);
		while (list ($key, $val) = each ($sort_array)){
			$arg.=$key."=".$this->charset_encode($val,$this->parameter['_input_charset'])."&";
		}
		$prestr = substr($arg,0,count($arg)-2);  //去掉最后一个问号
		$this->mysign = $this->sign($prestr.$this->security_code);
	}
	function create_url(){
		$url = $this->gateway;
		$sort_array = array();
		$arg = "";
		$sort_array = $this->arg_sort($this->parameter);
		while (list ($key, $val) = each ($sort_array)){
			$arg.=$key.'='.urlencode($this->charset_encode($val,$this->parameter['_input_charset'])).'&';
		}
		$url.= $arg.'sign=' .$this->mysign .'&sign_type='.$this->sign_type;
		return $url;
	}
	function arg_sort($array){
		ksort($array);
		reset($array);
		return $array;
	}
	function sign($prestr){
		$mysign = "";
		if($this->sign_type == 'MD5'){
			$mysign = md5($prestr);
		}else die();
		return $mysign;
	}
	function para_filter($parameter){ //除去数组中的空值和签名模式
		$para = array();
		while (list ($key, $val) = each ($parameter)){
			if($key == 'sign' || $key == 'sign_type' || $val == '') continue;
			else	$para[$key] = $parameter[$key];
		}
		return $para;
	}
	//实现多种字符编码方式
	function charset_encode($input,$_output_charset ,$_input_charset ='GBK' ){
		$output = "";
		if(!isset($_output_charset)) $_output_charset = $this->parameter['_input_charset '];
		if($_input_charset == $_output_charset || $input ==null){
			$output = $input;
		}elseif (function_exists('mb_convert_encoding')){
			$output = mb_convert_encoding($input,$_output_charset,$_input_charset);
		} elseif(function_exists('iconv')) {
			$output = iconv($_input_charset,$_output_charset,$input);
		} else die('sorry, you have no libs support for charset change.');
		return $output;
	}
}
?>