加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 19:58:25 所属栏目:大数据 来源:网络整理
导读:首先我们来探讨如何在Laravel应用中使用支付宝进行支付,对此,GitHub上有很多相关的包,其中最流行的两个包:Omnipay For Laravel 5 Lumen 和 Laravel AliPay。这里使用的是Laravel AliPay来做案例说明: 准备工作 : 支付宝账号 /蚂蚁金服开放平台账号--->

首先我们来探讨如何在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;LatrellAlipayAlipayServiceProvider</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,设置安全检验码与通知页面

<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

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

设置支付请求路由

Route::get('alipay','HomealipayController@Alipay'); Route::any('notify','HomealipayController@AliPayNotify'); Route::any('return','HomealipayController@AliPayReturn');

支付宝扫码支付案例代码

namespace AppHttpControllersHome;

<span style="color: #0000ff">use<span style="color: #000000"> AppHttpControllersController;
<span style="color: #0000ff">use<span style="color: #000000"> IlluminateHttpRequest;
<span style="color: #0000ff">use IlluminateSupportFacades&;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,添加该参数设置,支持二维码支付。

// 跳转到支付页面。</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">);
}
}

?支付宝支付手机端:

<span style="color: #0000ff">use<span style="color: #000000"> AppHttpControllersController;
<span style="color: #0000ff">use
<span style="color: #000000"> IlluminateHttpRequest;
<span style="color: #0000ff">use IlluminateSupportFacades&;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上说的很清楚明白

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读