function done_transaction($oid, $vpnid) { $ret = order_dopayment($oid); if ($ret === false) { pay_error(CANTFINISH); die; } /// 支付成功,开通服务并显示成功信息 $sql = "SELECT * FROM service WHERE id IN (SELECT serviceid FROM `order` WHERE id={$oid})"; $res = db_query($sql); if ($res === false) { pay_error(_("Can not find service correlate to order.id={$oid}, payment token={$token}")); die; } $service = db_fetch_array($res); /// 查找对应的 VPN 帐号 $vpnid = (int) $vpnid; $vpns = db_quick_fetch('vpnaccount', "WHERE id={$vpnid}"); if (count($vpns) <= 0) { vpn_log("No vpnid {$vpnid} found for order {$oid}"); return false; } $vpn = $vpns[0]; /// 下面的代码和 account_new.php 中的代码一致 /// 3. 账户余额足够,开通帐号 vpn_renew($vpn['username'], $service['duration'], $service['radiusgroup']); /// 4. 发货(在 raidus 中设置帐号),并扣款 order_delivery($oid); return true; }
require_once 'includes/header.php'; require_once 'includes/order.lib.php'; $oid = (int) @$_POST['id']; /// 先检查这个订单是不是已经支付过了 $orders = db_quick_fetch('order', "WHERE id={$oid}"); if (count($orders) <= 0) { pay_error('No such order'); die; } $order = $orders[0]; if ($order['paidtime'] != null) { $smarty->assign('tip_title', _('Error')); $smarty->assign('tip_msg', _('This order is already paid')); $smarty->assign('redirect_url', $url); $smarty->assign('redirect_delay', 1); $smarty->display('tip.html'); die; } /// 生成订单并跳转到支付页面 $order = order_request($oid); if ($order === false) { pay_error(_('An error occured, please contact us for help')); die; } order_redirect($oid); function pay_error($msg) { global $smarty; $smarty->assign(array('tip_title' => _('ERROR'), 'tip_msg' => _($msg))); $smarty->display('tip.html'); }