<?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");
|
|
// $_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"]);
|
$postData = array();
|
foreach ($_POST as $key => $value) {
|
$postData[strtolower($key)] = $value; // key统一转化为小写
|
}
|
|
\Logging\LogInfo("postData: " . print_r($postData, true));
|
|
$orderid = $postData['orderid'];
|
$gameid = $postData['gameid'];
|
$roleid = $postData['roleid']; // 玩家ID
|
$username = $postData['username']; // 玩家平台账号
|
$serverid = $postData['serverid'];
|
$paytype = $postData['paytype'];
|
$paytime = $postData['paytime']; // 用户支付时间,如2017-02-06 14:22:32
|
$attach = $postData['attach']; // 游戏下单时传递的扩展参数,将原样返回。
|
$amount = $postData['amount'];
|
$sign = $postData['sign'];
|
|
if (!$orderid || !$roleid || !$attach || !$amount || !$sign) {
|
Ret("ParamError");
|
exit;
|
}
|
|
if (
|
!\CfgReader\ReadConfig()
|
|| !\CfgReader\GetConfigData("Quick", "Key_" . $appid . "_Callback_Key", $Callback_Key)
|
) {
|
Ret("CfgError");
|
exit;
|
}
|
|
$md5SignLocal = md5("orderid=" . $orderid . "&username=" . $username . "&gameid=" . $gameid . "&roleid=" . $roleid . "&serverid=" . $serverid .
|
"&paytype=" . $paytype . "&amount=" . $amount . "&paytime=" . $paytime . "&attach=" . $attach . "&appkey=" . $Callback_Key);
|
if ($md5SignLocal != $sign) {
|
Ret("SignError", " md5SignLocal:" . $md5SignLocal . " != sign:" . $sign);
|
exit;
|
}
|
|
$extrasLen = 4;
|
$extrasParams = explode("_", $attach, $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));
|
exit;
|
}
|
|
// 同步游戏服务器
|
$channelID = $extras_params[0];
|
$cpOrderID = $extras_params[1];
|
$serverID = intval($extras_params[2]);
|
$OrderInfo = $extras_params[3];
|
|
$AccountID = strtolower($username) . "@" . $channelID;
|
|
$result = "FAILED";
|
// 没有创建订单步骤,直接使用sdk订单号
|
$returnArr = \PayOrder\DoReceivePayOrder($appid, $cpOrderID, $orderid, $AccountID, $serverID, $OrderInfo, $amount, $payTime, false);
|
switch ($returnArr["errorcode"]) {
|
case 1:
|
$result = "success";
|
break;
|
case 2:
|
$result = "success";
|
break;
|
default:
|
if ($returnArr["errordesc"]) {
|
$result = $returnArr["errordesc"];
|
}
|
break;
|
}
|
Ret($result);
|
exit;
|
|
function Ret($ret, $msg = "")
|
{
|
echo $ret;
|
$logMsg = $ret;
|
if ($msg) {
|
$logMsg .= " msg => " . $msg;
|
}
|
if ($ret != "success") {
|
\Logging\LogError($logMsg);
|
} else {
|
\Logging\LogInfo($logMsg);
|
}
|
}
|