<?php
/**
 *功能：小小贝支付接口-下单/调起支付接口
 *详细：此demo 代码 用于下单获取支付参数
 *版本：2.0
 *修改日期：2016-12-15
 '说明：
 '以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己的需要，按照技术文档编写,并非一定要使用该代码。
 '该代码仅供学习和研究小小贝计费接口使用，只是提供一个参考。
 */

	require_once ("config.php");	//引人商户号，密钥等配置信息
	require_once ("base.php");		//引入
	
	/**调起支付接口
	 * 此为调起支付渠道，获取支付链接时需要的参数组装函数，得到transid 再次组装数据并签名。
	 */		
	function pay(){
		$ip = get_real_ip(); //获取ip
		global $orderUrl, $appkey, $platpkey,$merchantID,$md5key;
		
		//请求参数
		$SignArr	=	array(
							'merchantID'=>	$merchantID,							//商户号
							'waresname'	=>	'测试',									//商品名称
							'cporderid'	=>	md5(time()).rand(10000,99999),			//商家订单号，请确保订单号唯一
							'price'		=>	'0.01',									//订单金额，单位：元，需要格式化为两位小数
							'returnurl'	=>	'http://www.xiaoxiaopay.com',			//同步通知地址，完整http链接，支付成功之后跳转的地址
							'notifyurl'	=>	'http://www.xiaoxiaopay.com',			//异步通知地址，完整http链接，通知地址后不带任何参数，用于接收支付成功后的异步推送
							'paytype'	=>	10001,									//支付方式，详见文档
							'ip'		=>	$ip										//用户ip
						);	
						
		//组装请求报文  对数据签名	两种签名方式二选一	
		//$reqData		=	composeMd5($SignArr, $appkey);	//生成含md5签名的请求数据
		$reqData		=	composeRsa($SignArr, $appkey);	//生成含rsa签名的请求数据
		
		//发送到小小贝服务后台请求调起支付
		$paymentData  	= 	HttpPost($orderUrl,$reqData);
		
		//根据签名方式验签数据并且解析返回报文
		if(!parseRespRsa($paymentData,$platpkey)) { //MD5的验签方法为 parseRespMd5
			echo $paymentData;
		}else{
			echo $paymentData;exit;
			//解析返回报文
			$callback 		=	json_decode($paymentData);	
			//支付调起成功之后获取支付参数
			$url			=	$callback->info->payurl;
			//获取到支付参数后针对不同支付方式做不同处理。		
		}				
	}
	
	/**获取用户ip
	 */
	function get_real_ip(){ 
		$ip=false; 
		if(!empty($_SERVER['HTTP_CLIENT_IP'])){ 
			$ip=$_SERVER['HTTP_CLIENT_IP']; 
		}
		if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ 
			$ips=explode (', ', $_SERVER['HTTP_X_FORWARDED_FOR']); 
			if($ip){ array_unshift($ips, $ip); $ip=FALSE; }
			for ($i=0; $i < count($ips); $i++){
				if(!eregi ('^(10│172.16│192.168).', $ips[$i])){
					$ip=$ips[$i];
					break;
				}
			}
		}
		return ($ip ? $ip : $_SERVER['REMOTE_ADDR']); 
	}
	pay();
?>	
