1.支付宝开放平台注册账号开启沙箱服务
2.能力管理,支付能力下载的SDK插件解压放到public/plugins文件夹下
1.开启沙箱
2.找到沙箱应用获取appid,秘钥等,点击查看可以查看秘钥信息
3.全局配置文件config中配置以下代码段
//支付方式 'pay_type' => [ 'alipay' => ['pay_code'=>'alipay', 'pay_name'=>'支付宝', 'logo'=>'/static/home/img/_/pay2.jpg'], 'wechat' => ['pay_code'=>'wechat', 'pay_name'=>'微信支付', 'logo'=>'/static/home/img/_/pay3.jpg'], 'union' => ['pay_code'=>'union', 'pay_name'=>'银联', 'logo'=>'/static/home/img/_/pay4.jpg'], ],
4.在插件Alipay中找到config配置文件,配置相关参数
4.支付方法
function pay()
{
// 接收数据
$data = request()->post();
// print_r($data);die;
$validate = $this->validate($data,[
'order_sn'=>'require',
'pay_code|支付方式'=>'require'
]);
if($validate != true)
{
$this->error($validate);
}
$order = \app\home\model\Order::where('order_sn',$data['order_sn'])->find();
if(!$order)
{
$this->error('订单不存在');
}
//将选择的支付方式,修改到订单表
$pay_type = config('pay_type');
// print_r($pay_type);die;
$order->pay_code = $data['pay_code'];
$order->pay_name = $pay_type[$data['pay_code']]['pay_name'];
$order->save();
echo "<form id='alipayment' action='/plugins/alipay/pagepay/pagepay.php' method='post' style='display:none'>
<input id='WIDout_trade_no' name='WIDout_trade_no' value='{$order['order_sn']}'/>
<input id='WIDsubject' name='WIDsubject' value='{$order['consignee']}' />
<input id='WIDtotal_amount' name='WIDtotal_amount' value='{$order['order_amount']}'/>
<input id='WIDbody' name='WIDbody' value='测试订单,你付款了我也不发货' />
</form><script>document.getElementById('alipayment').submit();</script>";
}
*/
public function callback()
{
//参考/plugins/alipay/return_url.php
//接收参数
$params = input();
//参数检测(签名验证) 接收到的参数 和 支付宝传递的参数 是否发生改变
require_once("./plugins/alipay/config.php");
require_once './plugins/alipay/pagepay/service/AlipayTradeService.php';
$alipaySevice = new \AlipayTradeService($config);
$result = $alipaySevice->check($params);
if($result){
//验签成功
$order_sn = $params['out_trade_no'];
$order = \app\common\model\Order::where('order_sn', $order_sn)->find();
//展示结果
return view('paysuccess', ['pay_name' => '支付宝', 'order_amount'=>$params['total_amount'], 'order' => $order]);
}else{
//验签失败
//展示结果
return view('payfail', ['msg' => '支付失败']);
}
}
html代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.box{width: 1200px;height: 1000px;margin: 0 auto;}
.title{width: inherit;height: 100px;padding: 30px;
background-color:orangered;color: white;}
ul li{display: block;float: left;margin-left: 30px;width:140px;height: 60px;
list-style-type: none;
}
.content{
padding: 20px;
width:inherit;height:100px;}
.btn{width: 120px;
background-color:red;height: 40px;
color:white; float: right;margin-right: 50px;border: none}
</style>
</head>
<body>
<div class="box">
<div class="title">
<h2>订单提交成功!去支付啦</h2>
<p>剩余时间:23小时59分40秒</p>
</div>
<div class="content">
<p>订单编号:<span>{$res.order_sn}</span></p>
<p>订单价格:<span class="price">{$total_price}</span>元</p>
<p>收货信息:<span>{$res.consignee} {$res.address}</span></p>
</div>
<div>
<p>  请选择以下支付方式</p>
<ul>
<li class="pay_code" pay_code="{$res.pay_code}" {if( $res.pay_code == 'alipay')}style="border: 2px solid rgb(228, 57, 60);"{/if}><img src="/alipay.png" alt=""></li>
<li><a href=""><img src="/wechat.png" alt=""></a></li>
</ul>
</div>
<p>
<button class="btn">去支付</button>
</p>
</div>
<form id="payForm" action="{:url('home/order/pay')}" method="post">
<input type="hidden" name="order_sn" value="{$res.order_sn}">
<input type="hidden" name="pay_code" value="">
<input type="hidden" name="totalprice" value="">
</form>
</body>
</html>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">
</script>
<script>
$('.btn').click(function () {
var order_sn = $('span:first').text();
var totalprice = $('.price').text();
var pay_code = $('.pay_code').attr('pay_code');
$('input[name=pay_code]').val(pay_code);
$('input[name=totalprice]').val(totalprice);
//发送请求 表单提交
$('#payForm').submit();
})
</script>