diff --git a/webapp/controller/RechargeController.class.php b/webapp/controller/RechargeController.class.php index d7c770e..67d5f57 100644 --- a/webapp/controller/RechargeController.class.php +++ b/webapp/controller/RechargeController.class.php @@ -227,6 +227,110 @@ class RechargeController )); } + public function prePurchase() + { + $account_id = $_REQUEST['account_id']; + //登录校验 + $login = loginVerify($account_id, $_REQUEST['session_id']); + if (!$login) { + phpcommon\sendError(ERR_USER_BASE + 1, 'session无效'); + return; + } + $conn = $this->getMysql($account_id); + if (!$conn) { + phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); + return; + } + + $raw_data = file_get_contents('php://input'); + $sigdata = json_decode($raw_data, true); + if (!$this->checkPurchaseLimit($conn, $account_id, $sigdata['productId'])) { + phpcommon\sendError(ERR_USER_BASE + 2, '不能购买'); + return; + } + + $url = ''; + if (SERVER_ENV == _ONLINE) { + $url = 'https://payservice.kingsome.cn/api/ingame/sprepurchase'; + } else { + $url = 'https://payservice-test.kingsome.cn/api/ingame/sprepurchase'; + } + $sign = md5($_REQUEST['account_id'] . 'f3a6a9a5-217a-4079-ab99-b5d69b8212be' . $_REQUEST['session_id']); + $params = array( + 'account_id' => $_REQUEST['account_id'], + 'session_id' => $_REQUEST['session_id'], + 'user_ip' => phpcommon\getIPv4(), + 'sign' => $sign, + 'sig_data' => $raw_data, + ); + if (!phpcommon\HttpClient::post($url, json_encode($params), $rsp)) { + phpcommon\sendError(ERR_RETRY, '系统繁忙'); + return; + } + + if ($rsp == null || $rsp == '') { + phpcommon\sendError(ERR_RETRY, '系统繁忙2'); + return; + } + + $response = json_decode($rsp, true); + echo json_encode(array( + 'errcode' => $response['errcode'], + 'errmsg' => $response['errmsg'], + 'order_id' => $response['order_id'], + 'pay_sig' => $response['pay_sig'], + 'signature' => $response['signature'], + 'sig_data' => $response['sig_data'], + )); + } + + protected function checkPurchaseLimit($conn, $account_id, $productid) + { + $prod_conf = metatable\getShopGoodsById($productid); + if (!$prod_conf) { + return false; + } + + if ($prod_conf['type'] != 2) { + return true; + } + + $conn = $this->getMysql($_REQUEST['account_id']); + $rechargerow = $conn->execQueryOne( + 'SELECT * FROM recharge WHERE accountid=:accountid;', + array( + ':accountid' => $account_id + ) + ); + + if (!$rechargerow) { + return true; + } + + $daily_purchase = $rechargerow['daily_purchase']; + if ($daily_purchase == null || $daily_purchase == '') { + return true; + } + + $todaysecs = phpcommon\getdayseconds(time()); + $daily_obj = json_decode($daily_purchase . true); + if ($productid == 10) { + foreach ($daily_obj as $item) { + if ($item['time'] > $todaysecs) { + return false; + } + } + } else { + foreach ($daily_obj as $item) { + if (($item['id'] == $productid || $item['id'] == 10) && $item['time'] > $todaysecs) { + return false; + } + } + } + + return true; + } + public function purchaseNotify() { $params = array(