Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 606|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-6 11:05
  • 签到天数: 748 天

    [LV.9]以坛为家II

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    705612
    发表于 2021-4-22 11:35:16 | 显示全部楼层 |阅读模式

    首先我们来探讨如何在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 的数组,在数组中添加服务提供者。

    'providers' => [
             /*
              * Laravel Framework Service Providers...
              */
              
              'Latrell\Alipay\AlipayServiceProvider',
            ]

    执行命令,生成配置文件到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
    return [
    
       // 安全检验码,以数字和字母组成的32位字符。
       'key' => 'a6cq60*****************zl',
    
       //签名方式
       'sign_type' => 'MD5',
    
       // 服务器异步通知页面路径。根据自己项目路径做相应的修改
       'notify_url' => 'http://web.wan.com/notify',
    
       // 页面跳转同步通知页面路径。根据自己项目路径做相应的修改
       'return_url' => 'http://web.wan.com/return'
    ];

    打开config/latrell-alipay.php,设置卖家支付宝帐户和合作身份者id

    <?php
      return [
         //合作身份者id,以2088开头的16位纯数字。
         '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
    /**
     * Created by PhpStorm.
     * User: Administrator
     * Date: 2017/2/8
     * Time: 20:19
     */
    
    namespace App\Http\Controllers\Home;
    
    use App\Http\Controllers\Controller;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Log;
    
    class alipayController extends Controller{
    
    // 发起支付请求
    public function Alipay(){
        $alipay = app('alipay.web');
        $alipay->setOutTradeNo('E0002332039');
        $alipay->setTotalFee('0.01');
        $alipay->setSubject('小米5s');
        $alipay->setBody('商品:支付宝支付测试');
    
        $alipay->setQrPayMode('5'); //该设置为可选1-5,添加该参数设置,支持二维码支付。
    
        // 跳转到支付页面。
        return redirect()->to($alipay->getPayLink());
    }
    
    // 异步通知支付结果
    public function AliPayNotify(Request $request){
    // 验证请求。
    if (!app('alipay.web')->verify()) {
        Log::notice('Alipay notify post data verification fail.', [
            'data' => $request->instance()->getContent()
        ]);
        return 'fail';
    }
    // 判断通知类型。
    switch ($request ->input('trade_status','')) {
        case 'TRADE_SUCCESS':
        case 'TRADE_FINISHED':
            // TODO: 支付成功,取得订单号进行其它相关操作。
            Log::debug('Alipay notify post data verification success.', [
                'out_trade_no' => $request -> input('out_trade_no',''),
                'trade_no' => $request -> input('trade_no','')
            ]);
            break;
    }
    return 'success';
    }
    
    // 同步通知支付结果
    public function AliPayReturn(Request $request){
    // 验证请求。
    if (!app('alipay.web')->verify()) {
        Log::notice('支付宝返回查询数据验证失败。', [
            'data' => $request->getQueryString()
        ]);
        return view('alipayfail');
    }
    // 判断通知类型。
    switch ($request ->input('trade_status','')) {
        case 'TRADE_SUCCESS':
        case 'TRADE_FINISHED':
            // TODO: 支付成功,取得订单号进行其它相关操作。
            Log::debug('支付宝通知获得数据验证成功。', [
                'out_trade_no' => $request ->input('out_trade_no',''),
                'trade_no' => $request -> input('trade_no','')
            ]);
            break;
    }
    return view('alipaysuccess');
    }
    }

     

     支付宝支付手机端:

    <?php
    /**
     * Created by PhpStorm.
     * User: Administrator
     * Date: 2017/2/8
     * Time: 22:19
     */
    namespace App\Http\Controllers\Home;
    
    use App\Http\Controllers\Controller;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Log;
    
    class alipayController extends Controller{
    // 发起支付请求
    public function Alipay(){
        $alipay = app('alipay.mobile');
        $alipay->setOutTradeNo('E0002332039');
        $alipay->setTotalFee('0.01');
        $alipay->setSubject('小米5s');
        $alipay->setBody('商品:支付宝支付测试');
       
       // 返回签名后的支付参数给支付宝移动端的SDK。
        return $alipay->getPayPara();
    }
    
    // 支付宝异步通知支付结果
    public function AliPayNotify(Request $request){
    // 验证请求。
    if (!app('alipay.mobile')->verify()) {
        Log::notice('Alipay notify post data verification fail.', [
            'data' => $request->instance()->getContent()
        ]);
        return 'fail';
    }
    // 判断通知类型。
    switch ($request ->input('trade_status','')) {
        case 'TRADE_SUCCESS':
        case 'TRADE_FINISHED':
            // TODO: 支付成功,取得订单号进行其它相关操作。
            Log::debug('Alipay notify post data verification success.', [
                'out_trade_no' => $request -> input('out_trade_no',''),
                'trade_no' => $request -> input('trade_no','')
            ]);
            break;
    }
    return 'success';
    }

    AliPay。其GitHub项目地址是:https://github.com/Latrell/Alipay。该项目是中文版,使用说明GitHub上说的很清楚明白

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-16 23:41 , Processed in 0.062026 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表