Exemple #1
0
function paypalcheckout($lang, $amount, $currency, $tax = 0, $context = false)
{
    global $base_url, $paypal_url, $sitename, $supported_languages;
    if (!user_is_identified()) {
        return run('error/unauthorized', $lang);
    }
    if (!(is_numeric($amount) and $amount > 0)) {
        return run('error/badrequest', $lang);
    }
    $amt = paypal_amt($amount);
    if (!validate_currency($currency)) {
        return run('error/badrequest', $lang);
    }
    $currencycode = $currency;
    if (!(is_numeric($tax) and $tax >= 0)) {
        return run('error/badrequest', $lang);
    }
    $taxamt = paypal_amt($tax);
    $itemamt = paypal_amt($amount - $tax);
    $name = translate('donate:name', $lang);
    $locale = $lang;
    if (!$locale) {
        $locale = user_profile('locale');
    }
    if (!$locale) {
        $locale = $supported_languages[0];
    }
    $localecode = paypal_localecode($locale);
    $email = user_profile('mail');
    $brandname = $sitename;
    $hdrimg = $base_url . '/logos/sitelogo.png';
    $returnurl = $base_url . url('paypalreturn', $lang);
    $cancelurl = $base_url . url('paypalcancel', $lang);
    $params = array('LOCALECODE' => $localecode, 'PAYMENTREQUEST_0_PAYMENTACTION' => 'Sale', 'PAYMENTREQUEST_0_CURRENCYCODE' => $currencycode, 'PAYMENTREQUEST_0_AMT' => $amt, 'PAYMENTREQUEST_0_ITEMAMT' => $itemamt, 'PAYMENTREQUEST_0_TAXAMT' => $taxamt, 'L_PAYMENTREQUEST_0_NAME0' => $name, 'L_PAYMENTREQUEST_0_AMT0' => $itemamt, 'L_PAYMENTREQUEST_0_TAXAMT0' => $taxamt, 'L_PAYMENTREQUEST_0_QTY0' => '1', 'NOSHIPPING' => '1', 'ALLOWNOTE' => '0', 'EMAIL' => $email, 'BRANDNAME' => $sitename, 'HDRIMG' => $hdrimg, 'RETURNURL' => $returnurl, 'CANCELURL' => $cancelurl);
    $r = paypal_setexpresscheckout($params);
    if (!$r) {
        return run('error/internalerror', $lang);
    }
    $token = $r['TOKEN'];
    $_SESSION['paypal'] = compact('token', 'amt', 'itemamt', 'taxamt', 'currencycode', 'context');
    reload($paypal_url . '/webscr&cmd=_express-checkout&token=' . $token);
}
Exemple #2
0
function donateme($lang)
{
    global $supported_currencies;
    $action = 'init';
    if (isset($_POST['donateme_donate'])) {
        $action = 'donate';
    }
    $amount = $currency = $token = false;
    switch ($action) {
        case 'donate':
            if (isset($_POST['donateme_amount'])) {
                $amount = readarg($_POST['donateme_amount']);
            }
            if (isset($_POST['donateme_currency'])) {
                $currency = readarg($_POST['donateme_currency']);
            }
            if (isset($_POST['donateme_token'])) {
                $token = readarg($_POST['donateme_token']);
            }
            break;
        default:
            break;
    }
    $missing_amount = false;
    $bad_amount = false;
    $missing_currency = false;
    $bad_currency = false;
    $bad_token = false;
    switch ($action) {
        case 'donate':
            if (!isset($_SESSION['donateme_token']) or $token != $_SESSION['donateme_token']) {
                $bad_token = true;
                break;
            }
            if (!$amount) {
                $missing_amount = true;
            } else {
                if (!(is_numeric($amount) and $amount >= 1)) {
                    $bad_amount = true;
                }
            }
            if (!$currency) {
                $missing_currency = true;
            } else {
                if (!validate_currency($currency)) {
                    $bad_currency = true;
                }
            }
            break;
        default:
            break;
    }
    switch ($action) {
        case 'donate':
            if ($bad_token or $missing_amount or $bad_amount or $missing_currency or $bad_currency) {
                break;
            }
            unset($_SESSION['donateme_token']);
            require_once 'actions/paypalcheckout.php';
            paypalcheckout($lang, $amount, $currency);
            break;
        default:
            break;
    }
    $_SESSION['donateme_token'] = $token = token_id();
    $errors = compact('missing_amount', 'bad_amount', 'missing_currency', 'bad_currency');
    $output = view('donateme', $lang, compact('token', 'supported_currencies', 'amount', 'currency', 'errors'));
    return $output;
}