• 全国400电话网上服务平台
    强大号码库资源任选,方便,快捷,快速开通。
    咨询热线:400-1100-266  

    织梦dedecms集成财付通支付接口
    POST TIME:2021-05-23 03:06
    用织梦做了个旅游网站,客户要求财付通支付,上网找了下 不是要买就是要钱,只有自己写了。 
    代码: 
      
    复制代码代码如下: 

    <?php 
    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, 0, -1); 
            $sign .= "key=".$payment['tenpay_key']; 
            $sign = strtolower(md5($sign)); 
            $button = '<div style="text-align:center;"><a href="https://gw.tenpay.com/gateway/pay.htm?'.$param. '&sign='.$sign.'"><button>立即使用财付通支付</button></a></div>'; 
            return $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 = "支付成功! 
     <a href="/">返回主页</a> <a href="/member">会员中心</a>"; 
                   else  return $msg = "支付失败! 
     <a href="/">返回主页</a> <a href="/member">会员中心</a>"; 
                }   

    else{ 
       //return $msg = "支付失败! 
     <a href="/">返回主页</a> <a href="/member">会员中心</a>"; 
      } 
       } 
        /*处理物品交易*/ 
        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())."\r\n"); 
            flock($fp, LOCK_UN); 
            fclose($fp); 
        } 
    }
     
     
     
    
    关于我们 | 付款方式 | 建站知识 | 增值服务 | 网站模板
    Copyright © 2003-2016
    时间:9:00-21:00 (节假日不休)
    版权所有:巨人网络(扬州)科技有限公司
    总部地址:江苏省信息产业基地11号楼四层
    《增值电信业务经营许可证》 苏B2-20120278
    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信

    微信号已复制,请打开微信添加咨询详情!