Example #1
0
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;
}
Example #2
0
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');
}