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

    织梦dedecms集成腾讯财付通支付接口
    POST TIME:2021-05-23 02:50

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

     

    代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    <?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);
        }
    }
     

    
    关于我们 | 付款方式 | 建站知识 | 增值服务 | 网站模板
    Copyright © 2003-2016
    时间:9:00-21:00 (节假日不休)
    版权所有:巨人网络(扬州)科技有限公司
    总部地址:江苏省信息产业基地11号楼四层
    《增值电信业务经营许可证》 苏B2-20120278
    X

    截屏,微信识别二维码

    微信号:veteran88

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

     打开微信

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