laravel5集成支付宝alipay扫码支付流程(Laravel 支付解决方案)

前端之家收集整理的这篇文章主要介绍了laravel5集成支付宝alipay扫码支付流程(Laravel 支付解决方案)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

首先我们来探讨如何在Laravel应用中使用支付宝进行支付,对此,GitHub上有很多相关的包,其中最流行的两个包:Omnipay For Laravel 5 & Lumen 和 Laravel AliPay。这里使用的是Laravel AliPay来做案例说明:

准备工作 :支付宝账号 /蚂蚁金服开放平台账号---> 支付宝签约(即时到账)到项目根目录执行命令安装包

composer require latrell/alipay dev-master

执行更新

composer update

执行更新后,到vendor目录里面看一下有没有latrell目录,如果有说明安装成功,反之没有。因为latrell目录下放的是alipay相关文件

找到 config/app.PHP 配置文件中,key为 providers 的数组,在数组中添加服务提供者。

=>
      <span style="color: #800000"&gt;'</span><span style="color: #800000"&gt;Latrell\Alipay\AlipayServiceProvider</span><span style="color: #800000"&gt;'</span><span style="color: #000000"&gt;,]</span></pre>

执行命令,生成配置文件config/目录下

PHP artisan vendor:publish

配置说明

配置文件 config/latrell-alipay.PHP 为公共配置信息文件

config/latrell-alipay-web.PHP 为Web版支付宝SDK配置

config/latrell-alipay-mobile.PHP 为手机端支付宝SDK配置

打开config/latrell-alipay-web.PHP,设置安全检验码与通知页面

PHP <span style="color: #008000">//<span style="color: #008000"> 安全检验码,以数字和字母组成的32位字符。
'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

PHP 'partner_id' => '2088************', 'seller_id' => '28*******4@qq.com'

设置支付请求路由

Route::get('alipay','Home\alipayController@Alipay'); Route::any('notify','Home\alipayController@AliPayNotify'); 通知页面路径 Route::any('return','Home\alipayController@AliPayReturn'); 页面跳转同步通知页面路径

支付宝扫码支付案例代码

PHP PHPStorm. * User: Administrator * Date: 2017/2/8 * Time: 20:19 namespace App\Http\Controllers\Home;

<span style="color: #0000ff">use<span style="color: #000000"> App\Http\Controllers\Controller;
<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"&gt;$alipay</span>->setQrPayMode('5'); <span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;该设置为可选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"&gt;return</span> redirect()->to(<span style="color: #800080"&gt;$alipay</span>-><span style="color: #000000"&gt;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">);
}
}

 支付宝支付手机端:

PHP PHPStorm. * User: Administrator * Date: 2017/2/8 * Time: 22:19 <span style="color: #0000ff">use<span style="color: #000000"> App\Http\Controllers\Controller;
<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

猜你在找的Laravel相关文章