前方高能音乐来袭。。。。注意保护耳朵,可预先试听:
为什么搭建?
效果图
前台效果图
前三个没付款的家伙,你们有本事倒是付啊!😂
后台
搭建摘要
源码用的是烟雨要饭 源码下载地址:http://cdn.yyhy.me/yaofan.zip
对接的是码支付,特点:支付宝 QQ全免 微信免手续费只需交易额度 码支付地址→点击我 下面是其网站的宣传图:
- 支付宝开通了商家服务、qq钱包上传了收款码、微信付费签约了并上传收款码
- 源码需要修改适配码支付,下面简单讲一下
关于源码修改适配问题
核心函数php文件:Pay.Class.php
主要修改了submit()
函数,增加了对码支付支付工具type
的判断,以及财主爸爸昵称nick
的调用,以及增加码支付一些自用参数,函数代码如下:
public function submit($type, $out_trade_no, $notify_url, $return_url, $name, $money, $sitename, $nick)
{
if ($type == 'alipay') {
$typeid = 1;
}
if ($type == 'qqpay') {
$typeid = 2;
}
if ($type == 'wxpay') {
$typeid = 3;
}
$data = [
'id' => $this->pid,
'type' => $typeid,
'out_trade_no' => $out_trade_no,
'notify_url' => $notify_url,
'return_url' => $return_url,
'name' => $name,
'price' => $money,
'sitename' => $sitename,
'act' => 0,
'debug' => 0,
'pay_type' => 1,
'pay_id' => $nick,
'param' => $out_trade_no
];
$string = http_build_query($data);
$sign = $this->getsign($data);
return 'http://codepay.fateqq.com/create_order/?' . $string . '&token=换成自己的token';
}
其中http://codepay.fateqq.com/create_order/?
是码支付API的地址,码支付的token
写在token=
的后面。
网站端yf.heson10.com/Admin/
后台里,要填写码支付的id:
Pay/Submit/index.php的修改
主要是前面和前面submit()函数相对应。注意这里的https,如果服务器没开ssl,就换成http
submit($order['type'], $order['trade_no'], 'https://' . $_SERVER['HTTP_HOST'] . '/Pay/Notify/', 'https://' . $_SERVER['HTTP_HOST'] . '/Pay/Return/', config('sitename') . ' - 支付订单', $order['money'], config('sitename'), $order['nick']);
修改后附图:
Pay/Ruturn/index.php的修改
去掉验证数据,增加对订单号的验证,同时调用自定义参数param
,用于定位当前订单号。
$data = $_REQUEST;
$pay = new Pay(config('pid'), config('key'),config('api'));
if ($data['pay_no']) {
$order = Db('select * from yyhy_order where trade_no="' . $data['param'] . '"');
if (!$order) exit('fail');
$order = $order[0];
if ($order['status'] != 1) {
Db('update yyhy_order set `status`=1,`endtime`="' . date('Y-m-d H:i:s') . '" where trade_no="' . $data['param'] . '"');
}
alert('施舍成功,好人有好报!', '/');
} else {
alert('支付验证失败,施舍失败了,又吃不到饭饭了!', '/');
}
修改后附图:
Pay/Notify/index.php的修改
简单验证单号就行,还要具备补单功能:
include '../../Core/Common.php';
$data = $_REQUEST;
$pay = new Pay(config('pid'), config('key'),config('api'));
if ($data['pay_no']) {
echo 'success';
$order = Db('select * from yyhy_order where trade_no="' . $data['param'] . '"');
if (!$order) exit('fail');
$order = $order[0];
if ($order['status'] != 1) {
Db('update yyhy_order set `status`=1,`endtime`="' . date('Y-m-d H:i:s') . '" where trade_no="' . $data['param'] . '"');
}
} else {
echo 'fail';
}
写在后面
好吧,今天又水了一篇。😂😂
Q:为什么写这么一篇水文?
A:因为弄这个还是花了不少功夫,简单记录一下:
一是做笔记让自己知道修改了哪些东西二是为需要的小伙伴提供思路。
9月11日更新:
已经不算是水文了,更新的文章加上了修改方法和配图,学会的扣111111111111111,没学会的扣眼珠子!
9月12日更新:
解决微信、qq支付异步问题。
10月8日更新:
黑石自用修改版本:https://github.com/heson525/yaofan
此版已按教程修改,后台直接填写码支付pid和token即可。
后期打算更新
前台界面二开(12月8日已完成)
- 待定