} if ($_W["ispost"] && $_W["isajax"]) { try { $error = array("code" => 0, "message" => "uid为空"); if (empty($_GPC["uid"]) || intval($_GPC["uid"]) <= 0) { die(json_encode($error)); } $error = array("code" => 0, "message" => "交易币为空"); if (empty($_GPC["credit2"])) { die(json_encode($error)); } $remark = "线下付款,管理员手工充值"; if (doubleval($_GPC["credit2"]) <= 0) { $remark = "管理员扣除"; } $result = user_credits_update(intval($_GPC["uid"]), "credit2", doubleval($_GPC["credit2"]), array($_W["uid"], $remark)); if ($result) { if (doubleval($_GPC["credit2"]) > 0) { pdo_insert("uni_payorder", array("orderid" => date("YmdHis") . sprintf('%06d', rand(0, 999999)), "status" => 1, "pay_time" => TIMESTAMP, "money" => doubleval($_GPC["credit2"]), "order_time" => TIMESTAMP, "uid" => $_GPC["uid"], "credittype" => "credit2")); } die(json_encode(array("code" => 1, "message" => "操作成功"))); } die(json_encode(array("code" => 0, "message" => $result["message"]))); } catch (Exception $e) { die(json_encode(array("code" => 0, "message" => $e->getMessage()))); } die(json_encode(array("code" => 0, "message" => "操作失败"))); } $index = max(1, intval($_GPC['page'])); $size = 15; $page = ($index - 1) * $size;
//商户订单号 $out_trade_no = $_GPC['out_trade_no']; //支付宝交易号 $trade_no = $_GPC['trade_no']; //交易状态 $trade_status = $_GPC['trade_status']; try { pdo_begin(); $order = pdo_fetch("SELECT * FROM " . tablename("uni_payorder") . " WHERE orderid = :orderid", array(":orderid" => $out_trade_no)); if (empty($order) || $order["status"] == 1) { header("location:" . $_W["siteroot"] . "web/index.php?c=site&a=entry&do=getPayResult&m=kim_financial&order_no=" . $out_trade_no); pdo_rollback(); return; } if (pdo_update("uni_payorder", array("status" => 1, "pay_time" => TIMESTAMP, "order_no" => $trade_no), array("orderid" => $out_trade_no)) > 0) { if (user_credits_update($order["uid"], $order["credittype"], $order["money"], array(2, "充值"))) { pdo_commit(); header("location:" . $_W["siteroot"] . "web/index.php?c=site&a=entry&do=getPayResult&m=kim_financial&order_no=" . $out_trade_no); return; } pdo_rollback(); } header("location:" . $_W["siteroot"] . "web/index.php?c=site&a=entry&do=getPayResult&m=kim_financial&order_no=" . $out_trade_no); } catch (Exception $e) { pdo_rollback(); } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } else { //验证失败 echo "fail";
} if ($_W["user"]["credit2"] <= 0) { die(json_encode(array("code" => 1, "message" => "余额不足,请进行充值", "url" => $this->createWebUrl("Recharge")))); } if ($number < 1) { die(json_encode(array("code" => 0, "message" => "至少购买1条"))); } $price = 0.1; if (!empty($settings) && doubleval($settings["dx_UnitPrice"]) > 0) { $price = doubleval($settings["dx_UnitPrice"]); } $total = $price * $number; if ($_W["user"]["credit2"] < $total) { die(json_encode(array("code" => 1, "message" => "余额不够,请进行充值", "url" => $this->createWebUrl("Recharge")))); } if (!is_error(user_credits_update($_W["user"]["uid"], "credit2", doubleval(-$total), array(1, "购买短信消费")))) { //加短信数 $notify["sms"]['balance'] = $_W["user"]["sms"]["balance"] + $number; $notify["sms"]['signature'] = $_W["user"]["sms"]['signature']; pdo_update("uni_settings", array("notify" => @iserializer($notify)), array("uniacid" => $_W['uniacid'])); die(json_encode(array("code" => 1, "message" => "购买成功."))); } die(json_encode(array("code" => 0, "message" => "购买失败"))); } if ($_W["user"]["credit2"] < doubleval($settings["dx_UnitPrice"])) { message("余额不足,请进行充值.", url('members/recharge')); } $service = explode("|", $settings["service_qqs"]); $qqs = array(); foreach ($service as $ser) { list($name, $qq) = explode("-", $ser);
function buy_package($user, $package_id, $total = 1) { if (empty($user) || empty($user["uid"])) { return error(-1, "用户不存在"); } if ($total <= 0) { return error(-1, "购买数必须大于1"); } if (empty($user["credit2"]) || doubleval($user["credit2"]) < 0) { return error(-1, "用户余额为0无法购买套餐."); } $group = kim_get_uni_group($package_id); if (empty($group)) { return error(-1, "模块不存在."); } $price = doubleval($group["price"]); if (intval($user['groupid']) > 0) { list($price, $discount) = check_price($price, intval($user['groupid'])); } if (doubleval($user["credit2"]) < $price * $total) { return error(-1, "用户余额不足."); } $st = get_settings(); $day = 30; if (intval($st[package_day]) > 0) { $day = intval($st[package_day]); } $package_price = $price * $total; $package_time = $total * $day * 24 * 60 * 60; load()->model("account"); $account = uni_fetch(); if (empty($account)) { return error(-1, "公众号不存在."); } $settings = uni_setting($account["uniacid"], array('groupdata')); $groupData = $settings['groupdata'] ? $settings['groupdata'] : array("endtime" => TIMESTAMP); $package_endTime = $package_time; if ($groupData["endtime"] - TIMESTAMP > 0) { $package_endTime = $groupData["endtime"] - TIMESTAMP + $package_time; } $old_package = kim_get_uni_group($account["groupid"]); try { pdo_begin(); $endtime = date("Y-m-d", TIMESTAMP + $package_endTime); load()->model('user'); $record = array(); $record['uid'] = $user["uid"]; $record['endtime'] = $endtime; user_update($record); $order_record = array("uniacid" => $account["uniacid"], "uid" => $user["uid"], "package" => $package_id, "buy_time" => TIMESTAMP, "expiration_time" => TIMESTAMP + $package_endTime); pdo_insert("users_packages", $order_record); $record_id = pdo_insertid(); if ($record_id <= 0) { throw new Exception("保存记录失败"); } //VIP时间同步 $groupData["endtime"] = $groupData["endtime"] < TIMESTAMP ? TIMESTAMP : $groupData["endtime"]; $old_over_time = date("Y-m-d", $groupData["endtime"]); $new_over_time = date("Y-m-d", TIMESTAMP + $package_endTime); $log = array(0, sprintf("自动续费: %s 套餐续费,续费前:%s 到期; 续费后:%s 到期", $group["name"], $old_over_time, $new_over_time)); if (intval($account["groupid"]) != intval($package_id)) { $surplus_price = $old_package["price"] * round(($groupData["endtime"] - TIMESTAMP) / 86400); $surplus_price = $surplus_price / $day; $surplus_time = round($surplus_price / $group["price"]) * $day; $package_endTime = $surplus_time * 24 * 60 * 60 + $package_time; $new_over_time = date("Y-m-d", TIMESTAMP + $package_endTime); $log_text = sprintf("套餐变更: <p>A、原套餐: %s , %s 到期</p><p>B、变更后: %s , %s 到期.</p>", $old_package["name"], $old_over_time, $group["name"], $new_over_time); $log = array(0, $log_text); if (pdo_update('uni_account', array('groupid' => $package_id), array('uniacid' => $account["uniacid"])) <= 0) { throw new Exception("更新套餐失败."); } } $new_groupdata = array('groupdata' => iserializer(array('isexpire' => 1, 'endtime' => TIMESTAMP + $package_endTime, 'oldgroupid' => $old_package['id'], 'is_auto' => 1))); if (pdo_update('uni_settings', $new_groupdata, array('uniacid' => $account["uniacid"])) <= 0) { throw new Exception("更新套餐失败!"); } $result = user_credits_update($user["uid"], "credit2", -$package_price, $log); if (is_error($result)) { throw new Exception($result["message"]); } $_W['account']['groupid'] = $account["uniacid"]; load()->model('module'); module_build_privileges(); pdo_update("users_packages", array("record_id" => $record_id, "status" => 1), array("id" => $record_id)); pdo_commit(); return true; } catch (Exception $e) { pdo_rollback(); return error(-1, $e->getMessage()); } return error(-1, "错误操作."); }