首先我们来探讨如何在Laravel应用中使用支付宝进行支付,对此,GitHub上有很多相关的包,其中最流行的两个包:Omnipay For Laravel 5 & Lumen 和 Laravel AliPay。这里使用的是Laravel AliPay来做案例说明:
准备工作 :支付宝账号 /蚂蚁金服开放平台账号---> 支付宝签约(即时到账)到项目根目录执行命令安装包
执行更新
执行更新后,到vendor目录里面看一下有没有latrell目录,如果有说明安装成功,反之没有。因为latrell目录下放的是alipay相关文件
找到 config/app.PHP 配置文件中,key为 providers 的数组,在数组中添加服务提供者。
<span style="color: #800000">'</span><span style="color: #800000">Latrell\Alipay\AlipayServiceProvider</span><span style="color: #800000">'</span><span style="color: #000000">,]</span></pre>
配置说明
配置文件 config/latrell-alipay.PHP 为公共配置信息文件
config/latrell-alipay-web.PHP 为Web版支付宝SDK配置
config/latrell-alipay-mobile.PHP 为手机端支付宝SDK配置
打开config/latrell-alipay-web.PHP,设置安全检验码与通知页面
'key' => 'a6cq60*****zl',<span style="color: #008000">//<span style="color: #008000">签名方式
'sign_type' => 'MD5',<span style="color: #008000">//<span style="color: #008000"> 服务器异步通知页面路径。根据自己项目路径做相应的修改
'notify_url' => 'http://web.wan.com/notify',<span style="color: #008000">//<span style="color: #008000"> 页面跳转同步通知页面路径。根据自己项目路径做相应的修改
'return_url' => 'http://web.wan.com/return'<span style="color: #000000">
];
打开config/latrell-alipay.PHP,设置卖家支付宝帐户和合作身份者id
设置支付请求路由
支付宝扫码支付案例代码
<span style="color: #0000ff">use<span style="color: #000000"> Illuminate\Http\Request;
<span style="color: #0000ff">use Illuminate\Support\Facades\<span style="color: #008080">Log<span style="color: #000000">;
<span style="color: #0000ff">class alipayController <span style="color: #0000ff">extends<span style="color: #000000"> Controller{
<span style="color: #008000">//<span style="color: #008000"> 发起支付请求
<span style="color: #0000ff">public <span style="color: #0000ff">function<span style="color: #000000"> Alipay(){
<span style="color: #800080">$alipay = app('alipay.web'<span style="color: #000000">);
<span style="color: #800080">$alipay->setOutTradeNo('E0002332039'<span style="color: #000000">);
<span style="color: #800080">$alipay->setTotalFee('0.01'<span style="color: #000000">);
<span style="color: #800080">$alipay->setSubject('小米5s'<span style="color: #000000">);
<span style="color: #800080">$alipay->setBody('商品:支付宝支付测试'<span style="color: #000000">);
</span><span style="color: #800080">$alipay</span>->setQrPayMode('5'); <span style="color: #008000">//</span><span style="color: #008000">该设置为可选1-5,<a href="https://www.jb51.cc/tag/tianjia/" target="_blank" class="keywords">添加</a>该参数设置,<a href="https://www.jb51.cc/tag/zhichi/" target="_blank" class="keywords">支持</a><a href="https://www.jb51.cc/tag/erweima/" target="_blank" class="keywords">二维码</a>支付。
// <a href="https://www.jb51.cc/tag/tiaozhuan/" target="_blank" class="keywords">跳转</a>到支付<a href="https://www.jb51.cc/tag/yemian/" target="_blank" class="keywords">页面</a>。</span>
<span style="color: #0000ff">return</span> redirect()->to(<span style="color: #800080">$alipay</span>-><span style="color: #000000">getPayLink());
}
<span style="color: #008000">//<span style="color: #008000"> 异步通知支付结果
<span style="color: #0000ff">public <span style="color: #0000ff">function AliPayNotify(Request <span style="color: #800080">$request<span style="color: #000000">){
<span style="color: #008000">//<span style="color: #008000"> 验证请求。
<span style="color: #0000ff">if (!app('alipay.web')-><span style="color: #000000">verify()) {
<span style="color: #008080">Log::notice('Alipay notify post data verification fail.',<span style="color: #000000"> [
'data' => <span style="color: #800080">$request->instance()-><span style="color: #000000">getContent()
]);
<span style="color: #0000ff">return 'fail'<span style="color: #000000">;
}
<span style="color: #008000">//<span style="color: #008000"> 判断通知类型。
<span style="color: #0000ff">switch (<span style="color: #800080">$request ->input('trade_status',''<span style="color: #000000">)) {
<span style="color: #0000ff">case 'TRADE_SUCCESS':
<span style="color: #0000ff">case 'TRADE_FINISHED':
<span style="color: #008000">//<span style="color: #008000"> TODO: 支付成功,取得订单号进行其它相关操作。
<span style="color: #008080">Log::debug('Alipay notify post data verification success.',<span style="color: #000000"> [
'out_trade_no' => <span style="color: #800080">$request -> input('out_trade_no',''),'trade_no' => <span style="color: #800080">$request -> input('trade_no',''<span style="color: #000000">)
]);
<span style="color: #0000ff">break<span style="color: #000000">;
}
<span style="color: #0000ff">return 'success'<span style="color: #000000">;
}
<span style="color: #008000">//<span style="color: #008000"> 同步通知支付结果
<span style="color: #0000ff">public <span style="color: #0000ff">function AliPayReturn(Request <span style="color: #800080">$request<span style="color: #000000">){
<span style="color: #008000">//<span style="color: #008000"> 验证请求。
<span style="color: #0000ff">if (!app('alipay.web')-><span style="color: #000000">verify()) {
<span style="color: #008080">Log::notice('支付宝返回查询数据验证失败。',<span style="color: #000000"> [
'data' => <span style="color: #800080">$request-><span style="color: #000000">getQueryString()
]);
<span style="color: #0000ff">return view('alipayfail'<span style="color: #000000">);
}
<span style="color: #008000">//<span style="color: #008000"> 判断通知类型。
<span style="color: #0000ff">switch (<span style="color: #800080">$request ->input('trade_status',''<span style="color: #000000">)) {
<span style="color: #0000ff">case 'TRADE_SUCCESS':
<span style="color: #0000ff">case 'TRADE_FINISHED':
<span style="color: #008000">//<span style="color: #008000"> TODO: 支付成功,取得订单号进行其它相关操作。
<span style="color: #008080">Log::debug('支付宝通知获得数据验证成功。',<span style="color: #000000"> [
'out_trade_no' => <span style="color: #800080">$request ->input('out_trade_no',''<span style="color: #000000">)
]);
<span style="color: #0000ff">break<span style="color: #000000">;
}
<span style="color: #0000ff">return view('alipaysuccess'<span style="color: #000000">);
}
}
支付宝支付手机端:
<span style="color: #0000ff">use<span style="color: #000000"> Illuminate\Http\Request;
<span style="color: #0000ff">use Illuminate\Support\Facades\<span style="color: #008080">Log<span style="color: #000000">;
<span style="color: #0000ff">class alipayController <span style="color: #0000ff">extends<span style="color: #000000"> Controller{
<span style="color: #008000">//<span style="color: #008000"> 发起支付请求
<span style="color: #0000ff">public <span style="color: #0000ff">function<span style="color: #000000"> Alipay(){
<span style="color: #800080">$alipay = app('alipay.mobile'<span style="color: #000000">);
<span style="color: #800080">$alipay->setOutTradeNo('E0002332039'<span style="color: #000000">);
<span style="color: #800080">$alipay->setTotalFee('0.01'<span style="color: #000000">);
<span style="color: #800080">$alipay->setSubject('小米5s'<span style="color: #000000">);
<span style="color: #800080">$alipay->setBody('商品:支付宝支付测试'<span style="color: #000000">);
<span style="color: #008000">//<span style="color: #008000"> 返回签名后的支付参数给支付宝移动端的SDK。
<span style="color: #0000ff">return <span style="color: #800080">$alipay-><span style="color: #000000">getPayPara();
}
<span style="color: #008000">//<span style="color: #008000"> 支付宝异步通知支付结果
<span style="color: #0000ff">public <span style="color: #0000ff">function AliPayNotify(Request <span style="color: #800080">$request<span style="color: #000000">){
<span style="color: #008000">//<span style="color: #008000"> 验证请求。
<span style="color: #0000ff">if (!app('alipay.mobile')-><span style="color: #000000">verify()) {
<span style="color: #008080">Log::notice('Alipay notify post data verification fail.',''<span style="color: #000000">)
]);
<span style="color: #0000ff">break<span style="color: #000000">;
}
<span style="color: #0000ff">return 'success'<span style="color: #000000">;
}
AliPay。其GitHub项目地址是:https://github.com/Latrell/Alipay。该项目是中文版,使用说明GitHub上说的很清楚明白
原文链接:https://www.f2er.com/laravel/69655.html