织梦dedecms集成腾讯财付通支付接口_织梦CMS教程


用织梦做了个装饰网站,客户要求财付通支付,上网找了下,不是要买就是要*,只有自己写了。

 

代码如下:

<?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 = "支付成功!<br> <a href='/'>返回主页</a> <a href='/member'>会员中心</a>";
               else  return $msg = "支付失败!<br> <a href='/'>返回主页</a> <a href='/member'>会员中心</a>";
            }   
}
else{
   //return $msg = "支付失败!<br> <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);
    }
}



# 布吉网站建设招商  # 币种  # 不相符  # 怎样优化网站自然排名  # 贫困生帮扶网站建设  # 潮州模板网站建设公司  # 开封推广全网营销公司*  # 京东关键词有排名没流量  # 阜新建设网站步骤  # 内江营销推广在线咨询平台  # 璞樾营销推广方案  # 漳州seo工具  # 到帐  # 二维码营销推广工具  # 宁波seo优化要怎么做  # 网站seo微星hfqjwl  # 揭阳网站权重优化  # 餐饮加盟网站seo策划  # 网站推广引流隐迅推认准  # 餐饮网站排行榜优化  # 咸宁网站建设费用  # seo批量内容  # 拍卖类网站建设要求  # 购物车  # 织梦CMS教程  # 织梦支付接口  # 织梦支付  # 财付通支付  # 卖家  # 可选  # 宋体  # 帐号  # 找了  # 写了  # 织梦dedecms集成腾讯财付通支付接口  # 要买  # 商户  # 网店  # 支付方式  # 配置文件  # 总金额  # 客户要求  # 清空  # 为空  # 是否正确 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 网络优化91478 】 【 技术知识72672 】 【 云计算0 】 【 GEO优化84317 】 【 优选文章0 】 【 营销推广36048 】 【 网络运营41350 】 【 案例网站102563 】 【 AI智能45237


相关推荐: 织梦的图集编辑器改为完整的文章编辑器的教程_织梦CMS教程  如何快速生成凡客建站的专业级图册?  建站哪里好?优选平台推荐与关键词优化指南  织梦dedecms手机搜索跳转到手机搜索模板教程_织梦CMS教程  织梦根据栏目不同调用不同模板的方法_织梦CMS教程  织梦二次开发sitemap.html地图自动生成在根目录插件_织梦插件  织梦怎么调用缩略图片原图地址?_织梦CMS教程  帝国cms灵动标签怎么调用栏目缩略图_帝国CMS教程  如何彻底删除建站之星生成的Banner?  dedecms织梦网站生成静态速度慢的解决方法_织梦CMS教程  建站10G流量真的够用吗?如何应对访问高峰?  织梦在PHP5.4以上版本后台登录空白的解决方法_织梦CMS教程  如何在万网利用已有域名快速建站?  建站之星备案是否影响网站上线时间?  如何配置FTP站点权限与安全设置?  如何用wdcp快速搭建高效网站?  建站主机系统SEO优化与智能配置核心关键词操作指南  如何快速配置高效服务器建站软件?  香港服务器如何优化才能显著提升网站加载速度?  建站之星数据库主机如何正确配置?  如何快速搭建响应式可视化网站?  织梦后台不支持上传bmp格式图片的解决方法_织梦CMS教程  织梦标签输出的指定栏目新窗口打开方法_织梦CMS教程  如何快速搭建高效WAP手机网站?  如何在香港服务器上快速搭建免备案网站?  建站之星如何实现网站加密操作?  织梦dedecms出现Safe Alert: Request Error step 2提示代码_织梦CMS教程  如何安全更换建站之星模板并保留数据?  建站之星系统存在安全漏洞?如何防范入侵风险?  帝国CMS教程验证码不显示_帝国CMS教程  织梦后台文章管理中增加批量添加tag标签功能_织梦CMS教程  织梦cms tags标签静态化,利于SEO_织梦CMS教程  如何续费美橙建站之星域名及服务?  织梦cms插件图集图片模型整合下载功能 可判断会员金币数会员权限_织梦插件  帝国cms页面浏览量或点击率统计调用代码_帝国CMS教程  如何修改帝国cms的栏目ID号_帝国CMS教程  织梦修改tag标签默认12个字节的长度_织梦CMS教程  织梦dedecms列表页实现无限加载的教程_织梦CMS教程  如何在腾讯云服务器上快速搭建个人网站?  织梦dedecms后台默认登录账号admin的修改方法_织梦CMS教程  用JS实现织梦当前文章标题高亮显示教程_织梦CMS教程  如何通过WDCP绑定主域名及创建子域名站点?  建站助手如何操作?三步打造高效网站  已有域名建站全流程解析:网站搭建步骤与建站工具选择  织梦dedecms动态获取会员总数方法_织梦CMS教程  建站之星数据库连接失败?防火墙如何正确配置?  如何用腾讯建站主机快速创建免费网站?  建站之星模板快速切换与风格调整操作指南  织梦手机站内容页图片自适应去除style样式标签_织梦CMS教程  织梦dedecms搜索页显示条数10条更改_织梦CMS教程 

 2017-10-17

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

南京市珐之弘网络技术有限公司


南京市珐之弘网络技术有限公司

南京市珐之弘网络技术有限公司专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 87067657

 13565296790

 87067657@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.