Server : nginx/1.22.1
System : Linux iZwz9daxib3w3i063fw434Z 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64
User : www ( 1000)
PHP Version : 5.6.40
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Directory :  /www/wwwroot/www.jkmold.com/phpcms/modules/pay/classes/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : /www/wwwroot/www.jkmold.com/phpcms/modules/pay/classes/Chinabank.class.php
<?php

defined('IN_PHPCMS') or exit('No permission resources.');

if (isset($set_modules) && $set_modules == TRUE)

{

    $i = isset($modules) ? count($modules) : 0;



    $modules[$i]['code']    = basename(__FILE__, '.class.php');

    $modules[$i]['name']    = L('chinabank', '', 'pay');   

    $modules[$i]['desc']    = L('chinabank_tip', '', 'pay');

    $modules[$i]['is_cod']  = '0';

    $modules[$i]['is_online']  = '1';

    $modules[$i]['author']  = 'PHPCMS开发团队';

    $modules[$i]['website'] = 'http://www.chinabank.com.cn';

    $modules[$i]['version'] = '1.0.0';

    $modules[$i]['config']  = array(

     	array('name' => 'chinabank_account','type' => 'text','value' => ''),

        array('name' => 'chinabank_key','type' => 'text','value' => ''),

    );



    return;

}

pc_base::load_app_class('pay_abstract','','0');



class Chinabank extends paymentabstract{

	

	public function __construct($config = array()) {	

		if (!empty($config)) $this->set_config($config);

      

		$this->config['gateway_url'] = 'https://pay3.chinabank.com.cn/PayGate';

		$this->config['gateway_method'] = 'POST';

		$this->config['return_url'] = return_url('chinabank');

		pc_base::load_app_func('alipay');

	}



	public function getpreparedata() {		

		$prepare_data['v_mid'] = $this->config['chinabank_account'];

		$prepare_data['v_url'] = $this->config['return_url'];

		

		$prepare_data['v_moneytype'] = 'CNY';

		$prepare_data['return_url'] = $this->config['return_url'];		

		

		// 商品信息

		$prepare_data['v_rcvname'] = $this->product_info['name'];

		$prepare_data['v_amount'] = $this->product_info['price'];

		

		//订单信息

		$prepare_data['v_oid'] = $this->order_info['id'];



		//买家信息

		$prepare_data['v_rcvmobile'] = $this->customer_info['telephone'];

		$prepare_data['v_rcvemail'] = $this->order_info['buyer_email'];

		

		//备注		

		$prepare_data['remark1'] = $this->product_info['body'];

		

		$data =$prepare_data['v_amount'].$prepare_data['v_moneytype'].$prepare_data['v_oid'].$prepare_data['v_mid'].$prepare_data['v_url'].$this->config['chinabank_key']; 

		// 数字签名

		$prepare_data['v_md5info'] = strtoupper(md5($data));

		

		return $prepare_data;

	}

	

	/**

	 * 客户端接收数据

	 * 状态码说明  (0 交易完成 1 交易失败 2 交易超时 3 交易处理中 4 交易未支付)

	 */

    public function receive() {

    	$receive_data = $this->filterParameter($_POST);

    	$receive_data = arg_sort($receive_data);

    	if ($receive_data) {

			$v_oid     =trim($receive_data['v_oid']);

			$v_pmode   =trim($receive_data['v_pmode']);  

			$v_pstatus =trim($receive_data['v_pstatus']);

			$v_pstring =trim($receive_data['v_pstring']);

			$v_amount  =trim($receive_data['v_amount']);

			$v_moneytype  =trim($receive_data['v_moneytype']);

			$remark1   =trim($receive_data['remark1' ]);

			$remark2   =trim($receive_data['remark2' ]);

			$v_md5str  =trim($receive_data['v_md5str' ]); 

			$md5string=strtoupper(md5($v_oid.$v_pstatus.$v_amount.$v_moneytype.$this->config['chinabank_key']));

			if ($v_md5str==$md5string) {

				$return_data['order_id'] = $v_oid;

				$return_data['order_total'] = $v_amount;

				$return_data['price'] = $v_amount;

				if($v_pstatus=="20") {

					$return_data['order_status'] = 0;

					return $return_data;

				} else {

					error_log(date('m-d H:i:s',SYS_TIME).'| chinabank GET: order_status=30 |'."\r\n", 3, CACHE_PATH.'pay_error_log.php');

					return false;

				}

			} else { 

				showmessage(L('illegal_sign'));

				return false;

			}

		} else {

			

			error_log(date('m-d H:i:s',SYS_TIME).'| GET: no return |'."\r\n", 3, CACHE_PATH.'pay_error_log.php');

			showmessage(L('illegal_return'));

			return false;

		}   	

    }	



    /**

	 * POST接收数据

	 * 状态码说明  (0 交易完成 1 交易失败 2 交易超时 3 交易处理中 4 交易未支付)

	 */

    public function notify() {

    	$receive_data = $this->filterParameter($_POST);

    	$receive_data = arg_sort($receive_data);

    	if ($receive_data) {

			$v_oid     =trim($receive_data['v_oid']);

			$v_pmode   =trim($receive_data['v_pmode']);  

			$v_pstatus =trim($receive_data['v_pstatus']);

			$v_pstring =trim($receive_data['v_pstring']);

			$v_amount  =trim($receive_data['v_amount']);

			$v_moneytype  =trim($receive_data['v_moneytype']);

			$remark1   =trim($receive_data['remark1' ]);

			$remark2   =trim($receive_data['remark2' ]);

			$v_md5str  =trim($receive_data['v_md5str' ]); 



			$md5string=strtoupper(md5($v_oid.$v_pstatus.$v_amount.$v_moneytype.$this->config['chinabank_key']));

			if ($v_md5str==$md5string) {

				$return_data['order_id'] = $v_oid;

				$return_data['order_total'] = $v_amount;

				$return_data['price'] = $v_amount;

				if($v_pstatus=="20") {

					$return_data['order_status'] = 0;

				} else {

					error_log(date('m-d H:i:s',SYS_TIME).'| chinabank notify: order_status=30 |'."\r\n", 3, CACHE_PATH.'pay_error_log.php');

					return false;

				}

			} else { 

				return false;

			}

		} else {

			

			error_log(date('m-d H:i:s',SYS_TIME).'| notify: no return |'."\r\n", 3, CACHE_PATH.'pay_error_log.php');

			return false;

		}  	

    }

    	

    /**

     * 相应服务器应答状态

     * @param $result

     */

    public function response($result) {

    	if (FALSE == $result) echo 'ok';

		else echo 'success';

    }

    

    /**

     * 返回字符过滤

     * @param $parameter

     */

	private function filterParameter($parameter)

	{

		$para = array();

		foreach ($parameter as $key => $value)

		{

			if ('sign' == $key || 'sign_type' == $key || '' == $value || 'm' == $key  || 'a' == $key  || 'c' == $key   || 'code' == $key ) continue;

			else $para[$key] = $value;

		}

		return $para;

	}

}

?>