网站首页 > 基础教程 正文
注,我这里用的是 ThinkCmf5.0 与 Thinkphp5.0 有微小的差异,我会标注出来
1、先去支付宝官网把Demo 下载了,然后打开根目录中的“config.php”,把里面的参数填写,然后上传到extent目录,我起文件夹名为 "wapPay"
2.第二步进入支付宝开发者中心,把相关开发设置的参数填了
3、前端 HTML 代码
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>订单支付</title>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<link rel="stylesheet" href="__TMPL__/public/style/qczl/css/mui.min.css" />
<link rel="stylesheet" href="__TMPL__/public/style/qczl/css/pay.css" />
<link rel="stylesheet" href="__TMPL__/public/style/qczl/css/iconfont1.css" />
<script type="text/javascript" src="__TMPL__/public/style/js/jquery-1.9.1.min.js"></script>
</head>
<body>
<header id="header" class="mui-bar mui-bar-nav">
<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
<h1 class="mui-title">支付订单</h1>
</header>
<div id="content" class="mui-content">
<div id="money">
<i class="iconfont icon-renminbi"></i><span>订单总金额</span><span>¥{$order_price} </span>
</div>
<span class="way">付款方式</span>
<ul class="mui-table-view mui-table-view-radio">
<li class="mui-table-view-cell mui-selected">
<a class="mui-navigate-right"><i class="iconfont icon-alipay"></i><span>支付宝</span></a>
</li>
</ul>
<div id="question">
<a href="#">
<span>支付遇到问题</span>
<i class="iconfont icon-wenhao"></i>
</a>
</div>
<center style="margin-top: 15%;">
<button οnclick="pay()" style="width:100%;background-color: #00a65a;color: #FFF">
<span >支 付</span>
</button>
</center>
<div id="null"></div>
</div>
<script src="__TMPL__/public/style/qczl/js/mui.min.js"></script>
</body>
<script>
function pay() {undefined
location.href = "{:cmf_url('Order/baoPay',array('order_id'=>$order_id))}";
}
</script>
</html>
4、PHP 代码
// 调起支付宝支付
public function baoPay(){undefined
$order_id = $this->request->param('order_id');
$order_info = Db::name("server_order")
->alias('a')
->join('shop_server b','a.server_id = b.s_id')
->where(['a.o_id'=>$order_id])
->field('a.order_price,a.order_num,b.s_name')
->find();
// 引入支付宝第三方sdk类库 Thinkphp5.0 用 Loader::import() 引入
import('wapPay.wappay.service.AlipayTradeService',EXTEND_PATH);
import('wapPay.wappay.buildermodel.AlipayTradeWapPayContentBuilder',EXTEND_PATH);
$config = array (
//应用ID,您的APPID。
'app_id' => "201821XXXXXX",
//商户私钥,您的原始格式RSA私钥 自己用官方给的程序生成的
'merchant_private_key' => "MIIEow**************",
//异步通知地址
'notify_url' => "http://你的网址/simplewind/extend/wapPay/notify_url.php",
//同步跳转
'return_url' => "http://你的网址/public/portal/Order/return_url.html",
//编码格式
'charset' => "UTF-8",
//签名方式
'sign_type'=>"RSA2",
//支付宝网关
'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
//支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。这个不是自己生成的,是系统给的
'alipay_public_key' => "MIIBIjANBgkqhkiG9w0BAQEF****************AAOCAQ8AMIIBCgKCAQEAkMV",
);
//商户订单号,商户网站订单系统中唯一订单号,必填
$out_trade_no = $order_info['order_num'];
//订单名称,必填
$subject = $order_info['s_name'];
//付款金额,必须填
$total_amount = $order_info['order_price'];
//商品描述,可空
$body = '';
//超时时间
$timeout_express="1m";
$payRequestBuilder = new \AlipayTradeWapPayContentBuilder();
$payRequestBuilder->setBody($body); // 商品描述
$payRequestBuilder->setSubject($subject); // 订单名称
$payRequestBuilder->setOutTradeNo($out_trade_no); // 订单号
$payRequestBuilder->setTotalAmount($total_amount); // 付款金额
$payRequestBuilder->setTimeExpress($timeout_express); // 超时时间
$payResponse = new \AlipayTradeService($config);
$result = $payResponse->wapPay($payRequestBuilder,$config['return_url'],$config['notify_url']);
return ;
}
// 支付宝授权回调函数
public function return_url(){undefined
// 引入支付宝第三方sdk类库
import('wapPay.wappay.service.AlipayTradeService',EXTEND_PATH);
$config = array (
//应用ID,您的APPID。
'app_id' => "2018030702332021",
//商户私钥,您的原始格式RSA私钥
'merchant_private_key' => "MIIEowIBAAKC******************AQEAwS/mYtS",
//异步通知地址
'notify_url' => "http://你的网址/simplewind/extend/wapPay/notify_url.php",
//同步跳转
'return_url' => "http://你的网址/public/portal/Order/return_url.html",
//编码格式
'charset' => "UTF-8",
//签名方式
'sign_type'=>"RSA2",
//支付宝网关
'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
//支付宝公钥, 非自己生成 查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
'alipay_public_key' => "MIIBIjANBgkqhkiG9w0BAQEF****************AAOCAQ8AMIIBCgKCAQEAkMV",
);
$arr=$_GET;
$alipaySevice = new \AlipayTradeService($config);
$result = $alipaySevice->check($arr);
/* 实际验证过程建议商户添加以下校验。
1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,
2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),
3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email)
4、验证app_id是否为该商户本身。
*/
if($result) { //验证成功
//商户订单号
$out_trade_no = $arr['out_trade_no'];
//支付宝交易号
$trade_no = $arr['trade_no'];
//交易状态
//$trade_status = $arr['trade_status'];
//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——
//请在这里加上商户的业务逻辑程序代码
Db::name("server_order")->where(['order_num'=>$out_trade_no])->update(['is_pay'=>1,'is_del'=>0]);
echo "success"; //请不要修改或删除
return $this->redirect('Order/payform');
}else {undefined
//验证失败
echo "fail"; //请不要修改或删除
}
}
- 上一篇: nginx 关键字反向代理
- 下一篇: PHP日志记录
猜你喜欢
- 2024-11-27 php安全编程?python暴力破解,论python的牛逼性
- 2024-11-27 CVE-2024-4577 PHP CGI 远程代码执行漏洞分析
- 2024-11-27 使用VS Code调试PhpStudy环境里的代码
- 2024-11-27 Web安全之URL跳转漏洞
- 2024-11-27 01.linux上安装宝塔部署PHP项目
- 2024-11-27 教程 | 从零开始开发一个PHP留言板(三)——页面制作
- 2024-11-27 WordPress网站被利用xmlrpc.php攻击解决办法
- 2024-11-27 Nginx 反向代理学习及实例笔记
- 2024-11-27 phpMyAdmin使用教程(图文详解)
- 2024-11-27 CentOS8 安装数据库管理工具之phpMyAdmin5.1.1
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)