示例#1
0
function jg_front_end_sagepay($atts)
{
    if (session_id() == '' || !isset($_SESSION)) {
        // session isn't started
        session_start();
    }
    ob_start();
    global $current_user;
    global $wp_roles;
    global $wpdb;
    global $error;
    global $js_shortcode_on_front;
    extract(shortcode_atts(array('redirectPaid' => 0, 'display' => true, 'template' => ''), $atts));
    /*
       if ( trim($_SESSION['userEnc']) == '' ){
           $redirectLink = trim(home_url());
           if (intval($redirectLink) != 0)
               $redirectLink = get_permalink($redirectLink);
           else{
               if (!jg_check_missing_http($redirectLink)) $redirectLink = 'http://'. $redirectLink;
           }
           wp_redirect( $redirectLink ); exit;
       }
    */
    $wpjg_generalSettings = get_option('jg_general_settings');
    $result = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}jgusers WHERE `userEnc`='" . trim($_SESSION['userEnc']) . "';", ARRAY_A);
    if (isset($result['paidaccess']) && $wpjg_generalSettings['paidaccess'] == 1 && $result['paidaccess'] == 1) {
        $redirectLink = trim($redirectPaid);
        if (intval($redirectLink) != 0) {
            $redirectLink = get_permalink($redirectLink);
        } else {
            if (!jg_check_missing_http($redirectLink)) {
                $redirectLink = 'http://' . $redirectLink;
            }
        }
        wp_redirect($redirectLink);
        exit;
    }
    if (trim($template) == '') {
        $template = 'sagepay.html';
    }
    $crypt = '';
    if (isset($_REQUEST["action"])) {
        require_once JG_PLUGIN_DIR . "/sagepay/sagepay.php";
        $p = new SagePay();
        // paypal class
        $action = $_REQUEST["action"];
        switch ($action) {
            case "process":
                // case process insert the form data in DB and process to the paypal
                $wpdb->update($wpdb->prefix . "jgusers", array('paytoken' => $_POST["invoice"]), array('userEnc' => trim($_SESSION['userEnc'])));
                $this_script = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
                $p->setSuccessURL($this_script . '?action=success');
                // return URL after the transaction got over
                $p->setFailureURL($this_script . '?action=cancel');
                // cancel URL if the trasaction was cancelled during half of the transaction
                $p->setCurrency($_POST["currency_code"]);
                $p->setDescription($_POST["product_name"]);
                $p->setAmount($wpjg_generalSettings['payamount']);
                $p->setBillingFirstnames($_POST["payer_fname"]);
                $p->setBillingSurname($_POST["payer_lname"]);
                $p->setBillingAddress1($_POST["payer_address"]);
                $p->setBillingCity($_POST["payer_city"]);
                $p->setBillingState($_POST["payer_state"]);
                $p->setBillingCountry($_POST["payer_country"]);
                $p->setBillingPostCode($_POST["payer_zip"]);
                $p->setVendorTxCode($_POST["invoice"]);
                $p->setDeliverySameAsBilling();
                $xml = new DOMDocument();
                $basketNode = $xml->createElement("basket");
                $itemNode = $xml->createElement("item");
                $descriptionNode = $xml->createElement('description');
                $descriptionNode->nodeValue = 'Entry fee';
                $itemNode->appendChild($descriptionNode);
                $quantityNode = $xml->createElement('quantity');
                $quantityNode->nodeValue = $_POST["product_quantity"];
                $itemNode->appendChild($quantityNode);
                $unitNetAmountNode = $xml->createElement('unitNetAmount');
                $unitNetAmountNode->nodeValue = $wpjg_generalSettings['payamount'];
                $itemNode->appendChild($unitNetAmountNode);
                $unitTaxAmountNode = $xml->createElement('unitTaxAmount');
                $unitTaxAmountNode->nodeValue = '0';
                $itemNode->appendChild($unitTaxAmountNode);
                $unitGrossAmountNode = $xml->createElement('unitGrossAmount');
                $unitGrossAmountNode->nodeValue = $wpjg_generalSettings['payamount'];
                $itemNode->appendChild($unitGrossAmountNode);
                $totalGrossAmountNode = $xml->createElement('totalGrossAmount');
                $totalGrossAmountNode->nodeValue = $wpjg_generalSettings['payamount'];
                $itemNode->appendChild($totalGrossAmountNode);
                $basketNode->appendChild($itemNode);
                $xml->appendChild($basketNode);
                $p->setBasketXML($xml->saveHTML());
                $crypt = $sagePay->getCrypt();
                break;
            case "success":
                if ($_REQUEST['crypt']) {
                    $responseArray = $sagePay->decode($_REQUEST['crypt']);
                    //Check status of response
                    if ($responseArray["Status"] === "OK") {
                        $wpdb->update($wpdb->prefix . "jgusers", array('paidaccess' => 1, 'txn_id' => $responseArray["VPSTxId"]), array('paytoken' => trim($_POST["VendorTxCode"])));
                    } elseif ($responseArray["Status"] === "ABORT") {
                        // Payment Cancelled
                    } else {
                        // Payment Failed
                        throw new \Exception($responseArray["StatusDetail"]);
                    }
                    print '<pre>';
                    print_r($responseArray);
                    print '</pre>';
                    exit;
                }
                break;
        }
    }
    require_once JG_PLUGIN_DIR . '/lib/Smarty.class.php';
    $smarty = new Smarty();
    $smarty->template_dir = JG_PLUGIN_DIR . '/smarty/templates/';
    $smarty->compile_dir = JG_PLUGIN_DIR . '/smarty/templates_c/';
    $smarty->config_dir = JG_PLUGIN_DIR . '/smarty/configs/';
    $smarty->cache_dir = JG_PLUGIN_DIR . '/smarty/cache/';
    $smarty->assign('formurl', jg_curpageurl());
    $smarty->assign('Errors', $errors);
    $smarty->assign('Settings', $wpjg_generalSettings);
    $invoice = array('productid' => rand(1111, 99999), 'invoiceid' => date("His") . rand(1234, 9632));
    $smarty->assign('Get', $_GET);
    $smarty->assign('Post', $_POST);
    $smarty->assign('User', $_SESSION);
    $smarty->assign('Invoice', $invoice);
    $smarty->assign('crypt', $crypt);
    $smarty->assign('vendor', $wpjg_generalSettings['paypal_femail']);
    $smarty->display($template);
    $output = ob_get_contents();
    ob_end_clean();
    return $output;
}
示例#2
0
$itemNode->appendChild($quantityNode);
$unitNetAmountNode = $xml->createElement('unitNetAmount');
$unitNetAmountNode->nodeValue = '90.00';
$itemNode->appendChild($unitNetAmountNode);
$unitTaxAmountNode = $xml->createElement('unitTaxAmount');
$unitTaxAmountNode->nodeValue = '10.00';
$itemNode->appendChild($unitTaxAmountNode);
$unitGrossAmountNode = $xml->createElement('unitGrossAmount');
$unitGrossAmountNode->nodeValue = '100.00';
$itemNode->appendChild($unitGrossAmountNode);
$totalGrossAmountNode = $xml->createElement('totalGrossAmount');
$totalGrossAmountNode->nodeValue = '100.00';
$itemNode->appendChild($totalGrossAmountNode);
$basketNode->appendChild($itemNode);
$xml->appendChild($basketNode);
$sagePay->setBasketXML($xml->saveHTML());
$sagePay->setSuccessURL('https://www.yoururl.com/success.php');
$sagePay->setFailureURL('https://www.yoururl.org/fail.php');
?>

<form method="POST" id="SagePayForm" action="https://test.sagepay.com/gateway/service/vspform-register.vsp">
	<input type="hidden" name="VPSProtocol" value= "3.00">
	<input type="hidden" name="TxType" value= "PAYMENT">
	<input type="hidden" name="Vendor" value= "YOURVERNODID">
	<input type="hidden" name="Crypt" value= "<?php 
echo $sagePay->getCrypt();
?>
">
	<input type="submit" value="continue to SagePay">
</form>