Home Backend Development PHP Tutorial dedecms集成财付通支付接口_PHP

dedecms集成财付通支付接口_PHP

May 31, 2016 pm 01:18 PM
dedecms Payment interface Tenpay

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

代码:

代码如下:


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 = '

';
        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 dede_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 dede_shops_orders WHERE oid='$order_sn' ");
        if($row['state'] > 0)
        {
            return TRUE;
        } 
        /* 改变订单状态_支付成功 */
        $sql = "UPDATE `dede_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);
    }
}
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Where is the imperial cms resource network template? Where is the imperial cms resource network template? Apr 17, 2024 am 10:00 AM

Empire CMS template download location: Official template download: https://www.phome.net/template/ Third-party template website: https://www.dedecms.com/diy/https://www.0978.com.cn /https://www.jiaocheng.com/Installation method: Download template Unzip template Upload template Select template

How to use dedecms How to use dedecms Apr 16, 2024 pm 12:15 PM

Dedecms is an open source Chinese CMS system that provides content management, template system and security protection. The specific usage includes the following steps: 1. Install Dedecms. 2. Configure the database. 3. Log in to the management interface. 4. Create content. 5. Set up the template. 6. Manage users. 7. Maintain the system.

Accurate and reliable dedecms conversion tool evaluation report Accurate and reliable dedecms conversion tool evaluation report Mar 12, 2024 pm 07:03 PM

Accurate and reliable dedecms conversion tool evaluation report With the rapid development of the Internet era, website construction has become one of the necessary tools for many companies and individuals. In website construction, using a content management system (CMS) can manage website content and functions more conveniently and efficiently. Among them, dedecms, as a well-known CMS system, is widely used in various website construction projects. However, sometimes we are faced with the need to convert the dedecms website to other formats, in which case we need to use a conversion tool

How to upload local videos to dedecms How to upload local videos to dedecms Apr 16, 2024 pm 12:39 PM

How to upload local videos using Dedecms? Prepare the video file in a format that is supported by Dedecms. Log in to the Dedecms management backend and create a new video category. Upload video files on the video management page, fill in the relevant information and select the video category. To embed a video while editing an article, enter the file name of the uploaded video and adjust its dimensions.

How dedecms implements template replacement How dedecms implements template replacement Apr 16, 2024 pm 12:12 PM

Template replacement can be implemented in Dedecms through the following steps: modify the global.cfg file and set the required language pack. Modify the taglib.inc.php hook file and add support for language suffix template files. Create a new template file with a language suffix and modify the required content. Clear Dedecms cache.

A simple way to learn dedecms encoding conversion function A simple way to learn dedecms encoding conversion function Mar 14, 2024 pm 02:09 PM

Learning dedecms encoding conversion function is not complicated. Simple code examples can help you quickly master this skill. In dedecms, the encoding conversion function is usually used to deal with problems such as Chinese garbled characters and special characters to ensure the normal operation of the system and the accuracy of data. The following will introduce in detail how to use the encoding conversion function of dedecms, allowing you to easily cope with various encoding-related needs. 1.UTF-8 to GBK In dedecms, if you need to convert UTF-8 encoded string to G

What loopholes does dedecms have? What loopholes does dedecms have? Aug 03, 2023 pm 03:56 PM

DedeCMS is an open source content management system that has some potential vulnerabilities and security risks: 1. SQL injection vulnerability. Attackers can perform unauthorized operations or obtain sensitive data by constructing malicious SQL query statements; 2. File Upload vulnerability, attackers can upload files containing malicious code to the server to execute arbitrary code or obtain server permissions; 3. Sensitive information leakage; 4. Unauthenticated vulnerability exploitation.

What does dedecms mean? What does dedecms mean? Apr 16, 2024 pm 12:48 PM

dedecms is an open source PHP content management system, specially designed for Chinese websites, with the following functions and features: User-friendly interface Powerful editor Flexible template system Multi-language support Built-in search engine optimization (SEO) Powerful user management system The advantages of the plug-in system dedecms include open source and free, high scalability, active community, easy to use and highly customizable.

See all articles