<!-- config.php 实际操作中务必把HTML和PHP注释去掉,否则有可能出现支付失败-->
<?php
$passw="wwwwwwww"; //云网交易钥匙
$scode="1000000"; //云网商户号
$yuan=0.01; //商品价格
$aurl="http://www.shadowsnow.com/A.php"; //产生订单 stat 字段 设为0, 表示尚待支付
$burl="http://www.shadowsnow.com/B.php"; //提交反馈 stat 字段 设为1, 表示支付需确认
$curl="http://www.shadowsnow.com/C.php"; //确认订单 stat 字段 设为2, 表示支付成功
$okurl="http://www.shadowsnow.com/index.asp"; //成功返回页面
$errurl="http://www.shadowsnow.com/error.asp"; //失败返回界面
$host_="localhost"; //mysql的地址
$user_="root"; //mysql的账户
$pwd_="123456"; //mysql的密码
$dbname_="shadowsnow"; //mysql数据库名
/*
数据库表bank结构:
CREATE TABLE IF NOT EXISTS `bank` (
`id` int(3) NOT NULL AUTO_INCREMENT,
`user` char(16) NOT NULL,
`yuan` float NOT NULL,
`orders` char(15) NOT NULL,
`memo1` char(32) NOT NULL,
`memo2` char(32) NOT NULL,
`signstr` char(32) NOT NULL,
`stat` tinyint(1) NOT NULL,
`bdate` char(8) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=17 ;
*/
class DBconn{
private $host;
private $user;
private $pwd;
private $dbname;
private $conn;
private $sql;
private $result;
function __construct(){
$this->host=$GLOBALS['host_'] ;
$this->user=$GLOBALS['user_'] ;
$this->pwd=$GLOBALS['pwd_'] ;
$this->dbname=$GLOBALS['dbname_'] ;
$this->conn=mysql_connect($this->host,$this->user,$this->pwd) or exit("MySQL Error : " . mysql_error());
mysql_select_db($this->dbname,$this->conn) or exit("MySQL Error : " . mysql_error());
}
function __destruct(){
mysql_close($this->conn) or exit("MySQL Error : " . mysql_error());
}
function __get($property_name){
if (isset($this->property_name)){
return $this->property_name;
}
else{
return NULL;
}
}
function __set($property_name,$value){
$this->property_name=$this->value;
}
//增删改
function execute($sql){
$this->sql=$sql;
$this->result=mysql_query($sql,$this->conn) or exit("MySQL Error : " . mysql_error());
$affected_rows=mysql_affected_rows($this->conn);
return $affected_rows;
}
//查询
function query($sql){
$this->sql=$sql;
$this->result=mysql_query($sql,$this->conn) or exit("MySQL Error : " . mysql_error());
$num_rows=mysql_num_rows($this->result);
return $num_rows;
}
//获取记录集
function result($sql){
$this->sql=$sql;
$this->result=mysql_query($sql,$this->conn) or exit("MySQL Error : " . mysql_error());
return $this->result;
}
//获取当前记录行
function fetch(){
$fetch_object=mysql_fetch_object($this->result);
return $fetch_object;
}
//32次md5加密
function md8($data){
for ($i = 0; $i < 32; $i ) {
$data = md5($data);
}
return $data;
}
//24次md5加密, 明文
function md7($data){
for ($i = 0; $i < 24; $i ) {
$data = md5($data);
}
return $data;
}
//8次md5加密,密文, 注: md1(md7($str))=md8($str)
function md1($data){
for ($i = 0; $i < 8; $i ) {
$data = md5($data);
}
return $data;
}
function alertu($astr,$aurl){
exit("<Script Language=JavaScript>alert('".$astr."');location.href='".$aurl."';</Script>");
}
}
?>
<!-- A.php 实际操作中务必把HTML和PHP注释去掉,否则有可能出现支付失败-->
<?php
require_once('config.php');
$dbs=new DBconn();
$c_orderamount = $yuan; //订单金额
$user='会员'; //会员姓名
$c_order = date("YmdHis")."9".intval($yuan*100); //订单号
$c_memo1 = $dbs->md7(date("YmdHis")."9"); //参数1
$c_memo2 = $dbs->md7("2009".intval($yuan*100)); //参数2
$c_ymd = date("Ymd"); //订单产生日期
$c_mid = $scode; //运往商户号
$c_name = "影雪"; //显示的商户名,可以随意改,没有所谓
$c_address = "ShadowSnow.Cn"; //商户地址
$c_tel = "15895901123"; //商户电话
$c_post = "210098"; //商户邮编
$c_email = "mail@shadowsnow.cn"; //商户邮箱
$c_moneytype= "0"; //币种, 0为人民币
$c_retflag = "1"; //必须选1
$c_paygate = ""; //支付网关,留空即可
$c_returl = $burl; //接受云网支付通知,并反馈的页面
$c_pass = $passw; //商户密码
$notifytype = "1"; //必须选1
$c_language = "0"; //操作语言,选0
$srcStr = $c_mid . $c_order . $c_orderamount . $c_ymd . $c_moneytype . $c_retflag . $c_returl . $c_paygate . $c_memo1 . $c_memo2 . $notifytype . $c_language . $c_pass;
$c_signstr = md5($srcStr); //签证加密,必须是md5加密,不能用其他加密方式,否则云网当做签证失败处理
//订单是否存在,存在则报错
$exe = "SELECT `id` FROM `bank` where orders='$c_order' ";
$exe .= " or memo1='$c_memo1' or signstr='$c_signstr' limit 1 ";
if($dbs->query($exe)){
alertu('Order Existed !', $errurl);
}
//创建订单,不能创建则报错
$exe = "INSERT INTO `bank` (user, yuan, orders , memo1 ,memo2 , signstr, stat , bdate) ";
$exe .= " VALUES ( '".$user."' ,$c_orderamount,'".$c_order."','".$c_memo1."','".$c_memo2."','".$c_signstr."',0, '".$c_ymd."')";
if (!$dbs->execute($exe)){
alertu('Cannot Create a order !' ,$errurl);
}
unset($dbs);
echo <<<TOD
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Language" content="zh-CN">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta name="robots" content="none" />
<title>云网支付接口</title>
<noscript>Your browser does not support JavaScript!</noscript>
</head>
<body onLoad="javascript:document.payForm.submit()">
<form name="payForm" action="https://www.cncard.net/purchase/getorder.asp" method="POST">
<input type="hidden" name="c_mid" value="$c_mid">
<input type="hidden" name="c_order" value="$c_order">
<input type="hidden" name="c_name" value="$c_name">
<input type="hidden" name="c_address" value="$c_address">
<input type="hidden" name="c_tel" value="$c_tel">
<input type="hidden" name="c_post" value="$c_post">
<input type="hidden" name="c_email" value="$c_email">
<input type="hidden" name="c_orderamount" value="$c_orderamount">
<input type="hidden" name="c_ymd" value="$c_ymd">
<input type="hidden" name="c_moneytype" value="$c_moneytype">
<input type="hidden" name="c_retflag" value="$c_retflag">
<input type="hidden" name="c_paygate" value="$c_paygate">
<input type="hidden" name="c_returl" value="$c_returl">
<input type="hidden" name="c_memo1" value="$c_memo1">
<input type="hidden" name="c_memo2" value="$c_memo2">
<input type="hidden" name="c_language" value="$c_language">
<input type="hidden" name="notifytype" value="$notifytype">
<input type="hidden" name="c_signstr" value="$c_signstr">
</form>
</body>
</html>
TOD;
?>
<!-- B.php 实际操作中务必把HTML和PHP注释去掉,否则有可能出现支付失败-->
<?php
require_once('config.php');
$dbs=new DBconn();
$c_mid = trim($_GET['c_mid']);
$c_order = trim($_GET['c_order']);
$c_orderamount = trim($_GET['c_orderamount']);
$c_ymd = trim($_GET['c_ymd']);
$c_transnum = trim($_GET['c_transnum']);
$c_succmark = trim($_GET['c_succmark']);
$c_moneytype = trim($_GET['c_moneytype']);
$c_cause = trim($_GET['c_cause']);
$c_memo1 = $dbs->md1(trim($_GET['c_memo1']));
$c_memo2 = $dbs->md1(trim($_GET['c_memo2']));
$c_signstr = trim($_GET['c_signstr']);
if($c_mid=="" || $c_order=="" || $c_orderamount=="" || $c_ymd=="" || $c_moneytype=="" || $c_transnum=="" || $c_succmark=="" || $c_signstr==""){
exit("支付信息有误!");
}
$c_pass = $passw;
$srcStr = $c_mid . $c_order . $c_orderamount . $c_ymd . $c_transnum . $c_succmark . $c_moneytype . $c_memo1 . $c_memo2 . $c_pass;
$r_signstr = md5($srcStr);
if($r_signstr!=$c_signstr){
exit("签名验证失败");
}
$MerchantID=$scode; //商户号
if($MerchantID!=$c_mid){
exit("提交的商户编号有误");
}
if (!preg_match('/^[0-9]{15}$/',$c_order)){
exit("订单号有误!");
}
$exe = "SELECT `yuan` FROM `bank` where orders='$c_order' and yuan=$c_orderamount ";
$exe .= " and memo1='$c_memo1' and memo2='$c_memo2' ";
$exe .= " and stat = 0 and bdate='$c_ymd' limit 1 "; // stat = 0
if(!$dbs->query($exe)){
alertu('Order Error !', $errurl);
}
$r_memo1 = $dbs->md8(substr($c_order,0,15));
$r_memo2 = $dbs->md8("2009".intval($c_orderamount*100));
if(($r_memo1<>$c_memo1) || ($r_memo2<>$c_memo2)){
exit("参数提交有误");
}
if($c_succmark!="Y" && $c_succmark!="N"){
exit("参数提交有误");
}
if($c_succmark="Y"){
$exe = "UPDATE bank SET stat=1, signstr='$c_signstr' ";
$exe .= " where orders='$c_order' and memo1='$c_memo1' limit 1 "; // stat = 1
if (!$dbs->execute($exe)){
alertu('Cannot Update The Order !' ,$errurl);
}
}
if($c_succmark="N"){
exit("操作失败,请与管理员联系!!");
}
unset($dbs);
echo "<result>1</result><reURL>".$curl."</reURL>";
?>
<!-- C.php 实际操作中务必把HTML和PHP注释去掉,否则有可能出现支付失败-->
<?php
require_once('config.php');
$dbs=new DBconn();
$c_mid = trim($_GET['c_mid']);
$c_order = trim($_GET['c_order']);
$c_orderamount = trim($_GET['c_orderamount']);
$c_ymd = trim($_GET['c_ymd']);
$c_transnum = trim($_GET['c_transnum']);
$c_succmark = trim($_GET['c_succmark']);
$c_moneytype = trim($_GET['c_moneytype']);
$c_cause = trim($_GET['c_cause']);
$c_memo1 = $dbs->md1(trim($_GET['c_memo1']));
$c_memo2 = $dbs->md1(trim($_GET['c_memo2']));
$c_signstr = trim($_GET['c_signstr']);
if($c_mid=="" || $c_order=="" || $c_orderamount=="" || $c_ymd=="" || $c_moneytype=="" || $c_transnum=="" || $c_succmark=="" || $c_signstr==""){
exit("支付信息有误!");
}
$c_pass = $passw;
$srcStr = $c_mid . $c_order . $c_orderamount . $c_ymd . $c_transnum . $c_succmark . $c_moneytype . $c_memo1 . $c_memo2 . $c_pass;
$r_signstr = md5($srcStr);
if($r_signstr!=$c_signstr){
exit("签名验证失败");
}
$MerchantID=$scode; //商户号
if($MerchantID!=$c_mid){
exit("提交的商户编号有误");
}
if (!preg_match('/^[0-9]{15}$/',$c_order)){
exit("订单号有误!");
}
$exe = "SELECT `yuan` FROM `bank` where orders='$c_order' and yuan=$c_orderamount ";
$exe .= " and memo1='$c_memo1' and memo2='$c_memo2' ";
$exe .= " and signstr='$c_signstr' and stat = 1 and bdate='$c_ymd' limit 1 "; // stat = 1
if(!$dbs->query($exe)){
alertu('Order Error !', $errurl);
}
$r_memo1 = $dbs->md8(substr($c_order,0,15));
$r_memo2 = $dbs->md8("2009".intval($c_orderamount*100));
if(($r_memo1<>$c_memo1) || ($r_memo2<>$c_memo2)){
exit("参数提交有误");
}
if($c_succmark!="Y" && $c_succmark!="N"){
exit("参数提交有误");
}
if($c_succmark="Y"){
$exe = "UPDATE bank SET stat=2 where orders='$c_order' ";
$exe .= " and memo1='$c_memo1' and signstr='$c_signstr' limit 1 "; // stat = 2
if (!$dbs->execute($exe)){
alertu('Cannot Update The Order !' ,$errurl );
}
}
if($c_succmark="N"){
exit("操作失败,请与管理员联系!!");
}
unset($dbs);
alertu('支付成功 !' ,$okurl );
?>
<?php
function getip(){
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
if (!preg("/^(10|172\.16|192\.168)\./", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
function get_client_ip()
{
global $_SERVER;
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
{
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
elseif (isset($_SERVER["HTTP_CLIENT_IP"]))
{
$realip = $_SERVER["HTTP_CLIENT_IP"];
}
else
{
$realip = $_SERVER["REMOTE_ADDR"];
}
return $realip;
}
echo get_client_ip();
//来自PHPBB
if( getenv('HTTP_X_FORWARDED_FOR') != '' )
{
$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : $REMOTE_ADDR );
$entries = explode(',', getenv('HTTP_X_FORWARDED_FOR'));
reset($entries);
while (list(, $entry) = each($entries))
{
$entry = trim($entry);
if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entry, $ip_list) )
{
$private_ip = array('/^0\./', '/^127\.0\.0\.1/', '/^192\.168\..*/', '/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/', '/^10\..*/', '/^224\..*/', '/^240\..*/');
$found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);
if ($client_ip != $found_ip)
{
$client_ip = $found_ip;
break;
}
}
}
}
else
{
$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : $REMOTE_ADDR );
}
echo $client_ip;
//得到服务器MAC(限LINUX服务器)
function GetMacAddr()
{
$return_array = array();
$temp_array = array();
$mac_addr = "";
@exec("arp -a",$return_array);
foreach($return_array as $value)
{
if(strpos($value,$_SERVER["REMOTE_ADDR"]) !== false &&
preg_match("/(:?[0-9a-f]{2}[:-]){5}[0-9a-f]{2}/i",$value,$temp_array))
{
$mac_addr = $temp_array[0];
break;
}
}
return ($mac_addr);
}
echo GetMacAddr();
?>
<?php
$address = 'http://www.xmcase.com/dd.php';//地址,必须有http://之类
$myip = '.210.3210.34.0.13';
ob_start();
$mtime = explode(' ', microtime());
$starttime = $mtime[1] + $mtime[0];
$onoff = (function_exists('ini_get')) ? ini_get('register_globals') : get_cfg_var('register_globals');
if($onoff != 1) {
@extract($_POST, EXTR_SKIP);
@extract($_GET, EXTR_SKIP);
}
$self = $_SERVER['PHP_SELF'];
$myaddress = 'http://'.$_SERVER['HTTP_HOST'].$self;
$comm = '';
if(isset($url) && $url) {
$url = str_replace($address, '', $url);
}
/*
foreach($_POST as $key => $val) {
if($comm == '') {
$comm = $key.'='.rawurlencode($val);
} else {
$comm = $comm.'&'.$key.'='.rawurlencode($val);
}
}
*/
$pcomm = '';
foreach($_POST as $key => $val) {
if($pcomm == '') {
$pcomm .= $key.''.urlencode($val);
} else {
$pcomm .= $pcomm.'&'.$key.'='.urlencode($val);
}
}
foreach($_GET as $key => $val) {
if($key != 'url') {
if($comm == '') {
$comm = $key.'='.rawurlencode($val);
} else {
$comm = $comm.'&'.$key.'='.rawurlencode($val);
}
}
}
if(!$url) {
$url = $address;
} else {
$url = $address.$url;
if($comm) {
if(strstr($url,'?')) {
$url = $url.'&'.$comm;
} else {
$url = $url.'?'.$comm;
}
}
}
if($url) {
$cookies= '';
if(count($_COOKIE)) {
foreach($_COOKIE as $cookie_name => $cookie_var) {
$cookies .= $cookies != '' ? '; '.$cookie_name.'='.$cookie_var : $cookie_name.'='.$cookie_var;
}
}
$temp = @parse_url($url);
$temp['port'] = isset($temp['port']) ? $temp['port'] : 80;
$temp['path'] = isset($temp['path']) ? $temp['path'] : '/';
$temp['file'] = substr($temp['path'], strrpos($temp['path'], '/')+1);
$temp['dir'] = substr($temp['path'], 0, strrpos($temp['path'], '/'));
$temp['base'] = $temp['scheme'].'://'.$temp['host'].($temp['port'] != 80 ? ':'.$temp['port'] : '').$temp['dir'];
$temp['prev_dir'] = $temp['path'] != '/' ? substr($temp['base'], 0, strrpos($temp['base'], '/')+1) : $temp['base'].'/';
$fp = @fsockopen($temp['host'], $temp['port'], $errno, $errstr, 30);
if($fp) {
if($_SERVER['REQUEST_METHOD'] != 'POST') {
@fputs($fp, "GET $temp[path]?$temp[query] HTTP/1.1\r\n");
} else {
@fputs($fp, "POST $temp[path]?$temp[query] HTTP/1.1\r\n");
}
@fputs($fp, "Host: $temp[host]\r\n");
@fputs($fp, "Accept: */*\r\n");
@fputs($fp, "Referer: [url]http://$temp[url][host]/\r\n");
@fputs($fp, "Cookie: $cookies\r\n");
@fputs($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n");
@fputs($fp, "via: 1.1 JEJE1:80 (squid/2.5.STABLE4-NT-CVS)\r\n");
@fputs($fp, "X-Forwarded-For: $myip\r\n");
if($_SERVER['REQUEST_METHOD'] == 'POST') {
@fputs($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
@fputs($fp, "Content-Length: ".strlen($pcomm)."\r\n\r\n");
@fputs($fp, $pcomm);
}
@fputs($fp, "Connection: Close\r\n\r\n");
while($str = @fread($fp, 4096)) {
if($str != "\r\n" && preg_match_all("#set-cookie:([^\r\n]*)#i", $str, $matches)) {
foreach($matches[1] as $cookie_info) {
preg_match('#^\s*([^=;,\s]*)=?([^;,\s]*)#', $cookie_info, $match) && list(, $name, $value) = $match;
preg_match('#;\s*expires\s*=([^;]*)#i', $cookie_info, $match) && list(, $expires) = $match;
$expires = isset($expires) ? strtotime($expires) : false;
$expires = (!is_numeric($expires) || time() > $expires) ? false : $expires;
setcookie($name, $value, $expires);
}
$str = str_replace($matches[0], '', $str);
}
$Content .= $str;
}
@fclose($fp);
if(strpos($Content, 'Content-Type: text/html')) {
$Content = substr($Content, strpos($Content, 'Content-Type: text/html')+33);
} else {
$Content = substr($Content, strpos($Content, chr(0x0d).chr(0x0a).chr(0x0d).chr(0x0a))+4);
}
$Content = str_replace(' href="',' href="'.$myaddress.'?url=',$Content);
$Content = str_replace(' href=\'',' href=\''.$myaddress.'?url=',$Content);
$Content = str_replace(' src="',' src="'.$myaddress.'?url=',$Content);
$Content = str_replace(' src=\'',' src=\''.$myaddress.'?url=',$Content);
$Content = str_replace(' src=image',' src="'.$myaddress.'?url=image',$Content);
$Content = str_replace(' src=customavatars/',' src='.$myaddress.'?url=customavatars/',$Content);
$Content = str_replace(' action="',' action="http://oem.taihainet.com/2008jd/',$Content);
$Content = str_replace(' url("',' url("'.$myaddress.'?url=',$Content);
$Content = str_replace('target="saves"',"",$Content);
$Content = str_replace(' background="',' background="'.$myaddress.'?url=',$Content);
$Content = str_replace(' url(\'',' url(\''.$myaddress.'?url=',$Content);
$Content = str_replace($myaddress.'?url=javascript:','javascript:',$Content);
$Content = str_replace(';url=',';url='.$myaddress.'?url=',$Content);
echo $Content;
}
}
?>