www.gusucode.com > ShopEx481 & PHPWind 整合版码程序 > plugins/payment/pay.alipaytrad.php

    <?php
require('paymentPlugin.php');
class pay_alipaytrad extends paymentPlugin{

	var $name = '支付宝【免费接口】';
	var $logo = 'ALIPAYTRAD';
	var $version = 20080523;
	var $charset = 'utf8';
	var $applyUrl = 'https://www.alipay.com/himalayas/market.htm';
	var $intro = '支付宝网站(www.alipay.com) 是国内先进的网上支付平台。<br>本接口是支付宝免费接口,无需预付交易手续费即可使用,目前支付宝按照每笔<font color="red">2%</font>的比例(以支付宝最新规定为准)按单自动扣除手续费。<br><br><font color="red">本接口需点击下方【立即申请】按钮进行免费的在线签约后方可使用。</font>';
	var $submitUrl = 'https://www.alipay.com/cooperate/gateway.do?_input_charset=utf-8'; //  
	var $submitButton = 'http://img.alipay.com/pimg/button_alipaybutton_o_a.gif'; ##需要完善的地方
	var $supportCurrency = array("CNY"=>"01");
	var $supportArea =  array("AREA_CNY");
	var $orderby = 4;
	var $applyProp = array("postmethod"=>"GET","type"=>"from_agent_contract","id"=>"C433530444855584111X");
	var $head_charset = "utf-8";
	function toSubmit($payment){
		
		$merId = $this->getConf($payment['M_OrderId'], 'member_id'); //帐号
		$pKey = $this->getConf($payment['M_OrderId'], 'PrivateKey');
		$key = $pKey==''?'afsvq2mqwc7j0i69uzvukqexrzd0jq6h':$pKey;//私钥值,
		$ret_url = $this->callbackUrl;
		$server_url = $this->serverCallbackUrl;
		
		$amount = number_format($payment['M_Amount'],2,".","");
		$shopName = $this->system->getConf('system.shopname');
		if(strpos($shopName,'&')){
			$message = '网店名称中含有非法字符,请联系你的商户!';
			return PAY_FAILED;
		}
		$subject = $shopName." 订单号:".$payment['M_OrderNO'];
		$subject = str_replace("'",'`',trim($subject));
		$subject = str_replace('"','`',$subject);
		$orderDetail = str_replace("'",'`',trim($orderDetail));
		$orderDetail = str_replace('"','`',$orderDetail);
		$return = array();
		$virtual_method = $this->getConf($payment['M_OrderId'], 'virtual_method');
		$real_method = $this->getConf($payment['M_OrderId'], 'real_method');
		$is_instant = $this->getConf($payment['M_OrderId'], 'is_instant');
		if(!$is_instant){
			$return['service'] = 'trade_create_by_buyer';
		}else{
			$return['service'] = $real_method==1?'create_direct_pay_by_user':'trade_create_by_buyer';
		}

		$return['logistics_type'] = "POST";
		$return['logistics_payment'] = "BUYER_PAY";
		$return['logistics_fee'] = '0.00';

		$return['agent'] = 'C433530444855584111X';
		$return['payment_type'] = 1;
		$return['partner'] = $this->getConf($payment['M_OrderId'], 'PrivateKey')==''?'2088002003028751':$merId;
		$return['return_url'] = $ret_url;		
		$return['notify_url'] = $server_url;
		$return['subject'] = $subject;
		$return['body'] = '网店订单';
		$return['out_trade_no'] = $payment['M_OrderId'];
		$return['price'] = $amount;
		$return['quantity'] = 1;
		
		if(preg_match("/^\d{16}$/",$merId)){
			$return['seller_id'] = $merId;
		}else{
			$return['seller_email'] = $merId;
		}
		$return['buyer_msg'] =  $payment['M_Remark']?$payment['M_Remark']:'无留言';
		$return['_input_charset'] = "utf-8";
		ksort($return);
		reset($return);
		$mac= "";
		foreach($return as $k=>$v)
		{
			$mac .= "&{$k}={$v}";
		}
		$mac = substr($mac,1);
		$return['sign'] = md5($mac.$key);  //验证信息
		$return['sign_type'] = 'MD5';  //验证信息
		//$return['ikey']=$key;
		unset($return['_input_charset']);
		return $return;
	}

	function callback($in,&$paymentId,&$money,&$message,&$tradeno){
		$merId = $this->getConf($in['out_trade_no'],'member_id'); //帐号
		$pKey = $this->getConf($in['out_trade_no'],'PrivateKey');
		$key = $pKey==''?'afsvq2mqwc7j0i69uzvukqexrzd0jq6h':$pKey;//私钥值
		ksort($in);
		//检测参数合法性
		$temp = array();
		foreach($in as $k=>$v){
			if($k!='sign'&&$k!='sign_type'&&$k!='gOo'){
				$temp[] = $k.'='.$v;
			}
		}
		$testStr = implode('&',$temp).$key;
		if($in['sign']==md5($testStr)){
			$paymentId = $in['out_trade_no'];	//支付单号
			$money = $in['total_fee'];
			$message = $in['body'];
			$tradeno = $in['trade_no'];
			switch($in['trade_status']){
				case 'TRADE_FINISHED':
					if($in['is_success']=='T'){						
						return PAY_SUCCESS;
					}else{						
						return PAY_FAILED;
					}
					break;
				case 'WAIT_SELLER_SEND_GOODS':
					if($in['is_success']=='T'){
						return PAY_PROGRESS;
					}else{						
						return PAY_FAILED;
					}
					break;
			}

		}else{
			$message = 'Invalid Sign';			
			return PAY_ERROR;
		} 
	}

	function serverCallback($in,&$paymentId,&$money,&$message){
		exit('reserved');
	}

    function applyForm($agentfield){
	  $tmp_form='<a href="javascript:void(0)" onclick="document.applyForm.submit();">立即申请</a>';
	  $tmp_form.="<form name='applyForm' method='".$agentfield['postmethod']."' action='http://top.shopex.cn/recordpayagent.php' target='_blank'>";
	  foreach($agentfield as $key => $val){
			$tmp_form.="<input type='hidden' name='".$key."' value='".$val."'>";
	  }
	  $tmp_form.="</form>";
	  return $tmp_form;
    }

	function getfields(){
		return array(
			'member_id'=>array(
				'label'=>'合作者身份(parterID)',
				'type'=>'string'
			),
			'PrivateKey'=>array(
				'label'=>'交易安全校验码(key)',
				'type'=>'string'
			),
			'real_method'=>array(
					'label'=>'选择实体商品接口',
					'type'=>'select',
					'options'=>array('0'=>'使用普通实物商品交易接口','1'=>'使用即时到帐交易接口',)
			),
			'is_instant'=>array(
					'label'=>'是否开通即时到帐',
					'type'=>'select',
					'options'=>array('0'=>'未开通','1'=>'已经开通',)
			)
		);
	}
}
?>