<?php
require_once ("classes/PayRequestHandler.class.php");
class cls_tool_api_pay
{
	function on_pay($arr_fields=array())
	{
		$arr_return=array("err"=>"","url"=>"");
		if(!isset($arr_fields["parterid"])){
			$arr_return["err"]="合作伙伴ID不能为空！";
			return $arr_return;
		}
		if(!isset($arr_fields["key"])){
			$arr_return["err"]="安全检验码不能为空！";
			return $arr_return;
		}
		if(!isset($arr_fields["subject"])){
			$arr_return["err"]="支付标题不能为空！";
			return $arr_return;
		}
		if(!isset($arr_fields["orders_number"])){
			$arr_return["err"]="订单号不能为空！";
			return $arr_return;
		}
		if(!isset($arr_fields["goods_price"])){
			$arr_return["err"]="支付价格不能为空！";
			return $arr_return;
		}
		if(!isset($arr_fields["detail"])) $arr_fields["detail"]=$arr_fields["subject"];
		$arr_fields["goods_price"]=$arr_fields["goods_price"]*100;

		/* 创建支付请求对象 */
		$reqHandler = new PayRequestHandler();
		$reqHandler->init();
		$reqHandler->setKey($arr_fields["key"]);

		//取定单号
		$transaction_id=self::get_ordernum($arr_fields["parterid"]);
		//----------------------------------------
		//设置支付参数
		//----------------------------------------
		$reqHandler->setParameter("bargainor_id", $arr_fields["parterid"]);	//商户号
		$reqHandler->setParameter("sp_billno", $arr_fields["orders_number"]);//商户订单号
		$reqHandler->setParameter("transaction_id", $transaction_id);		//财付通交易单号
		$reqHandler->setParameter("total_fee", $arr_fields["goods_price"]);	//商品总金额,以分为单位
		$reqHandler->setParameter("return_url", $arr_fields["return_url"]);//返回处理地址
		$reqHandler->setParameter("desc", "订单号：" . $transaction_id."(".$arr_fields["subject"].")");	//商品名称

		//用户ip,测试环境时不要加这个ip参数，正式环境再加此参数
		//$reqHandler->setParameter("spbill_create_ip", $_SERVER['REMOTE_ADDR']);

		//请求的URL
		$str_url = $reqHandler->getRequestURL();
		if($str_url!=""){
			$arr_return["url"]="<script>window.open('".$str_url."','_blank');</script>";
			$arr_return["pay_id"]=$transaction_id;
		}else{
			$arr_return["err"]="支付接口调用失败！";
		}
		return $arr_return;
	}
	function get_ordernum($bargainor_id){
		//date_default_timezone_set(PRC);
		$strDate = date("Ymd");
		$strTime = date("His");

		//4位随机数
		$randNum = rand(1000, 9999);

		//10位序列号,可以自行调整。
		$strReq = $strTime . $randNum;

		/* 商家订单号,长度若超过32位，取前32位。财付通只记录商家订单号，不保证唯一。 */
		$sp_billno = $strReq;

		/* 财付通交易单号，规则为：10位商户号+8位时间（YYYYmmdd)+10位流水号 */
		$transaction_id = $bargainor_id . $strDate . $strReq;
		return $transaction_id;
	}
	//财付通字段
	function get_fields_html($arr_fields=array())
	{
		(!isset($arr_fields["parterid"]))?$parterid="":$parterid=$arr_fields["parterid"];
		(!isset($arr_fields["key"]))?$key="":$key=$arr_fields["key"];
		(!isset($arr_fields["rates"]))?$rates="":$rates=$arr_fields["rates"];
		$str_info="";
$str_info=<<<HTML
<tr><td class="pTabColName">货币类型：</td><td class="pTabColVal">人民币(￥)<input type="hidden" name="pay_fields_currency" value="人民币(￥)"></td></tr>
<tr><td class="pTabColName">客户号：</td><td class="pTabColVal"><input type="text" name="pay_fields_parterid" value="$parterid"></td></tr>
<tr><td class="pTabColName">私钥：</td><td class="pTabColVal"><input type="text" name="pay_fields_key" value="$key"></td></tr>
<tr><td class="pTabColName">支付费率：</td><td class="pTabColVal"><input type="text" name="pay_fields_rates" value="$rates"></td></tr>
HTML;
		return $str_info;
	}
	function set_fields_value()
	{
		$arr_fields["currency"]=$_POST["pay_fields_currency"];
		$arr_fields["parterid"]=$_POST["pay_fields_parterid"];
		$arr_fields["key"]=$_POST["pay_fields_key"];
		$arr_fields["rates"]=$_POST["pay_fields_rates"];
		$str_info="";
		$str_x="";
		foreach($arr_fields as $item=>$key)
		{
			$str_x=$item."=".$key;
			if($str_info==""){
				$str_info=$str_x;
			}else{
				$str_info.="|".$str_x;
			}
		}
		return $str_info;
	}

}
?>