verifySign()) { error_log("verifySign error --- " . json_encode($_REQUEST)); myself()->_rspErr(1, 'verifySign error'); return; } $accountId = getReqVal('account_id', ''); $orderId = getReqVal('order_id', ''); $status = getReqVal('status', ''); $id = getReqVal('id', ''); $txhash = getReqVal('txhash', ''); $sign = getReqVal('sign', ''); $orderDb = OutAppOrder::find($orderId); if (!$orderDb) { myself()->_rspErr(0, 'not found order'); return; } if ($orderDb['status'] == OutAppOrder::FINISHED_STATE) { myself()->_rspErr(0, 'order is finished'); return; } if ($status != 9) { OutAppOrder::markFailed($orderDb['order_id']); myself()->_rspErr(0, 'order is failed'); return; } OutAppOrder::markFinished($orderDb['order_id']); FirstTopup::add($accountId); // 以下是看商品表中是否配置了充值额外奖励 $goodsMeta = mt\ShopGoods::get($orderDb['goods_id']); if (!$goodsMeta) { myself()->_rspErr(0, 'goods_id is failed'); return; } $itemNum = $goodsMeta['bonus_num']; $itemId = $goodsMeta['bonus']; $itemMeta = mt\Item::get($itemId); if ($itemMeta && $itemNum > 0) { if ($itemId == V_ITEM_DIAMOND) { $addItemService = new ShopAddItemService(); $addItemService->addItemByAccountId($orderDb['account_id'], $itemId, $itemNum); } else { } } myself()->_rspOk(); } private function verifySign() { $params = array_merge($_REQUEST, array()); ksort($params); $excludeKeys = array( 'c' => true, 'a' => true, 'action' => true, 'sign' => true ); $arrSign = array(); foreach($params as $key => $val){ if (!array_key_exists($key, $excludeKeys)) { array_push($arrSign, $key . '=' . $val); } } $signStr = implode('&', $arrSign); $sign = hash_hmac('sha256', $signStr, BUY_SERVER_PKEY); return $sign == getReqVal('sign', ''); } }