📄 ps_checkout.inc
字号:
$qt .= "AND user_info.address_type='BT'"; $dbbt->query($qt); $dbbt->next_record(); $dbst = new ps_DB; $qt = "SELECT * FROM user_info "; $qt .= "WHERE user_info_id='"; $qt .= $db->f("user_info_id") . "'"; $dbst->query($qt); $dbst->next_record(); $dbv = new ps_DB; $qt = "SELECT * from vendor "; /* Need to decide on vendor_id <=> order relationship */ $qt .= "WHERE vendor_id = $ps_vendor_id"; $dbv->query($qt); $dbv->next_record(); // Email Addresses for shopper and vendor // ************************************** $shopper_email = $dbbt->f("user_email"); $from_email = $dbv->f("contact_email"); // Headers and Footers // ****************************** // Shopper Header $shopper_header = "Thank you for shopping with us. Your order "; $shopper_header .= "information follows.\n\n"; //Shopper Footer $shopper_footer = "\n\nThank you for your patronage.\n"; $shopper_footer .= "\n\nQuestions? Problems?\n"; $shopper_footer .= "Email: " . $dbv->f("contact_email"); $shopper_subject = $dbv->f("vendor_name") . " Order -" . $db->f("order_id"); // Vendor Header $vendor_header = "The following order was received.\n"; $vendor_subject = "Order Notice-" . $db->f("order_id"); // Vendor Footer $url = $sess->url(SECUREURL . "?page=order/order_print&order_id=$order_id"); $vendor_footer = "\n\nView the order by following the link below.\n"; $vendor_footer .= $sess->url($url); $vendor_email = $dbv->f("contact_email"); // Main Email Message Purchase Order // ********************************* $shopper_message = "\nPURCHASE ORDER\n"; $shopper_message .= "------------------------------------------------------------------------\n"; $shopper_message .= "ORDER NUMBER: " . $db->f("order_id") . "\n"; $shopper_message .= "ORDER DATE: "; $shopper_message .= date("d-M-Y:H:i", $db->f("cdate")) . "\n"; $shopper_message .= "ORDER STATUS: "; switch($db->f("order_status")) { case ("P"): $shopper_message .= "Pending\n\n"; break; case ("X"): $shopper_message .= "Canceled\n\n"; break; case ("C"): $shopper_message .= "Confirmed\n\n"; break; } $shopper_message .= "CUSTOMER INFORMATION\n"; $shopper_message .= "--------------------\n\n"; $shopper_message .= "Bill To\n"; $shopper_message .= "-------\n\n"; $shopper_message .= " Company: "; $shopper_message .= $dbbt->f("company") . "\n"; $shopper_message .= " Name: "; if ($dbbt->f("title")) { $shopper_message .= $dbbt->f("title") . " "; } $shopper_message .= $dbbt->f("first_name") . " "; if ($dbbt->f("middle_name")) { $shopper_message .= $dbbt->f("middle_name") . " "; } $shopper_message .= $dbbt->f("last_name") . "\n"; $shopper_message .= " Address1: "; $shopper_message .= $dbbt->f("address_1") . "\n"; $shopper_message .= " Address2: "; $shopper_message .= $dbbt->f("address_2") . "\n"; $shopper_message .= " City: "; $shopper_message .= $dbbt->f("city") . "\n"; $shopper_message .= " State/Region: "; $shopper_message .= $dbbt->f("state") . "\n"; $shopper_message .= " Zip: "; $shopper_message .= $dbbt->f("zip") . "\n"; $shopper_message .= " Country: "; $shopper_message .= $dbbt->f("country") . "\n"; $shopper_message .= " Phone: "; $shopper_message .= $dbbt->f("phone_1") . "\n"; $shopper_message .= " Fax: "; $shopper_message .= $dbbt->f("fax") . "\n\n"; $shopper_message .= "Ship To\n"; $shopper_message .= "-------\n\n"; $shopper_message .= " Company: "; $shopper_message .= $dbst->f("company") . "\n"; $shopper_message .= " Name: "; $shopper_message .= $dbbt->f("title") . " "; $shopper_message .= $dbst->f("first_name") . " "; $shopper_message .= $dbst->f("middle_name") . " "; $shopper_message .= $dbst->f("last_name") . "\n"; $shopper_message .= " Address1: "; $shopper_message .= $dbst->f("address_1") . "\n"; $shopper_message .= " Address2: "; $shopper_message .= $dbst->f("address_2") . "\n"; $shopper_message .= " City: "; $shopper_message .= $dbst->f("city") . "\n"; $shopper_message .= " State/Region: "; $shopper_message .= $dbst->f("state") . "\n"; $shopper_message .= " Zip: "; $shopper_message .= $dbst->f("zip") . "\n"; $shopper_message .= " Country: "; $shopper_message .= $dbst->f("country") . "\n"; $shopper_message .= " Phone: "; $shopper_message .= $dbst->f("phone_1") . "\n"; $shopper_message .= " Fax: "; $shopper_message .= $dbst->f("fax") . "\n\n"; $shopper_message .= "ORDER ITEMS\n"; $shopper_message .= "-----------"; $dboi = new ps_DB; $q = "SELECT * "; $q .= "FROM product, order_item, orders "; $q .= "WHERE product.product_id=order_item.product_id "; $q .= "AND order_item.order_id='"; $q .= $order_id . "' "; $q .= "AND orders.order_id=order_item.order_id"; $dboi->query($q); while($dboi->next_record()) { $shopper_message .= "\n\n"; $shopper_message .= "PRODUCT = "; if ($dboi->f("product_parent_id")) { $shopper_message .= $ps_product->get_field($dboi->f("product_parent_id"), "product_name") . "\n"; $shopper_message .= "SERVICE = "; } $shopper_message .= $dboi->f("product_name") . "\n"; $shopper_message .= "QUANTITY = "; $shopper_message .= $dboi->f("product_quantity") . "\n"; $shopper_message .= "SKU = "; $shopper_message .= $ps_product->get_field($dboi->f("product_id"), "product_sku") . "\n"; $price = $ps_product->get_price($dboi->f("product_id")); $shopper_message .= "PRICE = "; $shopper_message .= sprintf("%1.2f %s", $price["product_price"], $price["product_currency"]); } $shopper_message .= "\n\n"; $sub_total = $db->f("order_subtotal"); $shopper_message .= "SUBTOTAL = "; $shopper_message .= sprintf("%1.2f %s\n", $sub_total, $price["product_currency"]); $order_tax = $db->f("order_tax"); $shopper_message .= "TAX = "; $shopper_message .= sprintf("%1.2f\n", $order_tax); $order_shipping = $db->f("order_shipping"); $shopper_message .= "SHIPPING = "; $shopper_message .= sprintf("%1.2f\n", $order_shipping); $order_shipping_tax = $db->f("order_shipping_tax"); $shopper_message .= "SHIPPING TAX = "; $shopper_message .= sprintf("%1.2f\n", $order_shipping_tax); $order_total= $sub_total + $order_tax + $order_shipping + $order_shipping_tax; $shopper_message .= "\n\n"; $shopper_message .= "TOTAL = "; $shopper_message .= sprintf("%1.2f %s\n", $order_total, $price["product_currency"]); $shopper_message .= "------------------------------------------------------------------------\n"; // End of Purchase Order // ********************* require_once("admin/lib/ps_mail.inc"); $ps_mail = new ps_mail; // Mail receipt to the shopper $ps_mail->send($shopper_email, $shopper_subject, $shopper_header . $shopper_message . $shopper_footer, $from_email); // Mail receipt to the vendor $ps_mail->send($vendor_email, $vendor_subject, $vendor_header . $shopper_message . $vendor_footer, $from_email); return(True); } /************************************************************************** ** name: asterisk_pad() ** created by: gday ** description: Return $str with all but $display_length at the end as ** asterisks. ** parameters: $str - string to asterisk pad ** $display_length - length at the end of $str that will not ** be obscured by asterisks ** returns: $str with all but $display_length at the end obscured ** by asterisks ***************************************************************************/ function asterisk_pad($str, $display_length) { $total_length = strlen($str); if($total_length > $display_length) { for($i = 0; $i < $total_length - $display_length; $i++) { $str[$i] = "*"; } } return($str); } /************************************************************************** ** name: cybercash_process() ** created by: pablo ** description: Based on the cyberlib class found in the PHP extensions library. ** parameters: ** returns: ***************************************************************************/ function cybercash_process($order_number, $order_total, &$d) { global $auth, $ps_vendor_id; require "checkout/lib/ps_cyberlib.inc"; // Get user billing information $dbbt = new ps_DB; $qt = "SELECT * from user_info "; $qt .= "WHERE user_info.user_id='".$auth["user_id"]."' "; $qt .= "AND user_info.address_type='BT'"; $dbbt->query($qt); $dbbt->next_record(); $merchant=CC_MERCHANT; $merchant_key=CC_MERCHANT_KEY; $payment_url=CC_PAYMENT_URL; $auth_type=CC_AUTH_TYPE; $expire_date = date("m/y",$d["order_payment_expire"]); $response=SendCC2_1Server($merchant,$merchant_key,$payment_url, $auth_type, array( "Order-ID" => $order_number, "Amount" => $this->get_vendor_currency($ps_vendor_id) . " " . $order_total, "Card-Number" => $d["order_payment_number"], "Card-Address" => $dbbt->f("address_1"), "Card-City" => $dbbt->f("city"), "Card-State" => $dbbt->f("state"), "Card-Zip" => $dbbt->f("zip"), "Card-Country" => $dbbt->f("country"), "Card-Exp" => $expire_date, "Card-Name" => $dbbt->f("first_name")." ".$dbbt->f("last_name") ) ); $d["order_payment_log"] = ""; while(list($key,$val)=each($response)) { $d["order_payment_log"] .= $key."=".$val."<br>"; } if ($response["MStatus"] == "success") return True; else { $d["error"] = $response["MErrMsg"]; return False; } } /************************************************************************** ** name: authnet_process() ** created by: jep ** description: process transaction using ps_authnet.inc class ** parameters: ** returns: ***************************************************************************/ function authnet_process($order_number, $order_total, &$d) { global $auth, $ps_vendor_id; // Get user billing information $dbbt = new ps_DB; $qt = "SELECT * from user_info "; $qt .= "WHERE user_info.user_id='".$auth["user_id"]."' "; $qt .= "AND user_info.address_type='BT'"; $dbbt->query($qt); $dbbt->next_record(); //Object to convert country code to two character code include("admin/lib/ps_country.inc"); $country = new ps_country; //Authnet - connect settings $host = "secure.authorize.net"; $port = 443; $path = "/gateway/transact.dll"; //Authnet vars to send //More can be added if needed. $formdata = array ( 'x_version' => '3.1', 'x_delim_data' => 'True', 'x_delim_char' => '|', 'x_relay_response' => 'False', 'x_login' => AN_LOGIN, 'x_tran_key' => AN_TRAN_KEY, 'x_test_request' => AN_TEST_REQUEST, 'x_type' => AN_TYPE, 'x_first_name' => $dbbt->f("first_name"), 'x_last_name' => $dbbt->f("last_name"), 'x_address' => $dbbt->f("address_1"), 'x_city' => $dbbt->f("city"), 'x_state' => $dbbt->f("state"), 'x_zip' => $dbbt->f("zip"), 'x_country' => $country->getTwoLetterCode($dbbt->f("country")), 'x_card_num' => $d["order_payment_number"], 'x_card_code' => '', 'x_amount' => $this->get_vendor_currency($ps_vendor_id) . " " . $order_total, 'x_exp_date' => date("mY",$d["order_payment_expire"]), 'x_email' => '', 'x_email_customer' => 'False', 'x_cust_id' => '', 'x_customer_ip' => $_SERVER["REMOTE_ADDR"], 'x_phone' => '', 'x_fax' => '', 'x_invoice_num' => $order_number, 'x_description' => '' ); //build the post string $poststring = ''; foreach($formdata AS $key => $val){ $poststring .= urlencode($key) . "=" . urlencode($val) . "&"; } // strip off trailing ampersand $poststring = substr($poststring, 0, -1); $fp = fsockopen("ssl://".$host, $port, $errno, $errstr, $timeout = 60); if(!$fp){ //error tell us echo "$errstr ($errno)\n"; }else{ //send the server request fputs($fp, "POST $path HTTP/1.1\r\n"); fputs($fp, "Host: $host\r\n"); fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n"); fputs($fp, "Content-length: ".strlen($poststring)."\r\n"); fputs($fp, "Connection: close\r\n\r\n"); fputs($fp, $poststring . "\r\n\r\n"); //Get the response header from the server $str = ''; while(!feof($fp) && !stristr($str, 'content-length')) { $str = fgets($fp, 4096); } // If didnt get content-lenght, something is wrong, return false. if (!stristr($str, 'content-length')) { return false; } // Get length of data to be received. $length = trim(substr($str,strpos($str,'content-length') + 15)); // Get buffer (blank data before real data) fgets($fp, 4096); // Get real data $data = fgets($fp, $length); fclose($fp); $response = explode("|", $data); } $d["order_payment_log"] = $response[3]; if ($response[0] == '1') { $d["order_status"] = 'C'; return True; } else { $d["error"] = $response[3]; return False; } } } ?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -