熊猫办公系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

160 lines
3.9 KiB

<?php
if(!defined('InEmpireCMS'))
{
exit();
}
//------------------ 参数开始 ------------------
$agent="";
$service=$use_service;
//商户号
$partner=$payr['payuser'];
//密钥
$paykey=$payr['paykey'];
//卖家支付宝帐户
$seller_email=$payr['payemail'];
//返回地址
$notify_url=$PayReturnUrlQz."e/payapi/shanpay/payend.php";
$return_url=$PayReturnUrlQz."e/payapi/shanpay/payend.php";
//支付金额
$price=$money;
$out_trade_no=$ddno?$ddno:time(); //订单号
esetcookie("checkpaysession",$out_trade_no,0); //设置定单号
//产品信息
$subject=$productname; //商品名称
$body=$productsay; //商品描述
$parameter = array(
"partner" => $partner,
"user_seller" => $seller_email,
"out_order_no" => $out_trade_no,
"subject" => $subject,
"total_fee" => $price,
"body" => $body,
"notify_url" => $notify_url,
"return_url" => $return_url
);
$html_text = buildRequestFormShan($parameter, $paykey);
echo $html_text;
function md5VerifyShan($p1, $p2,$p3,$sign,$key,$pid) {
$prestr = $p1.$p2.$p3.$pid.$key;
$mysgin = md5($prestr);
if($mysgin == $sign) {
return true;
}else {
return false;
}
}
/**
* 建立请求,以表单HTML形式构造(默认)
* @param $para_temp 请求参数数组
*
*/
function buildRequestFormShan($para_temp,$key) {
//待请求参数数组
$para = buildRequestParaShan($para_temp,$key);
$sHtml = "<form id='paysubmit' name='paysubmit' action='http://payment.passpay.net/PayOrder/payorder' accept-charset='utf-8' method='POST'>";
while (list ($key, $val) = each ($para)) {
$sHtml.= "<input type='hidden' name='".$key."' value='".$val."'/>";
}
//submit按钮控件请不要含有name属性
$sHtml = $sHtml."<input type='submit' value='支付进行中...' style='display:none;'></form>";
$sHtml = $sHtml."<script>document.forms['paysubmit'].submit();</script>";
return $sHtml;
}
/**
* 生成要请求给云通付的参数数组
* @param $para_temp 请求前的参数数组
* @return 要请求的参数数组
*/
function buildRequestParaShan($para_temp,$key) {
//除去待签名参数数组中的空值和签名参数
$para_filter = paraFilterShan($para_temp);
//对待签名参数数组排序
$para_sort = argSortShan($para_filter);
//生成签名结果
$mysign = buildRequestMysignShan($para_sort,$key);
//签名结果与签名方式加入请求提交参数组中
$para_sort['sign'] = $mysign;
return $para_sort;
}
/**
* 除去数组中的空值和签名参数
* @param $para 签名参数组
* return 去掉空值与签名参数后的新签名参数组
*/
function paraFilterShan($para) {
$para_filter = array();
while (list ($key, $val) = each ($para)) {
if($key == "sign" || $val == "")continue;
else $para_filter[$key] = $para[$key];
}
return $para_filter;
}
/**
* 对数组排序
* @param $para 排序前的数组
* return 排序后的数组
*/
function argSortShan($para) {
ksort($para);
reset($para);
return $para;
}
/**
* 生成签名结果
* @param $para_sort 已排序要签名的数组
* return 签名结果字符串
*/
function buildRequestMysignShan($para_sort,$key) {
//把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
$prestr = createLinkstringShan($para_sort);
$mysign = md5SignShan($prestr, $key);
return $mysign;
}
function md5SignShan($prestr, $key) {
$key = iconv("GB2312","UTF-8",$key);
$prestr = iconv("GB2312","UTF-8",$prestr);
$prestr = $prestr . $key;
return md5($prestr);
}
/**
* 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串
* @param $para 需要拼接的数组
* return 拼接完成以后的字符串
*/
function createLinkstringShan($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;
}
?>