<?php
|
include_once '/Common/CommFunc.php';
|
include_once '/Common/Logging.php';
|
include_once '/Common/PayOrder.php';
|
include_once "/ProjComm/CfgReader.php";
|
|
header("Content-type: text/html; charset=utf-8");
|
// http://docs.aldgames.com/docs/al-sdk#35uxhj
|
|
// $_SERVER['PHP_SELF'] = /api/quick/payxxxxx.php
|
// strripos 最后一次出现 / 的位置,再+1得到 payxxxxx.php
|
// +3 从pay后面开始
|
// -4 去除最后的.php
|
$appid = substr($_SERVER['PHP_SELF'], strripos($_SERVER['PHP_SELF'], "/") + 1 + 3, -4);
|
\Logging\CreateLogging("quick.pay" . $appid . ".php");
|
\Logging\LogInfo("CONTENT_TYPE: " . $_SERVER["CONTENT_TYPE"]);
|
$params = $_GET;
|
\Logging\LogInfo("params: " . print_r($params, true));
|
|
$success = "SUCCESS";
|
$failed = "FAILURE";
|
|
$order_id = $params['order_id']; // 阿拉丁游戏订单 ID
|
$money = floatval($params['money']); // 下单金额(档位金额),美元
|
$amount = floatval($params['amount']); // 支付金额(档位金额),美元 (重要的)
|
$amount_diff = floatval($params['amount_diff']); // 差价,美元(真实支付金额-下单金额,此字段仅供参考)
|
$gift = intval($params['gift']); // 游戏币、元宝、灵玉、钻石…等 (根据差价换算的虚拟币)(重要的)
|
$role_id = $params['role_id']; // 游戏角色id
|
$server_id = $params['server_id']; // 游戏服 id
|
$status = $params['status']; // 订单状态,1 为成功
|
$timestamp = $params['timestamp']; // 时间戳 (秒)
|
$user_id = $params['user_id']; // 阿拉丁游戏用户 id
|
$is_test = $params['is_test']; // 是否为测试订单:0否,1是
|
$pay_type = $params['pay_type']; // 支付方式:my_card MyCard支付,razer 雷蛇支付
|
$callback_info = $params['callback_info']; // cp透传参数,原样返回 channelID_cp订单id_区服id_游戏充值编号
|
$cp_product_id = $params['cp_product_id']; // cp产品 ID,原样返回
|
$cp_order_id = $params['cp_order_id']; // cp订单号 ,原样返回
|
$sign = $params['sign']; // 签名:参数名按字母序升序排列后值用”#”进行拼接,md5(拼接字符串+”#”+游戏密钥) ,除了sign之外,其他参数全部参与签名
|
|
$uid = $user_id;
|
$sdkOrderID = $order_id;
|
$extrasParams = $callback_info;
|
$OrderAmount = $amount;
|
$payTime = \CommFunc\TimeToStrDateTime($timestamp);
|
|
if (!$uid || !$sdkOrderID || !$sign) {
|
Ret($failed, "ParamError");
|
exit;
|
}
|
|
if ($status != "1") {
|
Ret($failed, "");
|
exit;
|
}
|
|
if (
|
!\CfgReader\ReadConfig()
|
|| !\CfgReader\GetConfigData("Quick", "Key_" . $appid . "_Callback_Key", $Callback_Key)
|
) {
|
Ret($failed, "CfgError");
|
exit;
|
}
|
|
ksort($params);
|
$signKey = '';
|
foreach ($params as $key => $val) {
|
if ($key == "sign") {
|
continue;
|
}
|
$signKey .= $val . '#';
|
}
|
$signKey .= $Callback_Key;
|
$md5SignLocal = md5($signKey);
|
|
if ($md5SignLocal != $sign) {
|
Ret("ErrorSign", "md5SignLocal:" . $md5SignLocal . " != sign:" . $sign);
|
exit;
|
}
|
|
$channelID = 1;
|
$cpOrderID = $cp_order_id;
|
$serverID = $server_id;
|
$OrderInfo = $cp_product_id;
|
|
$extrasLen = 4;
|
$extrasParams = explode("_", $extrasParams, $extrasLen); // channelID_cp订单id_区服id_游戏充值编号
|
\Logging\LogInfo("extrasParams:" . print_r($extrasParams, true));
|
$extras_params = $extrasParams;
|
if (isset($extras_params) && count($extras_params) == $extrasLen) {
|
// Ret("extras_params_error", " extras_params:" . print_r($extras_params, true));
|
$channelID = $extras_params[0];
|
$cpOrderID = $extras_params[1];
|
$serverID = intval($extras_params[2]);
|
$OrderInfo = $extras_params[3];
|
}else{
|
// 网页充值,17 18服特殊处理ID互换
|
if ($serverID == 17) {
|
$serverID = 18;
|
\Logging\LogInfo("17服18服网页充值时特殊处理ServerID互换!");
|
} elseif ($serverID == 18) {
|
$serverID = 17;
|
\Logging\LogInfo("17服18服网页充值时特殊处理ServerID互换!");
|
}
|
}
|
|
// 同步游戏服务器
|
|
$AccountID = $uid . "@" . $channelID;
|
|
$ret = $failed;
|
$msg = "";
|
// 没有创建订单步骤,直接使用sdk订单号
|
$returnArr = \PayOrder\DoReceivePayOrder($appid, $cpOrderID, $sdkOrderID, $AccountID, $serverID, $OrderInfo, $OrderAmount, $payTime, false);
|
switch ($returnArr["errorcode"]) {
|
case 1:
|
$ret = $success;
|
break;
|
case 2:
|
$ret = "ErrorRepeat";
|
break;
|
default:
|
if ($returnArr["errordesc"]) {
|
$msg = $returnArr["errordesc"];
|
}
|
break;
|
}
|
Ret($ret, $msg);
|
exit;
|
|
function Ret($ret, $msg = "")
|
{
|
global $success;
|
echo $ret;
|
$logMsg = $ret;
|
if ($msg) {
|
$logMsg .= " msg => " . $msg;
|
}
|
if ($ret != $success) {
|
\Logging\LogError($logMsg);
|
} else {
|
\Logging\LogInfo($logMsg);
|
}
|
}
|