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; }
<?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";