php编写刷网课自助下单系统(第三方支付实例)

此项目是由于本人刚刚入门php且在校代刷网课而编写的,由于在上课时间不方便接单,故特意写一个自助下单系统来实现客户自助下单。
本项目主要实现以下功能:
1.用户下单
2.用户支付
3.用户通过账号查询订单
4.管理员登录查看所有订单

设计思路:项目比较简单,基本就是与数据库之间的通信,进行数据的增删改查。支付使用的是第三方支付接口。

以下是具体代码:
用户提交订单页面
index.php

 1 <?php
 2  header(‘Content-type: text/html; charset=UTF8‘);
 3 ?>
 4 <html>
 5 <head>
 6 <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
 7 </head>
 8 <body>
 9 <div class="content" align="center">
10 <form action="add.php" method="post">
11 <span>账号:</span>
12 <input type="text" name="id" placeholder="账号" required><br><br>
13 <span>密码:</span>
14 <input type="password" name="pwd" placeholder="密码" required><br><br>
15 <span>学校全称:</span>
16 <input type="text" name="school" placeholder="学校全称" required><br><br>
17 <span>课程平台:</span>
18 <input type="text" name="platform" placeholder="课程平台" value="智慧树" required><br><br>
19 <span>课程门数:</span>
20 <input type="text" name="count" placeholder="课程门数" id="num" required><br><br>
21 <span>课程名称:</span><br>
22 <textarea  name="classname" placeholder="请输入课程名称,多门课程用逗号分开" required>
23 </textarea><br>
24 <div class="list">
25 <p class="p1">总价:</p>
26 <input id="price" name="sprice"class="p1" value="0"  readonly="readonly">
27 <p class="p1">元</p>
28 </div>
29 <br>
30  <input type="submit" value="提交" class="submit" id="button">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
31
32     <input type = "reset" value = "重置" class="reset">
33 </form>
34 </div>
35 </body>
36 <style>
37 body{
38     background:url(image/bg2.jpg);
39 }
40 .list{
41     width:120px;
42     height:50px;
43     background:url(image/bg5.jpg);
44 }
45 .p1{
46     float:left;
47 }
48 #price{
49     margin-top:15px;
50     width:50px;
51     color:red;
52 }
53 textarea{
54     height:100px;
55     padding: 5px 0px 0px 5px;
56     width: 70%;
57 }
58 </style>
59 <script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js">
60 </script>
61 <script>
62         $(function(){
63             $(‘#num‘).on(‘input  propertychange‘,function(){
64                 var num = $(‘#num‘).val();
65                 var price = num*15;
66                  $("#price").val(price);
67             })
68         });
69 </script>
70 </html>

