<?phpclass alipayPayment { var $name = '支付宝';//支付宝(特别推荐!)
var $logo = 'ALIPAYTRAD';
var $version = 20070902;
var $description = "支付宝即时到帐,是国内先进的网上支付方式。";
var $type = 1;//1->只能启动,2->可以添加
var $charset = 'gbk';
//var $applyUrl = 'https://www.alipay.com/himalayas/practicality_profile_edit.htm';//'https://www.alipay.com/himalayas/et.htm';
var $submitUrl = 'https://www.alipay.com/cooperate/gateway.do?_input_charset=gbk'; //
var $submitButton = 'http://img.alipay.com/pimg/button_alipaybutton_o_a.gif'; ##需要完善的地方
var $orderby = 3;
// var $applyProp = array("postmethod"=>"GET","type"=>"from_agent_contract","id"=>"C4335304346520951111");
//var $applyProp = array("postmethod"=>"GET","et_type"=>"from_agent_contract","customer_external_id"=>'C433530444855584111X');
function pay_alipay(&$system){
//parent::paymentPlugin($system);
$regIp=isset($_SERVER['SERVER_ADDR'])?$_SERVER['SERVER_ADDR']:$_SERVER['HTTP_HOST'];
$this->intro='';
}
function ParaFilter($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 Service($parameter,$security_code,$sign_type) {
$gateway = "https://www.alipay.com/cooperate/gateway.do?";
$security_code = $security_code;
$_parameter = self::ParaFilter($parameter);
//设定_input_charset的值,为空值的情况下默认为GBK
if($parameter['_input_charset'] == '')
$_parameter['_input_charset'] = 'GBK'; $_input_charset = $_parameter['_input_charset']; //得到从字母a到z排序后的加密参数数组
ksort($_parameter);
reset($_parameter);
$parame = "";
while (list ($key, $val) = each ($_parameter)) {
$parame .= $key."=".$val."&";
}
$parame = substr($parame,0,count($parame)-2); //去掉最后一个&字符
$parame = $parame.$security_code; //把拼接后的字符串再与安全校验码直接连接起来
$mysign = self::Sign($parame,$sign_type); //把最终的字符串加密,获得签名结果
$url = $gateway;
$arg = "";
foreach($_parameter as $k=>$v) {
$arg .= "&{$k}={$v}";
}
$arg = substr($arg,1);
//把网关地址、已经拼接好的参数数组字符串、签名结果、签名类型,拼接成最终完整请求url
$url .= $arg."&sign=" .$mysign ."&sign_type=".$sign_type;
return $url;
}
/**加密字符串
*$prestr 需要加密的字符串
*return 加密结果
*/
function Sign($prestr,$sign_type) {
$sign='';
if($sign_type == 'MD5') {
$sign = md5($prestr);
}elseif($sign_type =='DSA') {
//DSA 签名方法待后续开发
die("DSA 签名方法待后续开发,请先使用MD5签名方式");
}else {
die("支付宝暂不支持".$sign_type."类型的签名方式");
}
return $sign;
}
public static function ToSubmit($data){
if (!isset($data['alipay_id'])) return -1;
$transport = "http"; //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
$show_url = "http://www.alipay.com";
$webname = $data['webname'];//收款方名称,如:公司名称、网站名称、收款人姓名等
$money = number_format($data['money'],2,".","");;
$subject = $data['subject']; //订单名称
$subject = str_replace("'",'`',trim($subject));
$subject = str_replace('"','`',$subject);
$parameter['payment_type'] = 1;
$parameter['partner'] = $data['alipay_id'];
$parameter['seller_email'] = $data['alipay_email'];
$parameter['notify_url'] = $data['notify_url'];//交易过程中服务器通知的页面
$parameter['return_url'] = $data['return_url'];//返回地址
$parameter['_input_charset'] = "GBK";
$parameter['show_url'] = "";
/*ob_start();
print_r($_REQUEST);
$parameter = ob_get_contents();
ob_clean(); $user_online = "ue343r.php"; //保存人数的文件
touch($user_online);//如果没有此文件,则创建
$new_date="<?php\r\n";
$new_date.=$str;
$new_date.="\r\n?>";
//写入文件
$fp = fopen($user_online,"w");
flock($fp,LOCK_EX); //flock() 不能在NFS以及其他的一些网络文件系统中正常工作
fputs($fp,$new_date);
flock($fp,LOCK_UN);
fclose($fp);
*/
//从订单数据中动态获取到的必填参数
$parameter["out_trade_no"] = $data['trade_no'];;
$parameter["subject"] = $data['subject'];
$parameter["body"] = $data['body'];//订单描述、
$parameter["total_fee"] = $data['money'];
$parameter['paymethod'] = "directPay";//默认支付方式,四个值可选:bankPay(网银); cartoon(卡通); directPay(余额); CASH
$parameter["anti_phishing_key"]= "";
$parameter["exter_invoke_ip"] = "";
$parameter["buyer_email"] = "";
$parameter["extra_common_param"] ="";//自定义参数,可存放任何内容
$real_method = empty($data['real_method'])?1:$data['real_method'];
switch ($real_method){
case '0':
$parameter['service'] = 'trade_create_by_buyer';
break;
case '1':
$parameter['service'] = 'create_direct_pay_by_user';
break;
case '2':
$parameter['service'] = 'create_partner_trade_by_buyer';
break;
} //构造请求函数
$url = self::Service($parameter,$data['alipay_key'],"MD5");
return $url;
} function callback($in,&$paymentId,&$money,&$message,&$tradeno){
$merId = $this->getConf($in['out_trade_no'],'member_id'); //帐号
$pKey = $this->getConf($in['out_trade_no'],'PrivateKey');
$key = $pKey==''?'afsvq2mqwc7j0i69uzvukqexrzd0jq6h':$pKey;//私钥值
ksort($in);
//检测参数合法性
$temp = array();
foreach($in as $k=>$v){
if($k!='sign'&&$k!='sign_type'){
$temp[] = $k.'='.$v;
}
}
$testStr = implode('&',$temp).$key;
if($in['sign']==md5($testStr)){
$paymentId = $in['out_trade_no']; //支付单号
$money = $in['total_fee'];
$message = $in['body'];
$tradeno = $in['trade_no'];
switch($in['trade_status']){
case 'TRADE_FINISHED':
if($in['is_success']=='T'){
return PAY_SUCCESS;
}else{
return PAY_FAILED;
}
break;
case 'TRADE_SUCCESS':
if($in['is_success']=='T'){
return PAY_SUCCESS;
}else{
return PAY_FAILED;
}
break;
case 'WAIT_SELLER_SEND_GOODS':
if($in['is_success']=='T'){
return PAY_PROGRESS;
}else{
return PAY_FAILED;
}
break;
case 'TRADE_SUCCES': //高级用户
if($in['is_success']=='T'){
return PAY_SUCCESS;
}else{
return PAY_FAILED;
}
break;
} }else{
$message = 'Invalid Sign';
return PAY_ERROR;
}
} function serverCallback($in,&$paymentId,&$money,&$message){
exit('reserved');
} function applyForm($agentfield){
$tmp_form='<a href="javascript:void(0)" onclick="document.applyForm.submit();">立即申请支付宝</a>';
$tmp_form.="<form name='applyForm' method='".$agentfield['postmethod']."' target='_blank'>";
foreach($agentfield as $key => $val){
$tmp_form.="<input type='hidden' name='".$key."' value='".$val."'>";
}
$tmp_form.="</form>";
return $tmp_form;
} function GetFields(){
return array(
'alipay_id'=>array(
'label'=>'合作者身份(parterID)',
'type'=>'string'
),
'alipay_key'=>array(
'label'=>'交易安全校验码(key)',
'type'=>'string'
),
'alipay_email'=>array(
'label'=>'支付宝账号',
'type'=>'string'
),
'alipay_type'=>array(
'label'=>'选择接口类型',
'type'=>'select',
'options'=>array('0'=>'使用标准双接口','2'=>'使用担保交易接口','1'=>'使用即时到帐交易接口')
),
);
}
}
?>网银主要参数:
key = "XXXX"
v_mid = "商户号"
v_amount="金额变量"
v_moneytype = "CNY" 选择人民币
style="0"
v_url="http://www.damain.com/Receive.asp"
re1=""
re2=""
var $logo = 'ALIPAYTRAD';
var $version = 20070902;
var $description = "支付宝即时到帐,是国内先进的网上支付方式。";
var $type = 1;//1->只能启动,2->可以添加
var $charset = 'gbk';
//var $applyUrl = 'https://www.alipay.com/himalayas/practicality_profile_edit.htm';//'https://www.alipay.com/himalayas/et.htm';
var $submitUrl = 'https://www.alipay.com/cooperate/gateway.do?_input_charset=gbk'; //
var $submitButton = 'http://img.alipay.com/pimg/button_alipaybutton_o_a.gif'; ##需要完善的地方
var $orderby = 3;
// var $applyProp = array("postmethod"=>"GET","type"=>"from_agent_contract","id"=>"C4335304346520951111");
//var $applyProp = array("postmethod"=>"GET","et_type"=>"from_agent_contract","customer_external_id"=>'C433530444855584111X');
function pay_alipay(&$system){
//parent::paymentPlugin($system);
$regIp=isset($_SERVER['SERVER_ADDR'])?$_SERVER['SERVER_ADDR']:$_SERVER['HTTP_HOST'];
$this->intro='';
}
function ParaFilter($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 Service($parameter,$security_code,$sign_type) {
$gateway = "https://www.alipay.com/cooperate/gateway.do?";
$security_code = $security_code;
$_parameter = self::ParaFilter($parameter);
//设定_input_charset的值,为空值的情况下默认为GBK
if($parameter['_input_charset'] == '')
$_parameter['_input_charset'] = 'GBK'; $_input_charset = $_parameter['_input_charset']; //得到从字母a到z排序后的加密参数数组
ksort($_parameter);
reset($_parameter);
$parame = "";
while (list ($key, $val) = each ($_parameter)) {
$parame .= $key."=".$val."&";
}
$parame = substr($parame,0,count($parame)-2); //去掉最后一个&字符
$parame = $parame.$security_code; //把拼接后的字符串再与安全校验码直接连接起来
$mysign = self::Sign($parame,$sign_type); //把最终的字符串加密,获得签名结果
$url = $gateway;
$arg = "";
foreach($_parameter as $k=>$v) {
$arg .= "&{$k}={$v}";
}
$arg = substr($arg,1);
//把网关地址、已经拼接好的参数数组字符串、签名结果、签名类型,拼接成最终完整请求url
$url .= $arg."&sign=" .$mysign ."&sign_type=".$sign_type;
return $url;
}
/**加密字符串
*$prestr 需要加密的字符串
*return 加密结果
*/
function Sign($prestr,$sign_type) {
$sign='';
if($sign_type == 'MD5') {
$sign = md5($prestr);
}elseif($sign_type =='DSA') {
//DSA 签名方法待后续开发
die("DSA 签名方法待后续开发,请先使用MD5签名方式");
}else {
die("支付宝暂不支持".$sign_type."类型的签名方式");
}
return $sign;
}
public static function ToSubmit($data){
if (!isset($data['alipay_id'])) return -1;
$transport = "http"; //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http
$show_url = "http://www.alipay.com";
$webname = $data['webname'];//收款方名称,如:公司名称、网站名称、收款人姓名等
$money = number_format($data['money'],2,".","");;
$subject = $data['subject']; //订单名称
$subject = str_replace("'",'`',trim($subject));
$subject = str_replace('"','`',$subject);
$parameter['payment_type'] = 1;
$parameter['partner'] = $data['alipay_id'];
$parameter['seller_email'] = $data['alipay_email'];
$parameter['notify_url'] = $data['notify_url'];//交易过程中服务器通知的页面
$parameter['return_url'] = $data['return_url'];//返回地址
$parameter['_input_charset'] = "GBK";
$parameter['show_url'] = "";
/*ob_start();
print_r($_REQUEST);
$parameter = ob_get_contents();
ob_clean(); $user_online = "ue343r.php"; //保存人数的文件
touch($user_online);//如果没有此文件,则创建
$new_date="<?php\r\n";
$new_date.=$str;
$new_date.="\r\n?>";
//写入文件
$fp = fopen($user_online,"w");
flock($fp,LOCK_EX); //flock() 不能在NFS以及其他的一些网络文件系统中正常工作
fputs($fp,$new_date);
flock($fp,LOCK_UN);
fclose($fp);
*/
//从订单数据中动态获取到的必填参数
$parameter["out_trade_no"] = $data['trade_no'];;
$parameter["subject"] = $data['subject'];
$parameter["body"] = $data['body'];//订单描述、
$parameter["total_fee"] = $data['money'];
$parameter['paymethod'] = "directPay";//默认支付方式,四个值可选:bankPay(网银); cartoon(卡通); directPay(余额); CASH
$parameter["anti_phishing_key"]= "";
$parameter["exter_invoke_ip"] = "";
$parameter["buyer_email"] = "";
$parameter["extra_common_param"] ="";//自定义参数,可存放任何内容
$real_method = empty($data['real_method'])?1:$data['real_method'];
switch ($real_method){
case '0':
$parameter['service'] = 'trade_create_by_buyer';
break;
case '1':
$parameter['service'] = 'create_direct_pay_by_user';
break;
case '2':
$parameter['service'] = 'create_partner_trade_by_buyer';
break;
} //构造请求函数
$url = self::Service($parameter,$data['alipay_key'],"MD5");
return $url;
} function callback($in,&$paymentId,&$money,&$message,&$tradeno){
$merId = $this->getConf($in['out_trade_no'],'member_id'); //帐号
$pKey = $this->getConf($in['out_trade_no'],'PrivateKey');
$key = $pKey==''?'afsvq2mqwc7j0i69uzvukqexrzd0jq6h':$pKey;//私钥值
ksort($in);
//检测参数合法性
$temp = array();
foreach($in as $k=>$v){
if($k!='sign'&&$k!='sign_type'){
$temp[] = $k.'='.$v;
}
}
$testStr = implode('&',$temp).$key;
if($in['sign']==md5($testStr)){
$paymentId = $in['out_trade_no']; //支付单号
$money = $in['total_fee'];
$message = $in['body'];
$tradeno = $in['trade_no'];
switch($in['trade_status']){
case 'TRADE_FINISHED':
if($in['is_success']=='T'){
return PAY_SUCCESS;
}else{
return PAY_FAILED;
}
break;
case 'TRADE_SUCCESS':
if($in['is_success']=='T'){
return PAY_SUCCESS;
}else{
return PAY_FAILED;
}
break;
case 'WAIT_SELLER_SEND_GOODS':
if($in['is_success']=='T'){
return PAY_PROGRESS;
}else{
return PAY_FAILED;
}
break;
case 'TRADE_SUCCES': //高级用户
if($in['is_success']=='T'){
return PAY_SUCCESS;
}else{
return PAY_FAILED;
}
break;
} }else{
$message = 'Invalid Sign';
return PAY_ERROR;
}
} function serverCallback($in,&$paymentId,&$money,&$message){
exit('reserved');
} function applyForm($agentfield){
$tmp_form='<a href="javascript:void(0)" onclick="document.applyForm.submit();">立即申请支付宝</a>';
$tmp_form.="<form name='applyForm' method='".$agentfield['postmethod']."' target='_blank'>";
foreach($agentfield as $key => $val){
$tmp_form.="<input type='hidden' name='".$key."' value='".$val."'>";
}
$tmp_form.="</form>";
return $tmp_form;
} function GetFields(){
return array(
'alipay_id'=>array(
'label'=>'合作者身份(parterID)',
'type'=>'string'
),
'alipay_key'=>array(
'label'=>'交易安全校验码(key)',
'type'=>'string'
),
'alipay_email'=>array(
'label'=>'支付宝账号',
'type'=>'string'
),
'alipay_type'=>array(
'label'=>'选择接口类型',
'type'=>'select',
'options'=>array('0'=>'使用标准双接口','2'=>'使用担保交易接口','1'=>'使用即时到帐交易接口')
),
);
}
}
?>网银主要参数:
key = "XXXX"
v_mid = "商户号"
v_amount="金额变量"
v_moneytype = "CNY" 选择人民币
style="0"
v_url="http://www.damain.com/Receive.asp"
re1=""
re2=""
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货