Home  >  Article  >  Backend Development  >  dedecms integrates Tenpay payment interface, dedecms integrates Tenpay_PHP tutorial

dedecms integrates Tenpay payment interface, dedecms integrates Tenpay_PHP tutorial

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

dedecms integrates Tenpay payment interface, dedecms integrates Tenpay

I used Dreamweaver to build a travel website. The customer asked for payment via Tenpay. I searched online and found that I either wanted to buy it or needed money, so I had to write it myself.

Code:

Copy code The code is as follows:

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();
    }
    /**
* * Setting the 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' = & GT; $ cfg_basehost. $ This- & gt; return_url. "& Code =". $ Payment ['code'], // Reminder address
'body' 'body' => $body, 'Bank_type' = & GT; $ Bank_type, // Trading type default Tenpay
//User ip
'Spborne_create_ip' = & gt; $ _Server ['remote_addr'], // trading IP
'fee_type' 'fee_type' => '1', 'fee_type' //Currency 1 RMB
'subject' 'subject' => $body, //System optional parameters
'sign_type' 'sign_type' => 'MD5', 'sign_type' //Encryption method
'Service_version' = & gt; '1.0', // The interface version number default 1.0
'Input_charset' = & gt; 'UTF-8', // System encoding 'gbk'
'Sign_key_index' = & gt; '1', // key serial number
//Business optional parameters
'Attach' = & gt; $ Attach, // The original data returns the default as empty
'Product_fee' = & gt; '', // Commodity costs
'Transport_fee' = & gt; '0', // Logistics costs
'Time_start' = & gt; date ("ymdhis"), // order generation time date ("ymdhis")
'Time_expire' = & gt; '', // The order failure time
            '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;
/* Clear shopping cart */
           require_once DEDEINC.'/shopcar.class.php';
$cart = new MemberShops();
          $cart->clearItem();
$cart->MakeOrders();
         return $button;
}
/**
*Response operation
​*/
Function respond()
{
​​​​/*Introduce configuration file */
           $code = preg_replace( "#[^0-9a-z-]#i", "", $_GET['code'] );
require_once DEDEDATA.'/payment/'.$code.'.php';
$attach = $_GET['attach'];
                          $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)) {
//Check whether the payment amount matches
                 $row = $this->dsql->GetOne("SELECT * FROM dede_shops_orders WHERE oid = '{$order_sn}'");
If ($row['priceCount'] != $_GET['total_fee'])
                {
                   return $msg = "Payment failed, the payment amount does not match the total price of the product!";
            }
                 $this->mid = $row['userid'];
               /* Check whether the digital signature is correct */
         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 = "Payment successful!
Return to homepage Member Center";
else return $msg = "Payment failed!
Return to homepage Member Center";
                                                                                            }
else{
//return $msg = "Payment failed!
Return to homepage Member Center" ;
}
}
/*Processing item transactions*/
Function success_db($order_sn)
{
         $time=time();
$mid=$this->mid;
​​​​ //Get order information and check the validity of the order
          $row = $this->dsql->GetOne("SELECT state,priceCount FROM dede_shops_orders WHERE oid='$order_sn' ");
If($row['state'] > 0)
           {
             return TRUE;
                                                                                                              /* 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))
           {
                 $this->log_result("verify_success,order number:".$order_sn); //Save the verification results into the file
             return TRUE;
         } else {
                 $this->log_result ("verify_failed, order number: ".$order_sn);//Save the verification results to the file
              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.",Execution date:".strftime("%Y-%m-%d %H:%I:%S",time())."rn");
flock($fp, LOCK_UN);
           fclose($fp);
}
}

http://www.bkjia.com/PHPjc/934020.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/934020.htmlTechArticlededecms integrated Tenpay payment interface, dedecms integrated Tenpay Universal Dreamweaver made a travel website, and the customer asked for financial support Pay through PayTong. I searched online and either wanted to buy or pay. I just wrote it myself...
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