| 
                         用织梦做了个旅游网站,客户要求财付通支付,上网找了下 不是要买就是要钱,只有自己写了。 
		代码: 
		 
		复制代码代码如下:
  
		
		if(!defined('DEDEINC')) exit('Request Error!'); 
		/** 
		*财付通接口类 
		*/ 
		class tenpay 
		{ 
		 var $dsql; 
		 var $mid; 
		 var $reqURL_onLine = "http://www.tenpay.com"; 
		 var $return_url='/plus/carbuyaction.php?dopost=return'; //返回处理地址 
		 /** 
		 * 构造函数 
		 * 
		 * @access public 
		 * @param 
		 * 
		 * @return void 
		 */ 
		 function tenpay() 
		 { 
		   global $dsql; 
		   $this->dsql = $dsql; 
		 } 
		 function __construct() 
		 { 
		   $this->tenpay(); 
		 } 
		 /** 
		  * 设定接口会送地址 
		  * 
		  * 例如: $this->SetReturnUrl($cfg_basehost."/tuangou/control/index.php?ac=pay&orderid=".$p2_Order) 
		  * 
		  * @param   string $returnurl 会送地址 
		  * @return  void 
		  */ 
		 function SetReturnUrl($returnurl='') 
		 { 
		   if (!empty($returnurl)) 
		   { 
		     $this->return_url = $returnurl; 
		   } 
		 } 
		 /** 
		 * 生成支付代码 
		 * @param  array  $order   订单信息 
		 * @param  array  $payment  支付方式信息 
		 */ 
		 function GetCode($order,$payment) 
		 { 
		   global $cfg_basehost,$cfg_cmspath; 
		   //对于二级目录的处理 
		   if(!empty($cfg_cmspath)) $cfg_basehost = $cfg_basehost.'/'.$cfg_cmspath; 
		    $partner   = $payment['tenpay_account']; 
		    $out_trade_no = $order['out_trade_no']; 
		    $total_fee = floatval($order['price']) * 100; 
		     $body = $order['out_trade_no']; 
		     $attach = ''; 
		     $bank_type = 'DEFAULT'; 
		     /* 交易类型:2、虚拟交易,1、实物交易 */ 
		    $trans_type = 1; 
		    $trade_mode=empty($payment['tenpay_pay_method']) ? '1' : $payment['tenpay_pay_method']; 
		   $parameter = array( 
		     'partner'       => $partner, 
		     'out_trade_no'     => $out_trade_no,             //订单号 
		     'total_fee'      => $total_fee,              //总金额 
		     'notify_url'      => $cfg_basehost.$this->return_url."&code=".$payment['code'],//返回地址 
		     'return_url'      => $cfg_basehost.$this->return_url."&code=".$payment['code'],//提醒地址 
		     'body'         => $body,             //交易描述 
		     'bank_type'      => $bank_type,           //交易类型 默认财付通 
		     //用户ip 
		     'spbill_create_ip'   => $_SERVER['REMOTE_ADDR'],    //交易ip 
		     'fee_type'       => '1',           //币种 1 人民币 
		     'subject'       => $body,             //商品名称 
		     //系统可选参数 
		     'sign_type'      => 'MD5',             //加密方式 
		     'service_version'   => '1.0',             //接口版本号 默认1.0 
		     'input_charset'    => 'UTF-8',            //系统编码 'GBK' 
		     'sign_key_index'    => '1',              //密钥序号 
		     //业务可选参数 
		     'attach'        => $attach,     //附加数据 原样返回 默认为空 
		     'product_fee'     => '',        //商品费用 
		     'transport_fee'    => '0',       //物流费用 
		     'time_start'      => date("YmdHis"),  //订单生成时间  date("YmdHis") 
		     'time_expire'     => '',        //订单失效时间 
		     'buyer_id'       => '',        //买方财付通帐号 
		     'goods_tag'      => '',        //商品标记 
		     'trade_mode'      => $trade_mode,   //交易模式(1.即时到帐模式,2.中介担保模式,3.后台选择(卖家进入支付中心列表选择)) 
		     'transport_desc'    => '',        //物流说明 
		     'trans_type'      => $trans_type,   //交易类型 
		     'agentid'       => '',        //平台ID 
		     'agent_type'      => '',        //代理模式(0.无代理,1.表示卡易售模式,2.表示网店模式) 
		     'seller_id'      => ''         //卖家商户号 
		   ); 
		   ksort($parameter); 
		   reset($parameter); 
		   $param = ''; 
		   $sign = ''; 
		   foreach ($parameter AS $key => $val) 
		   { 
		     $param .= "$key=" .urlencode($val). "&"; 
		     if("" != $val && "sign" != $key) { 
		       $sign .= "$key=$val&"; 
		     } 
		   } 
		   $param = substr($param,-1); 
		   $sign .= "key=".$payment['tenpay_key']; 
		   $sign = strtolower(md5($sign)); 
		   $button = '
		 /* 清空购物车 */ 
		   require_once DEDEINC.'/shopcar.class.php'; 
		   $cart   = new MemberShops(); 
		   $cart->clearItem(); 
		   $cart->MakeOrders(); 
		   return $button; 
		 } 
		 /** 
		 * 响应操作 
		 */ 
		 function respond() 
		 { 
		   /* 引入配置文件 */ 
		   $code = preg_replace( "#[^0-9a-z-]#i","",$_GET['code'] ); 
		   require_once DEDEDATA.'/payment/'.$code.'.php'; 
		   $attach     = $_GET['attach']; 
		   $trade_state  = $_GET['trade_state']; 
		   $total_fee   = $_GET['total_fee']; 
		   $out_trade_no = trim($_GET['out_trade_no']); 
		if(preg_match ("/S-P[0-9]+RN[0-9]/",$order_sn)) { 
		     //检查支付金额是否相符 
		     $row = $this->dsql->GetOne("SELECT * FROM ym_shops_orders WHERE oid = '{$order_sn}'"); 
		     if ($row['priceCount'] != $_GET['total_fee']) 
		     { 
		       return $msg = "支付失败,支付金额与商品总价不相符!"; 
		     } 
		     $this->mid = $row['userid']; 
		    /* 检查数字签名是否正确 */ 
		   ksort($_GET); 
		   reset($_GET); 
		   $sign = ''; 
		   foreach ($_GET AS $key => $val) 
		   { 
		     if("" != $val && "sign" != $key && $key != 'code') { 
		       $sign .= "$key=$val&"; 
		     } 
		   } 
		     $sign .= "key=".$payment['tenpay_key']; 
		if(strtolower(md5($sign))==strtolower($_GET['sign'])) 
		{ 
		     if($trade_state==0) 
		     {    
		          /* 改变订单状态 */ 
		       if($this->success_db($out_trade_no)) 
		       return $msg = "支付成功! 
		
		       else return $msg = "支付失败! 
		
		     }  
		} 
		else{ 
		 //return $msg = "支付失败! 
		
		} 
		 } 
		 /*处理物品交易*/ 
		 function success_db($order_sn) 
		 { 
		   $time=time(); 
		   $mid=$this->mid; 
		   //获取订单信息,检查订单的有效性 
		   $row = $this->dsql->GetOne("SELECT state,priceCount FROM ym_shops_orders WHERE oid='$order_sn' "); 
		   if($row['state'] > 0) 
		   { 
		     return TRUE; 
		   }  
		   /* 改变订单状态_支付成功 */ 
		   $sql = "UPDATE `ym_shops_orders` SET `state`='1' WHERE `oid`='$order_sn' AND `userid`='".$this->mid."'"; 
		   if($this->dsql->ExecuteNoneQuery($sql)) 
		   { 
		     $this->log_result("verify_success,订单号:".$order_sn); //将验证结果存入文件 
		     return TRUE; 
		   } else { 
		     $this->log_result ("verify_failed,订单号:".$order_sn);//将验证结果存入文件 
		     return FALSE; 
		   } 
		 } 
		 function log_result($word) { 
		   global $cfg_cmspath; 
		   $fp = fopen(dirname(__FILE__)."/../../data/payment/log.txt","a"); 
		   flock($fp,LOCK_EX) ; 
		   fwrite($fp,$word.",执行日期:".strftime("%Y-%m-%d %H:%I:%S",time())."rn"); 
		   flock($fp,LOCK_UN); 
		   fclose($fp); 
		 } 
		}                         (编辑:莱芜站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |