Home >Backend Development >PHP Tutorial >dedecms Tenpay interface, dedecms Tenpay_PHP tutorial

dedecms Tenpay interface, dedecms Tenpay_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:10:51998browse

dedecms Tenpay interface, dedecms Tenpay

Used Dream Weaver to build a travel website, URL: http://www.redtourism.cn/ The customer requested Tenpay I tried to pay through it, and after searching online, I either wanted to buy it or pay for it, so I just wrote it myself.

Code:

if(!defined('DEDEINC')) exit('Request Error!');
/**
*Tenpay interface class
*/
class tenpay
{
    var $dsql;
    var $mid;
 
    var $reqURL_onLine = "http://www.tenpay.com";
    
    var $return_url='/plus/carbuyaction.php?dopost=return'; //返回处理地址
        
    /**
* Constructor
*
* @access public
* @param
*
* @return void
*/
    function tenpay()
    {
        global $dsql;
        $this->dsql = $dsql;
    }

    function __construct()
    {
        $this->tenpay();
    }
    
    /**
* The setting interface will send the address
*
* For example: $this->SetReturnUrl($cfg_basehost."/tuangou/control/index.php?ac=pay&orderid=".$p2_Order)
*
* @param string $returnurl will send the address
* @return void
*/
    function SetReturnUrl($returnurl='')
    {
        if (!empty($returnurl))
        {
            $this->return_url = $returnurl;
        }
    }

    /**
* Generate payment code
* @param array $order Order information
* @param array $payment Payment method information
*/
    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'], //Reminder address
'body' => $body, //Transaction description 'Bank_type' = & GT; $ Bank_type, // The default Tenpay of the transaction type

// User IP
'spban_create_ip' = & gt; $ _Server ['remote_addr'], // transaction ip
'fee_type' => '1', ' //Product name

'sign_type' => 'MD5',                                                                           The default version number is 1.0
'input_charset' => 'UTF-8', /System encoding 'GBK'
                 'sign_key_index'                                                                                                                                                                                          'attach' => $attach, // The original data is the same as the default
'product_fee' = & gt; '', // commodity costs
'transport_fee' = & gt; '0', // logistics costs
'time_start' = & gt; date; ("YmdHis"), //Order generation date("YmdHis")
            '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;
    }

    /**
* Response operation
*/
    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 = "支付失败!
返回主页 会员中心";

}
}

/*Process item transactions*/
function success_db($order_sn)
{
$time=time();
$mid= $this->mid;
//Get order information, check order validity
$row = $this->dsql->GetOne("SELECT state,priceCount FROM dede_shops_orders WHERE oid='$ order_sn' ");
                                                                                                                                                                                                Change order status_payment successful* /
 
 $sql = "UPDATE `dede_shops_orders` SET `state`='1' WHERE `oid`='$order_sn' AND `userid`='".$this->mid."'" ;
if($this->dsql->ExecuteNoneQuery($sql))
{
; //Save the verification results to the file
                     return TRUE;
            return FALSE;
                                                                 $fp = fopen(dirname( __FILE__)."/../../data/payment/log.txt","a");
flock($fp, LOCK_EX);
fwrite($fp,$word.", execute Date: ".strftime("%Y-%m-%d %H:%I:%S",time())."rn");
flock($fp, LOCK_UN);
fclose ($fp);
}

}




http://www.bkjia.com/PHPjc/933470.html

www.bkjia.com

true

http: //www.bkjia.com/PHPjc/933470.html

TechArticle

dedecms Tenpay interface, dedecms Tenpay Universal Dreamweaver has made a travel website, URL: http:// www.redtourism.cn/ The customer asked for payment via Tenpay, and after searching online, he either wanted to buy something or wanted money...

Statement:
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