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