$value) { if ($key == "sign") { continue; } if ($stringA != "") { $stringA .= "&"; } $stringA .= $key . "=" . $value; } $stringB = $stringA . "&appkey=" . $Mail_Key; \Logging\LogInfo("stringA: " . $stringA); \Logging\LogInfo("stringB: " . $stringB); $md5Sign = $sign; $md5SignLocal = md5($stringB); \Logging\LogInfo("md5SignLocal: " . $md5SignLocal); if ($md5SignLocal != $md5Sign) { Ret("SignError", " md5SignLocal:" . $md5SignLocal . " != md5Sign:" . $md5Sign); exit; } $mailInfo = explode("|", $rebate_value); if (!$mailInfo || count($mailInfo) != 3) { Ret("rebate_value mail split len error."); exit; } $title = $mailInfo[0]; $content = $mailInfo[1]; $itemArray = json_decode($mailInfo[2], true);; if (!is_array($itemArray)) { Ret("Item json_decode error."); exit; } $itemLen = count($itemArray); if ($itemLen > 5) { Ret("Item limit 5"); exit; } // 验证物品 $itemIDNameInfo = CommFunc\getCfgKeyNameContent("item", true, $appid); for ($i = 0; $i < $itemLen; $i++) { $item = $itemArray[$i]; if (!is_array($item) || count($item) != 2) { Ret("Item format error."); exit; } $itemID = $item[0]; $itemCount = $item[1]; if (!array_key_exists($itemID, $itemIDNameInfo)) { Ret("ItemID is not exist. itemID=" . $itemID); exit; } if ($itemCount <= 0) { Ret("The number of item must be greater than 0. itemID=" . $itemID); exit; } } $sserverID = \CommFunc\startsWith($server_id, "s") ? $server_id : ("s" . $server_id); $accID = $order_uid . "@" . $channel_id . "@" . $appid . "@" . $sserverID; $playerList = array($accID); $result = "FAILED"; list($isOK, $ret) = \CommFunc\SendMailPersonal($appid, $server_id, $title, $content, $playerList, $itemArray); if ($isOK) { $result = "SUCCESS"; }else{ $result = GetResultTypeMsg($ret["ResultType"]); } 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); } }