<?php
/*
 * 元宝支付 https://www.18pay.net
 * Date: 2020/12/10
 * Time: 15:38
 * 说明：
 * 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究接口使用，只是提供一个参考，最终解释权归美奇软件开发工作室所有。
 * 严禁一切钓鱼、色情、赌博、私彩及违反国家法律法规等使用。
 * 注意：
 * UTF-8编码不要在记事本下编辑，否则会出现一些奇葩的问题，正确方法应在开发工具里打开编辑
 */
ini_set("error_reporting","E_ALL & ~E_NOTICE");
header('Content-Type:application/json; charset=utf-8');
require "Des.php";
/////////////////需要修改的参数/////////////////
//商户编号
$appid = '填写平台的商户编号';
//商户密钥
$appkey = '填写平台的商户密钥';
//算法密钥
$deskey='填写平台的算法密钥';  
//数据库相关
define('MYSQLHOST', '127.0.0.1');//数据库地址
define('MYSQLPORT', 3306);       //数据库端口
define('MYSQLUSER', 'root');     //数据库用户名
define('MYSQLPASS', '123456');   //数据库密码
///////////////////////////////////////////////
//下面代码基本不需要修改
if (empty($_POST)) $_POST = $_GET;  //如果为GET方式访问
if(version_compare(PHP_VERSION,'5.4.0','<')){
	outputError('PHP版本要求大于5.4.0');
}
if(!isset($_POST['appid'])){
	outputError('参数非法');
}
//验证商户号
if($_POST['appid']!=$appid){
	outputError('商户编号不正确');
}
if (!function_exists('openssl_encrypt')){
	outputError('请开启php.ini的openssl扩展');
}
//解密接口参数
$des = new Des();
$parameter=$_POST['parameter'];
$decode=$des->decrypt($parameter,$deskey);
if(empty($decode)){
	outputError('算法密钥不正确');
}
parse_str($decode, $data);
//验证商户密钥
if($appkey!=$data['appkey']){
	outputError('商户密钥不正确');
}

//开始充值
chongzhi($data);
function chongzhi($data){
	try{
		//游戏充值代码
		$account = $data['account'];
		$money = $data['money'];
		$alias = $data['alias'];
		$scale = $data['scale'];
		$dbname = $data['dbname'];//数据库名称
		$quid = $data['quid']; 
		$quname = $data['quname'];
		$gold=$money*$scale;//元宝=充值金额*充值比例
		$conn=@mysql_connect(MYSQLHOST,MYSQLUSER,MYSQLPASS,MYSQLPORT) or die("数据库连接失败,请联系管理员！");
		mysql_query("set names 'utf8'");
		mysql_select_db($dbname,$conn);
		$result=mysql_query("SELECT accountname,actorid FROM actors WHERE accountname = '$account'");//SQL语句
		if($result&&mysql_num_rows($result)>0){
			$row = mysql_fetch_array($result);
			$accountname=$row[0];
			$actorid=$row[1];
			mysql_query("insert into feecallback(serverid,openid,itemid,actor_id) values ('$quid','$accountname','$gold',$actorid)");
			//成功后返回
			$text = $gold>=10000?($gold/10000).'万':$gold;
			$msg = sprintf("[%s]账号%s成功充值金额%s元，获得%s：%s个",$quname,$account,$money,$alias,$text);
			outputSuccess($msg);
		}else{      
			outputError("充值失败，帐号".$account."在[".$quname."]还没有角色");
		}
		mysql_close($conn);
	} catch (\Exception $e) {
		outputError('充值异常，Error：'.$e->getMessage());
	}
}

function outputError($msg){
	$arr=array('code'=>0,'msg'=>$msg);
	echo json_encode($arr, JSON_UNESCAPED_UNICODE);
	exit;
}

function outputSuccess($msg){
	$arr=array('code'=>1,'msg'=>$msg);
	echo json_encode($arr, JSON_UNESCAPED_UNICODE);
	exit;
}

/** 
 * 打印日志
 * $msg 日志内容
 */
function printLog($msg) {
	if (!is_dir('log')){
		mkdir('log',0777,true);
	}
	$path="log/".date('Y-m-d').".log";
	file_put_contents($path, "【" . date('Y-m-d H:i:s') . "】" . $msg . "\r\n\r\n", FILE_APPEND);
}