处理订单并生成支付数据页面
add.php

  1 <?php
  2  header(‘Content-type: text/html; charset=UTF8‘);
  3 ?>
  4 <?php
  5     require_once "connect.php";
  6     $id=$_POST["id"];
  7     $pwd=$_POST["pwd"];
  8     $school=$_POST["school"];
  9     $platform=$_POST["platform"];
 10     $count=$_POST["count"];
 11     $classname=$_POST["classname"];
 12     $price=$_POST["sprice"];
 13     if($id==null){
 14             echo "<script>alert(‘请输入账号!‘);location=‘index.php‘;</script>";
 15         };
 16     if($pwd==null){
 17             echo "<script>alert(‘请输入密码!‘);location=‘index.php‘;</script>";
 18         };
 19     if($school==null){
 20             echo "<script>alert(‘请输入学校全称!‘);location=‘index.php‘;</script>";
 21         };
 22     if($platform==null){
 23             echo "<script>alert(‘请输入平台名称!‘);location=‘index.php‘;</script>";
 24         };
 25     if($count==null){
 26             echo "<script>alert(‘请输入课程数量!‘);location=‘index.php‘;</script>";
 27         };
 28     $sql="insert into orderdetail (id,pwd,school,platform,count,classname,time)values(‘$id‘,‘$pwd‘,‘$school‘,‘$platform‘,‘$count‘,‘$classname‘,now())";
 29     mysql_query("set names ‘utf8‘");
 30     mysql_query($sql);
 31     mysql_close;
 32     //echo "<script>alert(‘信息提交成功,跳转付款页面!‘);location=‘chosetopay.html‘;</script>";
 33 ?>
 34
 35 <html>
 36 <head>
 37 <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
 38     <title>刷客在线支付</title>
 39 </head>
 40 <body>
 41 <center>
 42 <h1>请您确认订单信息:</h1>
 43 <span>账号:</span><?php echo $id ?><br>
 44 <span>密码:</span><?php echo $pwd ?><br>
 45 <span>学校:</span><?php echo $school ?><br>
 46 <span>平台:</span><?php echo $platform ?><br>
 47 <span>课程名:</span><?php echo $classname ?>
 48 <br><br><br>
 49 </center>
 50 <div align="center">
 51     <form>
 52         <p><input id="inputmoney" type="text" name="inputmoney" class="form-control" placeholder="请输入金额" required value="<?php echo $price.‘.00‘?>" readonly="readonly"></p>
 53         <div class="radio">
 54             <label>
 55                 <p><input type="radio" name="demo1" id="demo1-alipay" value="43" checked="">
 56                     支付宝支付</p>
 57             </label>
 58         </div>
 59         <div class="radio">
 60             <label>
 61                 <p><input type="radio" name="demo1" id="demo1-weixin" value="44">
 62                 微信支付</p>
 63             </label>
 64         </div>
 65         <button type="button" id="demoBtn1">确认支付</button>
 66     </form>
 67 </div>
 68     <form style=‘display:none;‘ id=‘formpay‘ name=‘formpay‘ method=‘post‘ action=‘https://api.6688pay.com:8080/?input_charset=utf-8‘>
 69         <input name=‘order_no‘ id=‘order_no‘ type=‘text‘ value=‘‘/>
 70         <input name=‘subject‘ id=‘subject‘ type=‘text‘ value=‘‘ />
 71         <input name=‘pay_type‘ id=‘pay_type‘ type=‘text‘ value=‘‘ />
 72         <input name=‘money‘ id=‘money‘ type=‘text‘ value=‘‘/>
 73         <input name=‘app_id‘ id=‘app_id‘ type=‘text‘ value=‘‘/>
 74         <input name=‘extra‘ id=‘extra‘ type=‘text‘ value=‘‘/>
 75         <input name=‘sign‘ id=‘sign‘ type=‘text‘ value=‘‘/>
 76         <input type=‘submit‘ id=‘submitdemo1‘>
 77     </form>
 78
 79 <!-- Jquery files -->
 80 <script type="text/javascript" src="https://cdn.staticfile.org/jquery/1.11.1/jquery.min.js"></script>
 81 <script type="text/javascript">
 82 $().ready(function(){
 83     function getistype(){
 84         return ($("#demo1-alipay").is(‘:checked‘) ? "43" : "44" );
 85     }
 86
 87     $("#demoBtn1").click(function(){
 88         $.get(
 89             "pay.php",
 90             {
 91                 money : $("#inputmoney").val(),
 92                 pay_type : getistype(),
 93             },
 94             function(data){
 95                 $("#order_no").val(data.order_no);
 96                 $(‘#subject‘).val(data.subject);
 97                 $("#pay_type").val(data.pay_type);
 98                 $(‘#money‘).val(data.money);
 99                 $(‘#app_id‘).val(data.app_id);
100                 $(‘#extra‘).val(data.extra);
101                 $(‘#sign‘).val(data.sign);
102                 $(‘#submitdemo1‘).click();
103             }, "json"
104         );
105     });
106 });
107 </script>
108 <style>
109 body{
110     background:url("image/bg2.jpg");
111 }
112 </style>
113 </body>
114 </html> 

数据库连接页面
connect.php

 1 <?php
 2     define(‘DB_HOST‘, ‘localhost‘);
 3     define(‘DB_USER‘, ‘root‘);
 4     define(‘DB_PWD‘, ‘11111111‘);
 5     define(‘DB_CHARSET‘, ‘UTF8‘);
 6     define(‘DB_DBNAME‘, ‘zzxd‘);
 7
 8     $con=mysql_connect(DB_HOST,DB_USER,DB_PWD);
 9     if(!$con){
10         die(‘数据库连接失败!‘.$mysql_error());
11     }
12     mysql_select_db("zzxd");
13 ?>

支付用的是第三方支付接口,因为本案例比较简单(主要是本人暂时用不来api)所以直接使用了它提供的Demo

(此处使用的是小叮当支付)

以下是Demo内容(Demo中的主页被我合并到add.php中了,就是add.php中的html部分):

pay.php

 1 <?php
 2 /**
 3  * ---------------------参数生成页-------------------------------
 4  */
 5     include ‘define.php‘;
 6     //从网页传入money:支付价格, pay_type:支付渠道:43-支付宝;44-微信支付
 7     $order_no = date(‘Ymd‘) . str_pad(mt_rand(1, 99999), 5, ‘0‘, STR_PAD_LEFT);    //订单号
 8     $subject = ‘商品名称‘;
 9     $pay_type = $_GET["pay_type"];
10     $money = $_GET["money"];
11     $extra = "";
12
13     $sign = md5("order_no=" . $order_no . "&subject=" . $subject . "&pay_type=" . $pay_type . "&money=" . $money . "&app_id=" . $app_id . "&extra=" . $extra . "&" . $app_secret);
14     //经常遇到有研发问为啥sign值返回错误,大多数原因:1.参数的排列顺序不对;2.上面的参数少传了,但是这里的sign值又带进去计算了,导致服务端sign算出来和你的不一样。
15
16     $returndata[‘order_no‘] = $order_no;
17     $returndata[‘subject‘] = $subject;
18     $returndata[‘pay_type‘] = $pay_type;
19     $returndata[‘money‘] = $money;
20     $returndata[‘app_id‘] = $app_id;
21     $returndata[‘extra‘] =$extra;
22     $returndata[‘sign‘] =$sign;
23     echo jsonSuccess("OK",$returndata,"");
24
25
26     //返回错误
27     function jsonError($message = ‘‘,$url=null)
28     {
29         $return[‘msg‘] = $message;
30         $return[‘data‘] = ‘‘;
31         $return[‘code‘] = -1;
32         $return[‘url‘] = $url;
33         return json_encode($return);
34     }
35
36     //返回正确
37     function jsonSuccess($message = ‘‘,$data = ‘‘,$url=null)
38     {
39         return json_encode($data);
40     }
41
42 ?>

define.php

 1 <?php
 2     $app_id = "*****";
 3     $app_secret = "62f949392a2b4e2f***********";
 4 ?>
 5 ```
 6 notify.php
 7
 8 ```
 9 <?php
10 /**
11  * ---------------------异步通知页面-------------------------------
12  *
13  * 此页就是接口后台的notify_url页的网址
14  * 支付成功,平台会通知这里。
15  *
16  * --------------------------------------------------------------
17  */
18     include ‘define.php‘;
19
20     //同步回调页面
21     //接收参数
22     $order_no = $_POST["order_no"];
23     $subject = $_POST["subject"];
24     $pay_type = $_POST["pay_type"];
25     $money = $_POST["money"];
26     $realmoney = $_POST["realmoney"];
27     $result = $_POST["result"];
28     $xddpay_order = $_POST["xddpay_order"];
29     $app_id = $_POST["app_id"];
30     $extra = $_POST["extra"];
31     $sign = $_POST["sign"];
32
33     //计算签名
34     $mysign_forstr = "order_no=" . $order_no . "&subject=" . $subject . "&pay_type=" . $pay_type . "&money=" . $money . "&realmoney=" . $realmoney . "&result=" . $result . "&xddpay_order=" . $xddpay_order . "&app_id=" . $app_id . "&extra=" . $extra . "&" . $app_secret;
35     $mysign = strtoupper(md5($mysign_forstr));
36
37     if ($sign == $mysign) //验签
38     {
39         if ($result == "success"){
40             //建议业务处理放在notify.asp页面,本页仅用于显示支付结果
41             //此处在您数据库中查询:此笔订单号是否已经异步通知给您付款成功了。如成功了,就给他返回一个支付成功的展示。
42             echo "success";
43         }
44         else{
45             echo "支付失败";
46         }
47     }
48     else
49     {
50         echo "mysign_forstr=" . $mysign_forstr;    //调试时开启
51         echo "<br>sign=" . $sign;
52         echo "<br>mysign=" . $mysign;
53         echo "<br><br>认证签名失败";
54     }
55
56 ?>

return.php

 1 <?php
 2 /**
 3  * ---------------------支付成功,用户会跳转到这里-------------------------------
 4  *
 5  * 此页就是接口后台的return_url页的网址
 6  * 支付成功,平台会把用户跳转回这里。
 7  *
 8  * --------------------------------------------------------------
 9  */
10     include ‘define.php‘;
11
12     //同步回调页面
13     //接收参数
14     $order_no = $_GET["order_no"];
15     $subject = $_GET["subject"];
16     $pay_type = $_GET["pay_type"];
17     $money = $_GET["money"];
18     $realmoney = $_GET["realmoney"];
19     $result = $_GET["result"];
20     $xddpay_order = $_GET["xddpay_order"];
21     $app_id = $_GET["app_id"];
22     $extra = $_GET["extra"];
23     $sign = $_GET["sign"];
24
25     //计算签名
26     $mysign_forstr = "order_no=" . $order_no . "&subject=" . $subject . "&pay_type=" . $pay_type . "&money=" . $money . "&realmoney=" . $realmoney . "&result=" . $result . "&xddpay_order=" . $xddpay_order . "&app_id=" . $app_id . "&extra=" . $extra . "&" . $app_secret;
27     $mysign = strtoupper(md5($mysign_forstr));
28
29     if ($sign == $mysign) //验签
30     {
31         if ($result == "success"){
32             //建议业务处理放在notify.asp页面,本页仅用于显示支付结果
33             //此处在您数据库中查询:此笔订单号是否已经异步通知给您付款成功了。如成功了,就给他返回一个支付成功的展示。
34             echo "恭喜,支付成功!,订单号:".$order_no;
35         }
36         else{
37             echo "支付失败";
38         }
39     }
40     else
41     {
42         echo "mysign_forstr=" . $mysign_forstr;    //调试时开启
43         echo "<br>sign=" . $sign;
44         echo "<br>mysign=" . $mysign;
45         echo "<br><br>认证签名失败";
46     }
47
48 ?>

到这里已经实现了用户下单以及支付功能,剩下的功能在此扩展即可
管理员登录页面:
admin.php

 1 <?php
 2 header(‘Content-type:text/html;charset="UTF8"‘);
 3 ?>
 4 <html>
 5 <body>
 6 <center>
 7 <form action="admin_see.php" method="post">
 8     <span>账号:</span><input type="text" name="userid" placeholder="请输入账号"><br><br>
 9     <span>密码:</span><input type="password" name="pwd" placeholder="请输入密码"><br><br>
10     <input type="submit" value="确定">
11 </form>
12 </center>
13 </body>
14 </html>

管理员登录成功查看数据页面:
admin_see.php

 1 <?php
 2 $HOST_ID=$_POST[‘userid‘];
 3 $HOST_PWD=$_POST[‘pwd‘];
 4 $con=mysql_connect("localhost",$HOST_ID,$HOST_PWD);
 5 if(!$con){
 6     echo "<script>alert(‘信息有误,请重新输入!‘);location=‘admin.php‘;</script>";
 7 }
 8 mysql_select_db("zzxd", $con);
 9 $result1=mysql_query("SELECT * from orderdetail");
10 echo "<table><tr><td>===账号===|</td><td>===密码===|</td><td>===学校===|</td><td>===平台===|</td><td>===课程===</td></tr>";
11 while($row=mysql_fetch_array($result1)){
12     echo "<tr>";
13     echo "<td>".$row[‘id‘]."</td>";
14     echo "<td>".$row[‘pwd‘]."</td>";
15     echo "<td>".$row[‘school‘]."</td>";
16     echo "<td>".$row[‘platform‘]."</td>";
17    echo "<td>".$row[‘classname‘]."</td>";
18     echo "</tr>";
19 }
20 echo "</table>";
21
22 mysql_close($con);
23
24 ?>

用户输入订单号查询订单页面
user.php

 1 <?php
 2 header(‘Content-type="text/html";charset="UTF8"‘);
 3 ?>
 4 <html>
 5 <body>
 6 <center>
 7 <h3>请输入账号进行订单查询</h3>
 8 <form action="user_view.php" method="post">
 9     <span>账号:</span><input type="text" name="userid" placeholder="请输入账号"><br><br>
10     <input type="submit" value="确定">
11 </form>
12 </center>
13 </body>
14 </html>

订单查询成功显示页面:
user_view.php

 1 <?php
 2 header(‘Content-type="text/html";charset="UTF8"‘);
 3 $USER_ID=$_POST[‘userid‘];
 4 require_once(‘connect.php‘);
 5 $sql="select * from orderdetail where id = ‘$USER_ID‘";
 6 $result1=mysql_query($sql);
 7 echo "<table><tr><td>===账号===|</td><td>===密码===|</td><td>===学校===|</td><td>===平台===|</td><td>===课程===</td></tr>";
 8 while($row=mysql_fetch_array($result1)){
 9     echo "<tr>";
10     echo "<td>".$row[‘id‘]."</td>";
11     echo "<td>".$row[‘pwd‘]."</td>";
12     echo "<td>".$row[‘school‘]."</td>";
13     echo "<td>".$row[‘platform‘]."</td>";
14    echo "<td>".$row[‘classname‘]."</td>";
15     echo "</tr>";
16 }
17 echo "</table>";
18
19 mysql_close($con);
20 ?>

到这里要实现的目标功能全部实现,当然还有很多功能可以扩展,也还有很多地方可以优化和改进,此处就不再写了,有其它扩展我再来更新。
数据库比较简陋就不发了。

原文地址:https://www.cnblogs.com/fangmr/p/11192152.html

时间: 2024-11-07 16:18:25

php编写刷网课自助下单系统(第三方支付实例)的相关文章

基于python和selenium的刷网课的代码

主要是通过使用selenium的查找定位来实现,同时通过time.sleep来控制时间网址:http://hrbj.21tb.com里面的课程挺不错的,都是一些别的网站上的付费教程.(不得不感慨,铁路系统待遇就是好呀.别人花钱想买的和想求的资源,免费看都懒得看)这个刷课主要是替代人的操作.没用什么脚本或者加速什么的,全部都是实打实的播放.打算挂机刷网课的小伙伴们,可以参考一下! ? from selenium import webdriverimport jsonimport timefrom

刷网课小玩意

改编自:https://www.cnblogs.com/yueshutong/p/9634322.html 超星尔雅自动刷网课代码(对每个课程需要修改参数) 1 var fa = $("body"); 2 var btn = $("<li></li>"); 3 var json = { 4 "background": "#31e16d", 5 "height": "16px

完全机器模拟浏览器操作自动刷网课!不怕被封!!-----python基于selenium实现超星学习通刷视频网课

原谅我这个标题党,对叭起 最近没事觉得网课恶心人,“你们学计算机的,随便写个程序玩玩,很容易哒”------语出高数老师,于是我就“随便”写了个刷网课的程序,没什么nb算法,请各路大神指教 原谅我的个别函数名和变量名用了拼音,别喷我low呜呜呜(其实就是懒,打拼音顺手了,这是个坏习惯,大家别学我) 以上的都是废话 需要注意的是要安装一个浏览器驱动,去网上下载就好了,把地址添加在第四行那里,我代码里面的是谷歌浏览器,如果想要用其他的浏览器代码换成相应的就行 然后要自己在终端输入自己的账号.密码,还

使用python的selenium库刷超星网课

网课很多看不完呀 所以动手做了一个基础的自动答题和下一节的程序 用到了python 3 selenium Chrome 如何自动化Chrome?https://www.cnblogs.com/eternal1025/p/8880245.html 配置好之后上代码 源码下载地址  https://github.com/zlaiyyf/ChaoXIing_seleniumm 时间紧张所以嘛bug就.... coding:utf-8 from selenium import webdriver # 显

牛客网在线判题系统JavaScript(V8)使用

JavaScript作为一种弱类型的编程语言,语法和C/C++.JAVA等存在差别,但是对于大部算法题,不只是C/C++.JAVA,也依然可以使用JavaScript来实现.所以在牛客网中,如果你喜欢JavaScript这门编程语言,同时对数据结构与算法感兴趣,当然可以使用这门语言去刷编程题. 大家有没有跟我碰到过和我类似的情况,在牛客网刷编程题的时候,编译器提供的是Javascript(v8 6.0.0),在线编程部分前端编程还好,只用在题目给出的函数中补充就行.但苦恼的是,我们不知道如何像C

微商管理系统代理下单系统APP定制开发

微商管理系统代理下单系统APP定制开发找黄经理:158.1816.6626(电/微)微商管理代理下单系统开发 微商返利系统开发模式 微商管理平台系统定制开发找V:158.1816.6626(电/微)微商管理代理下单系统定制开发 在电子商务发展迅速的社会,随着打造直播内容.培养主播成了趋势,短视频周边产业纷纷崛起:丽姐团队微商分销系统来说,成为时代发展的热潮.到底微商分销系统是什么? 一.微商代理返利模式的亮点:十二大核心功能,让微商更简单 ①.订单管理:客户下单订货,状态一目了然,有效避免拖单.

智能自助洗车系统车牌识别解决方案

车牌识别一体机现如今被大量应用于各种自动获取车牌号的业务处理系统当中.易泊时代研发的车牌识别一体机融合了多项专利技术,如视频编解码技术.嵌入式系统技术.存储技术.网络技术.车牌识别技术.视频识别技术等.车牌识别一体机在逐步广泛应用于自动洗车房出入口管理系统等业务. 洗车系统逐步的由传统的人工管理模式向互联网化,智能化,无人化管理方面发展.日前小编通过某合作伙伴了解到,他们采用易泊的车牌识别一体机,是基于研发一套智能化无人管理的自助洗车系统当中. 车主通过制定的手机APP在网上下单,输入车牌号,预

2020考研政治视频百度云盘徐涛网课强化班

每次到了暑假的时候,很多小伙伴就开始着急了,因为考研政治的复习必须得开始啦.但是又不知道怎么复习,从哪里复习.到哪里去找百度云资源.想到这里相信很多小伙伴头痛吧. 今年学长就告诉大家政治正确的复习姿势.在暑假阶段建议直接看徐涛的考研政治强化班视频,直接看强化班,政治没必要看基础班.强化班会讲的非常的详细,一定不要拖泥带水,要一气呵成,快点过完第一遍的复习.至于不知道视频去×××,我会在最后给大家推荐地址.接下来就是做肖秀荣的1000题,做题的时候可以看后面的解析,对于看了解析还不能理解的地方可以

飞凌嵌入式 S5P4418 核心板为自助加油系统“加油”

五一小长假即将到来,对于已经工作上班的人来说,这段时间休息一下,放松一下真的是非常让人开心的!往年五一假期为三天,很多人都选择在家呆着,不过今年我们迎来了令人振奋的消息,今年五一将放四天假! 幸福来得太突然, 不占用双休的劳动节简直清流. 为了 合理利用来自不易的"良心假", 很多人选择自驾方式出游.多数车主会提前排队加油,加油站将会出现排长队现象. 随着近几年信息技术的不断发展,智能化的概念逐渐***到各行各业以及我们的生活里,智能化.自助设备随处可见. 自助加油机,应运而生. 节省