From 4eaea40b7993fce745d90e1d957a5c07a0a1cc60 Mon Sep 17 00:00:00 2001 From: songliang Date: Thu, 13 Jul 2023 16:14:48 +0800 Subject: [PATCH] ... --- ...eventBuyOrder.php => MarketBuyOrderOk.php} | 4 +- ...ancelOrder.php => MarketCancelOrderOk.php} | 4 +- ...Order.php => MarketPriceUpdateOrderOk.php} | 4 +- ...entSellOrder.php => MarketSellOrderOk.php} | 4 +- .../services/callback/ShopBuyGoodsDirect.php | 105 +++++++++++ .../callback/ShopInappPurchaseDiamonds.php | 175 ++++++++++++++++++ webapp/services/callback/buyGoodsDirect.php | 11 -- .../callback/inappPurchaseDiamonds.php | 12 -- 8 files changed, 288 insertions(+), 31 deletions(-) rename webapp/services/callback/{eventBuyOrder.php => MarketBuyOrderOk.php} (95%) rename webapp/services/callback/{eventCancelOrder.php => MarketCancelOrderOk.php} (91%) rename webapp/services/callback/{eventPriceUpdateOrder.php => MarketPriceUpdateOrderOk.php} (91%) rename webapp/services/callback/{eventSellOrder.php => MarketSellOrderOk.php} (96%) create mode 100644 webapp/services/callback/ShopBuyGoodsDirect.php create mode 100644 webapp/services/callback/ShopInappPurchaseDiamonds.php delete mode 100644 webapp/services/callback/buyGoodsDirect.php delete mode 100644 webapp/services/callback/inappPurchaseDiamonds.php diff --git a/webapp/services/callback/eventBuyOrder.php b/webapp/services/callback/MarketBuyOrderOk.php similarity index 95% rename from webapp/services/callback/eventBuyOrder.php rename to webapp/services/callback/MarketBuyOrderOk.php index 1635454f..ae4cc87d 100644 --- a/webapp/services/callback/eventBuyOrder.php +++ b/webapp/services/callback/MarketBuyOrderOk.php @@ -2,11 +2,11 @@ namespace services; -class eventBuyOrder +class MarketBuyOrderOk { public function process() { - error_log('eventBuyOrder:' . json_encode($_REQUEST, JSON_PRETTY_PRINT)); + error_log('MarketBuyOrderOk:' . json_encode($_REQUEST, JSON_PRETTY_PRINT)); $tokenId = getReqVal('tokenId', ''); $orderId = getReqVal('orderId', ''); diff --git a/webapp/services/callback/eventCancelOrder.php b/webapp/services/callback/MarketCancelOrderOk.php similarity index 91% rename from webapp/services/callback/eventCancelOrder.php rename to webapp/services/callback/MarketCancelOrderOk.php index 07dd09a3..8bc36dc2 100644 --- a/webapp/services/callback/eventCancelOrder.php +++ b/webapp/services/callback/MarketCancelOrderOk.php @@ -2,11 +2,11 @@ namespace services; -class eventCancelOrder +class MarketCancelOrderOk { public function process() { - error_log('eventCancelOrder:' . json_encode($_REQUEST, JSON_PRETTY_PRINT)); + error_log('MarketCancelOrderOk:' . json_encode($_REQUEST, JSON_PRETTY_PRINT)); $orderId = getReqVal('orderId', ''); $nftToken = getReqVal('nftToken', ''); diff --git a/webapp/services/callback/eventPriceUpdateOrder.php b/webapp/services/callback/MarketPriceUpdateOrderOk.php similarity index 91% rename from webapp/services/callback/eventPriceUpdateOrder.php rename to webapp/services/callback/MarketPriceUpdateOrderOk.php index 612dc2c9..5ca9a52d 100644 --- a/webapp/services/callback/eventPriceUpdateOrder.php +++ b/webapp/services/callback/MarketPriceUpdateOrderOk.php @@ -2,11 +2,11 @@ namespace services; -class eventPriceUpdateOrder +class MarketPriceUpdateOrderOk { public function process() { - error_log('eventPriceUpdateOrder:' . json_encode($_REQUEST, JSON_PRETTY_PRINT)); + error_log('MarketPriceUpdateOrderOk:' . json_encode($_REQUEST, JSON_PRETTY_PRINT)); $orderId = getReqVal('orderId', '');; $nftToken = getReqVal('nftToken', ''); diff --git a/webapp/services/callback/eventSellOrder.php b/webapp/services/callback/MarketSellOrderOk.php similarity index 96% rename from webapp/services/callback/eventSellOrder.php rename to webapp/services/callback/MarketSellOrderOk.php index af419d9d..21fae73a 100644 --- a/webapp/services/callback/eventSellOrder.php +++ b/webapp/services/callback/MarketSellOrderOk.php @@ -2,11 +2,11 @@ namespace services; -class eventSellOrder +class MarketSellOrderOk { public function process() { - error_log('eventBuyOrder:' . json_encode($_REQUEST, JSON_PRETTY_PRINT)); + error_log('MarketSellOrderOk:' . json_encode($_REQUEST, JSON_PRETTY_PRINT)); $tokenId = getReqVal('tokenId', ''); $owner = strtolower(getReqVal('owner', '')); diff --git a/webapp/services/callback/ShopBuyGoodsDirect.php b/webapp/services/callback/ShopBuyGoodsDirect.php new file mode 100644 index 00000000..20670d51 --- /dev/null +++ b/webapp/services/callback/ShopBuyGoodsDirect.php @@ -0,0 +1,105 @@ + $account_id, + 'id' => $id, + 'order_id' => $order_id, + 'status' => $status, + 'txhash' => $txhash, + ); + + $hash_data = http_build_query($data); + + $signature = hash_hmac('sha256', $hash_data, 'iG4Rpsa)6U31$H#^T85$^^3'); + + if ($signature != $sign) { + $this->_rspErr(1, "signature error, signature: {$signature}, sign: {$sign}"); + return; + } + + error_log("buyGoodsDirect-------" . $order_id . "---" . $status); + + $conn = myself()->_getMysql(''); + + $order = SqlHelper::selectOne($conn, 't_shop_buy_order', array('address', 'item_id', 'goods_num', 'status'), array('idx' => $order_id)); + + $id = $order['item_id']; + $goods_num = $order['goods_num']; + $o_status = $order['status']; + + if ($o_status != 0) { + $this->_rspErr(1, "order status error, status: {$o_status}"); + return; + } + + $buyStatus = 0; // 1: 成功, 2: 失败 + switch ($status) { + case "9": + $buyStatus = 1; + break; + case "99": + case "98": + $buyStatus = 2; + break; + } + + SqlHelper::update($conn, 't_shop_buy_order', array('idx' => $order_id), array('status' => $buyStatus)); + + $goods = mt\ShopGoods::get($id); + // 这里命名混乱了, 购买个数,一捆个数命名冲突 + $goods_num = $order['goods_num']; + $bundle_size = $goods['bonus_num']; + $item_num = $goods_num * $bundle_size; + $item_id = $goods['bonus']; + $address = $order['address']; + $account_id = $this->getAccountId($address); + + if ($item_id == V_ITEM_DIAMOND) { + $event = [ + 'name' => LogService::RECHARGE_CEBG_BONUS, + 'val' => $item_num + ]; + LogService::productDiamond(['account_id' => $account_id], $event); + } + + $this->_addGoods($address, array( + 'goods_id' => $item_id, + 'goods_num' => $item_num, + 'id' => $id, + )); + + $this->_rspOk(); + } +} diff --git a/webapp/services/callback/ShopInappPurchaseDiamonds.php b/webapp/services/callback/ShopInappPurchaseDiamonds.php new file mode 100644 index 00000000..eb8925b9 --- /dev/null +++ b/webapp/services/callback/ShopInappPurchaseDiamonds.php @@ -0,0 +1,175 @@ +Object.keys(record).sort().map(key => `${key}=${record[key]}`).join('&')).join('&') + + // const sign = hmacsha256(signStr, hashSort) + + // 定义一个空数组,用来存放每个记录的键值对字符串 + $record_strings = array(); + + // 遍历 records 数组,对每个记录进行排序和拼接 + foreach ($records as $record) { + // 对记录的键进行升序排序 + ksort($record); + // 把记录的键值对用等号连接,然后用 & 连接成一个字符串 + $record_string = http_build_query($record); + // 把字符串加入到 record_strings 数组中 + $record_strings[] = $record_string; + } + + // 把 record_strings 数组用 & 连接成一个字符串 + $records_string = implode("&", $record_strings); + + $hash_data = 'channel=' . $channel . '&' . $records_string; + + $signature = hash_hmac('sha256', $hash_data, 'iG4Rpsa)6U31$H#^T85$^^3'); + + if ($signature != $sign) { + $this->_rspErr(1, "signature error, signature: {$signature}, sign: {$sign}"); + return; + } + + $conn = myself()->_getMysql(''); + // 有三种情况: + // 1. 从商城购买钻石,有订单号 + // 2. 站外充值钻石,没有订单号 + // 3. appstore 退款,没有订单号 + + for ($i = 0; $i < count($records); $i++) { + $record = $records[$i]; + + $product_id = $record['productId']; + $order_id = $record['gameOrderId']; + $out_order_id = $record['orderId']; + $status = $record['status']; + + switch ($status) { + case 9: { + $status = 1; + if (empty($order_id)) { + if (empty($product_id)) { + $this->_rspErr(2, "product_id is empty"); + return; + } + + // $goods = mt\ShopGoods::getByProductId($product_id); + + return; + } + + $order = SqlHelper::selectOne($conn, 't_web2_order', array('address', 'id', 'item_id', 'goods_num', 'status'), array('order_id' => $order_id, 'status' => 0)); + error_log('process order ' . json_encode($order)); + if (!$order) { + $this->_rspErr(3, "order not found, order_id: {$order_id}"); + return; + } + + SqlHelper::update($conn, 't_web2_order', array('order_id' => $order_id), array('status' => $status, 'channel' => $channel, 'out_order_id' => $out_order_id)); + + $id = $order['id']; + $goods = mt\ShopGoods::get($id); + // 这里命名混乱了, 购买个数,一捆个数命名冲突 + $goods_num = $order['goods_num']; + $bundle_size = $goods['goods_num']; + $item_num = $goods_num * $bundle_size; + $item_id = $goods['goods_id']; + $address = $order['address']; + $account_id = $this->getAccountId($address); + + if ($item_id == V_ITEM_DIAMOND) { + $event = [ + 'name' => LogService::RECHARGE_DIAMOND, + 'val' => $item_num + ]; + LogService::productDiamond(['account_id' => $account_id], $event); + } + + $this->_addGoods($address, array( + 'goods_id' => $item_id, + 'goods_num' => $item_num, + 'id' => $id, + )); + } + break; + case 96: + $status = 3; + if (empty($order_id)) { + if (empty($product_id)) { + $this->_rspErr(2, "product_id is empty"); + return; + } + // $goods = mt\ShopGoods::getByProductId($product_id); + + return; + } + // 退款 + $order = SqlHelper::selectOne($conn, 't_web2_order', array('address', 'id', 'item_id', 'goods_num', 'status'), array('order_id' => $order_id, 'status' => 1)); + if (!$order) { + $this->_rspErr(3, "order not found, order_id: {$order_id}"); + return; + } + SqlHelper::update($conn, 't_web2_order', array('order_id' => $order_id), array('status' => $status)); + + $id = $order['id']; + $goods = mt\ShopGoods::get($id); + // 这里命名混乱了, 购买个数,一捆个数命名冲突 + $goods_num = $order['goods_num']; + $bundle_size = $goods['goods_num']; + $item_num = $goods_num * $bundle_size; + $item_id = $goods['goods_id']; + $address = $order['address']; + $account_id = $this->getAccountId($address); + + if ($item_id == V_ITEM_DIAMOND) { + $event = [ + 'name' => LogService::RECHARGE_DIAMOND, + 'val' => -$item_num + ]; + LogService::productDiamond(['account_id' => $account_id], $event); + } + + $this->_decGoods($address, array( + 'goods_id' => $item_id, + 'goods_num' => $item_num, + 'id' => $id, + )); + break; + default: + $status = 0; + break; + } + } + + $this->_rspOk(); + } +} diff --git a/webapp/services/callback/buyGoodsDirect.php b/webapp/services/callback/buyGoodsDirect.php deleted file mode 100644 index 6109c4be..00000000 --- a/webapp/services/callback/buyGoodsDirect.php +++ /dev/null @@ -1,11 +0,0 @@ -