コード例 #1
0
function cw_payment_sagepaygo_form_run_processor($params, $return)
{
    if ($params['payment_data']['processor'] == sagepaygo_form_addon_name) {
        global $config, $tables, $current_location, $cart;
        $payment_data = $params['payment_data'];
        $userinfo = $params['userinfo'];
        $doc_ids = $params['doc_ids'];
        $addon_name = str_replace("-", "_", sagepaygo_form_addon_name);
        $bill_name = cw_payment_sagepaygo_form_get_bill_name($userinfo);
        $ship_name = cw_payment_sagepaygo_form_get_ship_name($userinfo);
        $cart =& cw_session_register('cart');
        $skey = cw_call('cw_payment_start');
        $pp_merch = $config[$addon_name]['spf_vendor_name'];
        $pp_pass = $config[$addon_name]['spf_encryption_password'];
        $pp_curr = $config[$addon_name]['spf_currency'];
        // Determine request URL (simulator, test server or live server)
        switch ($config[$addon_name]['spf_test_live_mode']) {
            case 'S':
                $pp_test = 'https://test.sagepay.com/Simulator/VSPFormGateway.asp';
                break;
            case 'Y':
                $pp_test = 'https://test.sagepay.com/gateway/service/vspform-register.vsp';
                break;
            default:
                $pp_test = 'https://live.sagepay.com/gateway/service/vspform-register.vsp';
        }
        $pp_shift = preg_replace("/[^\\w\\d_-]/S", '', $config[$addon_name]['spf_order_prefix']);
        $crypt = array();
        $crypt['VendorTxCode'] = substr($pp_shift, 0, 8) . $skey;
        $crypt['ReferrerID'] = sagepaygo_form_addon_partner_id;
        $crypt['Amount'] = price_format($cart['info']['total']);
        $crypt['Currency'] = $pp_curr;
        $crypt['Description'] = "Your Cart";
        $crypt['SuccessURL'] = $current_location . '/index.php?target=' . sagepaygo_form_addon_target;
        $crypt['FailureURL'] = $current_location . '/index.php?target=' . sagepaygo_form_addon_target;
        $crypt['CustomerName'] = $bill_name['name'];
        $crypt['CustomerEMail'] = $userinfo['email'];
        $crypt['VendorEMail'] = $config['Company']['orders_department'];
        $crypt['SendEMail'] = 1;
        // Billing information
        $crypt['BillingSurname'] = $bill_name['lastname'];
        $crypt['BillingFirstnames'] = $bill_name['firstname'];
        $crypt['BillingAddress1'] = $userinfo['main_address']['address'];
        if (!empty($userinfo['main_address']['address_2'])) {
            $crypt['BillingAddress2'] = $userinfo['main_address']['address_2'];
        }
        $crypt['BillingCity'] = $userinfo['main_address']['city'];
        $crypt['BillingPostCode'] = $userinfo['main_address']['zipcode'];
        $crypt['BillingCountry'] = $userinfo['main_address']['country'];
        if ($userinfo['main_address']['country'] == 'US' && !empty($userinfo['main_address']['state'])) {
            $crypt['BillingState'] = $userinfo['main_address']['state'];
        }
        // Shipping information
        $crypt['DeliverySurname'] = $ship_name['lastname'];
        $crypt['DeliveryFirstnames'] = $ship_name['firstname'];
        $crypt['DeliveryAddress1'] = $userinfo['current_address']['address'];
        if (!empty($userinfo['current_address']['address_2'])) {
            $crypt['DeliveryAddress2'] = $userinfo['current_address']['address_2'];
        }
        $crypt['DeliveryCity'] = $userinfo['current_address']['city'];
        $crypt['DeliveryPostCode'] = $userinfo['current_address']['zipcode'];
        $crypt['DeliveryCountry'] = $userinfo['current_address']['country'];
        if ($userinfo['current_address']['country'] == 'US' && !empty($userinfo['current_address']['state'])) {
            $crypt['DeliveryState'] = $userinfo['current_address']['state'];
        }
        $crypt['AllowGiftAid'] = '0';
        $crypt['ApplyAVSCV2'] = $config[$addon_name]['spf_avs_cv2_checks'];
        $crypt['Apply3DSecure'] = $config[$addon_name]['spf_3d_secure_checks'];
        // Tide up the entire values
        $crypt = cw_payment_sagepaygo_form_clean_crypt($crypt);
        $crypt_str = implode("&", $crypt);
        cw_func_call('cw_payment_create_form', array('url' => $pp_test, 'fields' => array('VPSProtocol' => '2.23', 'Vendor' => $pp_merch, 'TxType' => 'PAYMENT', 'Crypt' => base64_encode(cw_payment_sagepaygo_form_simple_xor($crypt_str, $pp_pass))), 'name' => $payment_data['title']));
        die;
    }
    return $return;
}
コード例 #2
0
<?php

if (!isset($REQUEST_METHOD)) {
    $REQUEST_METHOD = $_SERVER['REQUEST_METHOD'];
}
$bill_output = array();
$addon_name = str_replace("-", "_", sagepaygo_form_addon_name);
if ($REQUEST_METHOD == 'GET' && isset($_GET['crypt'])) {
    global $config;
    $pass = $config[$addon_name]['spf_encryption_password'];
    $crypt = $_GET['crypt'];
    $response = array();
    parse_str(cw_payment_sagepaygo_form_simple_xor(cw_payment_sagepaygo_form_base64_decode($crypt), $pass), $response);
    $pp_shift = preg_replace("/[^\\w\\d_-]/S", '', $config[$addon_name]['spf_order_prefix']);
    $pp_shift = substr($pp_shift, 0, 8);
    $skey = str_replace($pp_shift, "", $response['VendorTxCode']);
    $data = cw_call('cw_payment_get_data', array($skey));
    $bill_output['sess_id'] = $data['session_id'];
    $bill_output['skey'] = $skey;
    if (trim($response['Status']) == "OK") {
        $bill_output['code'] = 1;
        $bill_output['billmes'] = "AuthNo: " . $response['TxAuthNo'] . ";\n";
    } else {
        $bill_output['code'] = 2;
        $bill_output['billmes'] = "Status: " . $response['StatusDetail'] . " (" . trim($response['Status']) . ")\n";
    }
    if (!empty($response['VPSTxId'])) {
        $bill_output['billmes'] .= " (TxID: " . trim($response['VPSTxId']) . ")\n";
    }
    if (!empty($response['AVSCV2'])) {
        $bill_output['billmes'] .= " (AVS/CVV2: {" . trim($response['AVSCV2']) . "})\n";