韩志成你给我俩等着

This commit is contained in:
2025-04-10 02:32:42 +08:00
parent 188fe51b24
commit 29c65ddc02
8 changed files with 599 additions and 27 deletions

View File

@@ -0,0 +1,154 @@
<?php
/* *
* 彩虹易支付SDK服务类
* 说明:
* 包含发起支付、查询订单、回调验证等功能
*/
class EpayCore
{
private $pid;
private $key;
private $submit_url;
private $mapi_url;
private $api_url;
private $sign_type = 'MD5';
function __construct($config){
$this->pid = $config['pid'];
$this->key = $config['key'];
$this->submit_url = $config['apiurl'].'submit.php';
$this->mapi_url = $config['apiurl'].'mapi.php';
$this->api_url = $config['apiurl'].'api.php';
}
// 发起支付(页面跳转)
public function pagePay($param_tmp, $button='正在跳转'){
$param = $this->buildRequestParam($param_tmp);
$html = '<form id="dopay" action="'.$this->submit_url.'" method="post">';
foreach ($param as $k=>$v) {
$html.= '<input type="hidden" name="'.$k.'" value="'.$v.'"/>';
}
$html .= '<input type="submit" value="'.$button.'"></form><script>document.getElementById("dopay").submit();</script>';
return $html;
}
// 发起支付(获取链接)
public function getPayLink($param_tmp){
$param = $this->buildRequestParam($param_tmp);
$url = $this->submit_url.'?'.http_build_query($param);
return $url;
}
// 发起支付API接口
public function apiPay($param_tmp){
$param = $this->buildRequestParam($param_tmp);
$response = $this->getHttpResponse($this->mapi_url, http_build_query($param));
$arr = json_decode($response, true);
return $arr;
}
// 异步回调验证
public function verifyNotify(){
if(empty($_GET)) return false;
$sign = $this->getSign($_GET);
if($sign === $_GET['sign']){
$signResult = true;
}else{
$signResult = false;
}
return $signResult;
}
// 同步回调验证
public function verifyReturn(){
if(empty($_GET)) return false;
$sign = $this->getSign($_GET);
if($sign === $_GET['sign']){
$signResult = true;
}else{
$signResult = false;
}
return $signResult;
}
// 查询订单支付状态
public function orderStatus($trade_no){
$result = $this->queryOrder($trade_no);
if($result['status']==1){
return true;
}else{
return false;
}
}
// 查询订单
public function queryOrder($trade_no){
$url = $this->api_url.'?act=order&pid=' . $this->pid . '&key=' . $this->key . '&trade_no=' . $trade_no;
$response = $this->getHttpResponse($url);
$arr = json_decode($response, true);
return $arr;
}
// 订单退款
public function refund($trade_no, $money){
$url = $this->api_url.'?act=refund';
$post = 'pid=' . $this->pid . '&key=' . $this->key . '&trade_no=' . $trade_no . '&money=' . $money;
$response = $this->getHttpResponse($url, $post);
$arr = json_decode($response, true);
return $arr;
}
private function buildRequestParam($param){
$mysign = $this->getSign($param);
$param['sign'] = $mysign;
$param['sign_type'] = $this->sign_type;
return $param;
}
// 计算签名
private function getSign($param){
ksort($param);
reset($param);
$signstr = '';
foreach($param as $k => $v){
if($k != "sign" && $k != "sign_type" && $v!=''){
$signstr .= $k.'='.$v.'&';
}
}
$signstr = substr($signstr,0,-1);
$signstr .= $this->key;
$sign = md5($signstr);
return $sign;
}
// 请求外部资源
private function getHttpResponse($url, $post = false, $timeout = 10){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$httpheader[] = "Accept: */*";
$httpheader[] = "Accept-Language: zh-CN,zh;q=0.8";
$httpheader[] = "Connection: close";
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if($post){
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
}

View File

@@ -0,0 +1,13 @@
<?php
/* *
* 配置文件
*/
//支付接口地址
$epay_config['apiurl'] = 'http://epay.web-dev.nia.ink/';
//商户ID
$epay_config['pid'] = '1000';
//商户密钥
$epay_config['key'] = 'v16bJiwTo744Bkw24Epk547DIEPdQeza';

View File

@@ -0,0 +1,60 @@
<?php
/* *
* 功能:彩虹易支付异步通知页面
* 说明:
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*/
require_once("lib/epay.config.php");
require_once("lib/EpayCore.class.php");
include_once("../../common/init.php");
//计算得出通知验证结果
$epay = new EpayCore($epay_config);
$verify_result = $epay->verifyNotify();
if($verify_result) {//验证成功
//商户订单号
$out_trade_no = $_GET['out_trade_no'];
//彩虹易支付交易号
$trade_no = $_GET['trade_no'];
//交易状态
$trade_status = $_GET['trade_status'];
//支付方式
$type = $_GET['type'];
//支付金额
$money = $_GET['money'];
if ($_GET['trade_status'] == 'TRADE_SUCCESS') {
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理根据订单号out_trade_no在商户网站的订单系统中查到该笔订单的详细并执行商户的业务程序
//如果有做过处理,不执行商户的业务程序
$row = db_get_row("select * from payorder where orderid='". $out_trade_no ."'");
if($row['status']==1){die("success");}
$userid=$row['uid'];
$money=$row['money'];
$row1 = db_get_row("select * from yajin where userid='". $userid ."'");
if ($row1["id"]) { //有过充值记录
db_query("update yajin set price=price+".$money." where id=".$row1["id"]);
}else{
$data2 = array();
$data2["price"] = $money;
$data2["userid"] = $userid;
db_add("yajin",$data2);
}
db_query("update payorder set status=1 where orderid='". $out_trade_no ."'");
}
//验证成功返回
echo "success";
}
else {
//验证失败
echo "fail";
}
?>

View File

@@ -0,0 +1,68 @@
<?php
/* *
* 功能:彩虹易支付页面跳转同步通知页面
* 说明:
* 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。
*/
require_once("lib/epay.config.php");
require_once("lib/EpayCore.class.php");
include_once("../../common/init.php");
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>支付返回页面</title>
</head>
<body>
<?php
//计算得出通知验证结果
$epay = new EpayCore($epay_config);
$verify_result = $epay->verifyReturn();
if($verify_result) {//验证成功
//商户订单号
$out_trade_no = $_GET['out_trade_no'];
//支付宝交易号
$trade_no = $_GET['trade_no'];
//交易状态
$trade_status = $_GET['trade_status'];
//支付方式
$type = $_GET['type'];
if($_GET['trade_status'] == 'TRADE_SUCCESS') {
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理根据订单号out_trade_no在商户网站的订单系统中查到该笔订单的详细并执行商户的业务程序
//如果有做过处理,不执行商户的业务程序
$row = db_get_row("select * from payorder where orderid='". $out_trade_no ."'");
if($row['status']==1){urlMsg("充值成功", "main.php");die();}
$userid=$row['uid'];
$money=$row['money'];
$row1 = db_get_row("select * from yajin where userid='". $userid ."'");
if ($row1["id"]) { //有过充值记录
db_query("update yajin set price=price+".$money." where id=".$row1["id"]);
}else{
$data2 = array();
$data2["price"] = $money;
$data2["userid"] = $userid;
db_add("yajin",$data2);
}
db_query("update payorder set status=1 where orderid='". $out_trade_no ."'");
urlMsg("充值成功", "main.php");
}
}
else {
//验证失败
urlMsg("充值失败", "main.php");
}
?>
</body>
</html>

74
admin/student/submit.php Normal file
View File

@@ -0,0 +1,74 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>正在为您跳转到支付页面,请稍候...</title>
<style type="text/css">
body{margin:0;padding:0}
p{position:absolute;left:50%;top:50%;height:35px;margin:-35px 0 0 -160px;padding:20px;font:bold 16px/30px "宋体",Arial;text-indent:40px;border:1px solid #c5d0dc}
#waiting{font-family:Arial}
</style>
</head>
<body>
<?php
include_once("../../common/init.php");
require_once("lib/epay.config.php");
require_once("lib/EpayCore.class.php");
check_loginuser();
$_POST['price']=isset($_GET['price'])?$_GET['price']:$_POST['price'];
if(!$_POST){goBakMsg("请输入金额");die;}
$row = db_get_row("select * from yajin where userid='". $_SESSION["studentid"] ."'");
if ($row["id"]) { //有过充值记录
if($_POST["price"]+$row["price"]<300){
goBakMsg("预存款不能少于300元");
die;
}
}else{ //新户开号
if($_POST["price"]<300){
goBakMsg("预存款不能少于300元");
die;
}
}
$notify_url = "http://danche.web-dev.nia.ink/admin/student/notify_url.php";
$return_url = "http://danche.web-dev.nia.ink/admin/student/return_url.php";
$db_data123=array();
$db_data123['orderid'] =date("YmdHis").rand(10000,99999);
$db_data123['money']=$_POST["price"];
$db_data123['uid']=$_SESSION["studentid"];
db_add("payorder",$db_data123);
$parameter = array(
"pid" => $epay_config['pid'],
"type" => "alipay",
"notify_url" => $notify_url,
"return_url" => $return_url,
"out_trade_no" => $db_data123['orderid'],
"name" => "预存款支付",
"money" => $db_data123['money'],
);
$epay = new EpayCore($epay_config);
$html_text = $epay->pagePay($parameter);
echo $html_text;
?>
<p>正在为您跳转到支付页面,请稍候...</p>
</body>
</html>

View File

@@ -1,27 +1,3 @@
<?php
include_once("../../common/init.php");
check_loginuser();
if ($_POST){
$data = array();
$row = db_get_row("select * from yajin where userid='". $_SESSION["studentid"] ."'");
if ($row["id"]) {
if($_POST["price"]+$row["price"]<300){
goBakMsg("预存款不能少于300元");
die;}else{db_query("update yajin set price=price+".$_POST["price"]." where id=".$row["id"]);}
}
else{if($_POST["price"]<300){goBakMsg("预存款不能少于300元");die;}}
$data["price"] = "'".$_POST["price"]."'";
$data["studentid"] = "'".$_SESSION['stuname']."'";
$data["userid"] = "'".$_SESSION['studentid']."'";
if ($row["id"]) {
} else {
db_add("yajin",$data);
}
urlMsg("提交成功", "main.php");
die;
}
?>
<?php include_once("base.php");?>
<body>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
@@ -44,7 +20,7 @@
<table width="100%">
<tr>
<td colspan="2">
<form name="add" method="post" action="?" enctype="multipart/form-data">
<form name="add" method="post" action="submit.php" enctype="multipart/form-data">
<table width="100%" class="cont">
<tr>

View File

@@ -26,8 +26,8 @@
$strleft='insert into '.$table.' ('.ltrim($strleft,',').')';
$strright=' values ('.ltrim($strright,',').')';
$sql=$strleft.$strright;
//echo $sql;
//die;
// echo $sql;
// die;
db_query($sql);
return db_insert_id();

227
danche.sql Normal file
View File

@@ -0,0 +1,227 @@
-- phpMyAdmin SQL Dump
-- version 4.0.10.20
-- https://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2025-04-10 02:32:17
-- 服务器版本: 5.6.50-log
-- PHP 版本: 5.6.40
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- 数据库: `danche`
--
-- --------------------------------------------------------
--
-- 表的结构 `admin`
--
CREATE TABLE IF NOT EXISTS `admin` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
`type` varchar(30) DEFAULT NULL,
`img` varchar(50) DEFAULT NULL,
`sex` varchar(10) DEFAULT NULL,
`begintime` varchar(50) DEFAULT NULL,
`desc1` varchar(200) DEFAULT NULL,
`tname` varchar(10) DEFAULT NULL,
`tel` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=18 ;
--
-- 转存表中的数据 `admin`
--
INSERT INTO `admin` (`id`, `username`, `password`, `type`, `img`, `sex`, `begintime`, `desc1`, `tname`, `tel`) VALUES
(1, 'admin', '21232f297a57a5a743894a0e4a801fc3', '超级管理员', '0', NULL, NULL, NULL, NULL, NULL);
-- --------------------------------------------------------
--
-- 表的结构 `baoxiu`
--
CREATE TABLE IF NOT EXISTS `baoxiu` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`carsid` int(11) DEFAULT '0' COMMENT '车辆id',
`content` varchar(250) DEFAULT NULL COMMENT '详细',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`status` varchar(10) DEFAULT '维修中' COMMENT '状态',
`eacherid` int(11) DEFAULT '0' COMMENT '人员id',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=18 ;
-- --------------------------------------------------------
--
-- 表的结构 `cars`
--
CREATE TABLE IF NOT EXISTS `cars` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`categoryid` int(11) DEFAULT '0' COMMENT '品牌',
`colors` varchar(50) DEFAULT NULL COMMENT '颜色',
`title` varchar(50) DEFAULT NULL COMMENT '车牌号',
`img` varchar(50) DEFAULT NULL,
`ages` varchar(11) DEFAULT NULL COMMENT '车龄',
`lat` varchar(255) NOT NULL,
`lng` varchar(255) NOT NULL,
`status` varchar(10) DEFAULT NULL COMMENT '状态',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=56 ;
-- --------------------------------------------------------
--
-- 表的结构 `category`
--
CREATE TABLE IF NOT EXISTS `category` (
`id` int(6) NOT NULL AUTO_INCREMENT COMMENT 'id自然编号',
`title` varchar(60) NOT NULL COMMENT '名称',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
--
-- 转存表中的数据 `category`
--
INSERT INTO `category` (`id`, `title`) VALUES
(8, '出行'),
(7, 'hellobike'),
(6, 'ofo'),
(5, 'mobike'),
(9, '小蓝'),
(10, '123');
-- --------------------------------------------------------
--
-- 表的结构 `eacher`
--
CREATE TABLE IF NOT EXISTS `eacher` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`username` varchar(50) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
`img` varchar(50) DEFAULT NULL,
`sex` varchar(10) DEFAULT NULL,
`begintime` varchar(50) DEFAULT NULL,
`desc1` varchar(200) DEFAULT NULL,
`tname` varchar(10) DEFAULT NULL,
`tel` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;
--
-- 转存表中的数据 `eacher`
--
INSERT INTO `eacher` (`id`, `username`, `password`, `img`, `sex`, `begintime`, `desc1`, `tname`, `tel`) VALUES
(8, '111222', '00b7691d86d96aebd21dd9e138f90840', '1756066.png', '', '2000-10-09', '123', '王师傅2', '13325652145');
-- --------------------------------------------------------
--
-- 表的结构 `orders`
--
CREATE TABLE IF NOT EXISTS `orders` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`studentid` varchar(50) DEFAULT '0' COMMENT '学生id',
`carsid` int(11) DEFAULT '0' COMMENT '车辆id',
`price` decimal(11,0) DEFAULT '0' COMMENT '预计价格',
`begintime` date DEFAULT NULL COMMENT '开始时间',
`endtime` date DEFAULT NULL COMMENT '结束时间',
`addtime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
`status` varchar(50) DEFAULT NULL,
`carstitle` varchar(50) DEFAULT NULL COMMENT '车牌号',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=28 ;
-- --------------------------------------------------------
--
-- 表的结构 `payorder`
--
CREATE TABLE IF NOT EXISTS `payorder` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`orderid` text NOT NULL,
`uid` text NOT NULL,
`money` text NOT NULL,
`status` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=27 ;
--
-- 转存表中的数据 `payorder`
--
INSERT INTO `payorder` (`id`, `orderid`, `uid`, `money`, `status`) VALUES
(26, '2025041002282963899', '18', '300', 1);
-- --------------------------------------------------------
--
-- 表的结构 `user`
--
CREATE TABLE IF NOT EXISTS `user` (
`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`studentid` varchar(64) NOT NULL COMMENT '学号',
`stuname` varchar(50) NOT NULL COMMENT '姓名',
`password` char(32) NOT NULL COMMENT '密码',
`banji` varchar(50) DEFAULT NULL COMMENT '班级',
`addtime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
`img` varchar(255) DEFAULT NULL COMMENT '头像',
`sex` varchar(255) DEFAULT NULL COMMENT '性别',
`status` int(2) NOT NULL DEFAULT '0' COMMENT '状态',
`tel` varchar(50) DEFAULT NULL COMMENT '电话',
PRIMARY KEY (`id`),
UNIQUE KEY `account` (`studentid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=19 ;
--
-- 转存表中的数据 `user`
--
INSERT INTO `user` (`id`, `studentid`, `stuname`, `password`, `banji`, `addtime`, `img`, `sex`, `status`, `tel`) VALUES
(18, '20221109', '张三', 'c812a07d304cedbaceb66144428d6c7a', '网络工程2班', '2022-11-09 05:35:31', '2516853.png', '', 0, '13325652145');
-- --------------------------------------------------------
--
-- 表的结构 `yajin`
--
CREATE TABLE IF NOT EXISTS `yajin` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userid` int(11) DEFAULT '0' COMMENT '学生id',
`price` decimal(11,0) NOT NULL DEFAULT '0' COMMENT '金额',
`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;
--
-- 转存表中的数据 `yajin`
--
INSERT INTO `yajin` (`id`, `userid`, `price`, `addtime`) VALUES
(9, 18, '300', '2025-04-09 18:29:03');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;