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

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

	var $name = '八佰付在线支付';//八佰付在线支付
	var $logo = '800PAY';
	var $version = 20070615;
	var $charset = 'utf-8';
	var $submitUrl = 'https://www.800-pay.com/PayAction/ReceivePayOrder.aspx';
	var $submitButton = 'http://img.alipay.com/pimg/button_alipaybutton_o_a.gif';
	var $supportCurrency =  array("CNY"=>"RMB","USD"=>"USD","KRW"=>"KRW");
	var $supportArea = array('AREA_CNY','AREA_USD','AREA_KRW');
	var $status;
	var $desc = '';
	var $orderby = 28;
    var $cur_trading = true;	//支持真实的外币交易

	function toSubmit($payment){

		switch($order->M_Language){
			case 'zh_CN':
				$payment["M_Language"] = 'cn';//$order->M_Language = 'cn';
			break;
			case 'en_US':
				$payment["M_Language"] = 'en';//$order->M_Language = 'en';
			break;
			case 'zh_TW':
				$payment["M_Language"] = 'tw';//$order->M_Language = 'tw';
			break;
		}

		$info = array(
			'M_id'=>$this->getConf($payment["M_OrderId"], 'member_id'),	//	商家号	您在800pay中注册分配的商家ID代号。如果本字段有误,您将不能通过验证。	必填域	demo@800-pay.com	MAX(50)
			//订单号 消费者选择支付后商户网站产生的一个唯一的定单号,该订单号应该不重复。800PAY通过商家号+订单号来唯一确认一笔订单的重复性,该订单号不能超过30位。	必填域	2.00701E+11	MAX(30)
			'M_OrderID'=>$payment["M_OrderId"],//$order->M_OrderId,			
			'M_OAmount'=>$payment["M_Amount"],//$order->M_Amount,			//	订单金额	消费者支付订单的总金额,一笔订单一个,以元为单位。订单金额,格式:元.角分	必填域	0.01	MAX(15)
			'M_OCurrency'=>$this->supportCurrency[0],	//	支付币种	用来区分一笔支付的币种。目前暂时只支持人民币(RMB)支付。定义如下:	必填域	RMB	3
			//返回路径	商家根据“返回路径”进行接收消费者所支付订单信息,更新消费者更付状态。	必填域	https://www.800-pay.com/PayDemo/MerReceiverPay.aspx	MAX(100)
			'M_URL'=>$this->callbackUrl,
			'M_Language'=>$payment["M_Language"],//$order->M_Language,		//	语言选择	表示商家使用的页面语言,800PAY将会返回相应语言的支付结果通知,定义如下:	必填域	cn	MAX(10)
			'T_TradeName'=>$payment["T_TradeName"],//$order->T_TradeName,		//	商品名称	进行订单支付的消费者所选购商品名称	必填域	苹果	MAX(50)
			'T_Unit'=>$payment["T_Unit"],//$order->T_Unit,				//	商品单位	进行订单支付的消费者所选购商品单位	必填域	件	MAX(20)
			'T_UnitPrice'=>$payment["T_UnitPrice"],//$order->T_UnitPrice,		//	商品单价	进行订单支付的消费者所选购商品单价	必填域	1.5	MAX(20)
			'T_quantity'=>$payment["T_quantity"],//$order->T_quantity,		//	商品数量	进行订单支付的消费者所选购商品数量	必填域	2	MAX(20)
			'T_carriage'=>$payment["T_carriage"],//$order->T_carriage,		//	商品运费	进行订单支付的消费者所选购商品运费	必填域	0	MAX(20)
			'S_Name'=>'',				//	消费者姓名	支付时消费者的姓名	必填域	姜圣	
			'S_Address'=>'',			//	消费者住址	进行订单支付的消费者的住址	必填域	大连	
			'S_PostCode'=>'',		//	邮政编码	进行订单支付的消费者住址的邮政编码	必填域	116600	
			'S_Telephone'=>'',		//	消费者联系电话	进行订单支付的消费者的联系电话	必填域	0411-83684021	
			'S_Email'=>'',				//	消费者电子邮件地址	进行订单支付的消费者的电子邮件地址	必填域	admin@800-PAY.com	
			'R_Name'=>'',				//	收货人姓名	订单支付成功后货品收货人的姓名	必填域	姜大圣	
			'R_Address'=>'',			//	收货人住址	订单支付成功后货品收货人的住址	必填域	大连	
			'R_PostCode'=>'',		//	收货人邮政编码	订单支付成功后货品收货人的住址所在地的邮政编码	必填域	116623	
			'R_Telephone'=>'',		//	收货人联系电话	订单支付成功后货品收货人的联系电话	必填域	0411-83684021	
			'R_Email'=>'',				//	收货人电子邮件地址	订单支付成功后货品收货人的邮件地址	必填域	admin@800PAY.com	
			'M_OComment'=>'',			//	备注	订单来源,如From ECShop order info@800-mall.com	必填域	From ECShop order info@800-mall.com	无限制
			'State'=>0,								//	支付状态	该项是支付返回的认证	必填域	0	1
			'M_ODate'=>date('Y-m-d h:i:s'),			//	交易日期	当天订单交易日期	必填域	2007-5-10 12:08	8
			);
		
		$return=array();
		$return['OrderMessage'] = implode('|',$info);
		$return['digest'] = strtoupper(MD5($return['OrderMessage'].$this->getConf($payment["M_OrderId"], 'PrivateKey')));
		$return['M_ID'] = $this->getConf($payment["M_OrderId"], 'member_id');

		return $return;
	}

	function callback($in,&$paymentId,&$money,&$message){
		$digest = trim(md5($in['OrderMessage']));
		$info = explode('|',$in['OrderMessage']);

		$paymentId = $info[1];
		$money = $info[2];

		if($in['Digest'] == $digest){
			switch($info[22]){
				case 0:
					$message = '未支付';
					return PAY_CANCEL;
				break;
				case 2:
					return PAY_SUCCESS;
				break;
				case 3:
					$message = '交易失败';
					return PAY_FAILED;
				break;
				default:
					$message = '交易出现错误';
					return PAY_ERROR;
				break;
			}
		}else{
			$message = '交易出现错误';
			return PAY_ERROR;
		}
	}

	function getfields(){
		return array(
					'member_id'=>array(
							'label'=>'800pay用户ID',
							'type'=>'string'
						),
					'PrivateKey'=>array(
							'label'=>'私钥',
							'type'=>'string'
					)
				);
	}

}
?>