文档章节

Laravel 支付宝SDK在Laravel5的封装

zhiqiangw
 zhiqiangw
发布于 2016/10/06 11:08
字数 519
阅读 26
收藏 0
点赞 0
评论 0

一、安装

composer require latrell/alipay dev-master


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

'providers' => [  
   // ...
  Latrell\Alipay\AlipayServiceProvider::class,
    ]

在项目根目录中运行 php artisan vendor:publish 命令,发布配置文件到你的项目中。

说明

配置文件 config/latrell-alipay.php 为公共配置信息文件, config/latrell-alipay-web.php 为Web版支付宝SDK配置, config/latrell-alipay-mobile.php 为手机端支付宝SDK配置。

二、使用

下面给打下一个支付申请得小例子:

Web端

 public function alipay()
 {
        $orderId = time();
        $orderPrice = 0.01;
        $goodsName = '外星人笔记本电脑';
        $goodsDescription = '外星人笔记本电脑';
        // 创建支付单。
        $alipay = app('alipay.web');
        $alipay->setOutTradeNo($orderId);
        $alipay->setTotalFee($orderPrice);
        $alipay->setSubject($goodsName);
        $alipay->setBody($goodsDescription);
        // 跳转到支付页面。
        return redirect()->to($alipay->getPayLink());
  }

手机端

 public function alipay()
 {
    $orderId = time();
    $orderPrice = 0.01;
    $goodsName = '外星人笔记本电脑';
    $goodsDescription = '外星人笔记本电脑';
    // 创建支付单。
    $alipay = app('alipay.mobile');
    $alipay->setOutTradeNo($orderId);
    $alipay->setTotalFee($orderPrice);
    $alipay->setSubject($goodsName);
    $alipay->setBody($goodsDescription);

    // 返回签名后的支付参数给支付宝移动端的SDK。
    return $alipay->getPayPara();
  }

Web端回调(通知)

/**
     * 异步通知
     */
    public function webNotify()
    {
        // 验证请求。
        if (! app('alipay.web')->verify()) {
            Log::notice('Alipay notify post data verification fail.', [
                'data' => Request::instance()->getContent()
            ]);
            return 'fail';
        }

        // 判断通知类型。
        switch (Input::get('trade_status')) {
            case 'TRADE_SUCCESS':
            case 'TRADE_FINISHED':
                // TODO: 支付成功,取得订单号进行其它相关操作。
                Log::debug('Alipay notify post data verification success.', [
                    'out_trade_no' => Input::get('out_trade_no'),
                    'trade_no' => Input::get('trade_no')
                ]);
                break;
        }

        return 'success';
    }

    /**
     * 同步通知
     */
    public function webReturn()
    {
        // 验证请求。
        if (! app('alipay.web')->verify()) {
            Log::notice('Alipay return query data verification fail.', [
                'data' => Request::getQueryString()
            ]);
            return view('alipay.fail');
        }

        // 判断通知类型。
        switch (Input::get('trade_status')) {
            case 'TRADE_SUCCESS':
            case 'TRADE_FINISHED':
                // TODO: 支付成功,取得订单号进行其它相关操作。
                Log::debug('Alipay notify get data verification success.', [
                    'out_trade_no' => Input::get('out_trade_no'),
                    'trade_no' => Input::get('trade_no')
                ]);
                break;
        }

        return view('alipay.success');
    }

APP端回调(通知)

/**
     * 支付宝异步通知
     */
    public function alipayNotify()
    {
        // 验证请求。
        if (! app('alipay.mobile')->verify()) {
            Log::notice('Alipay notify post data verification fail.', [
                'data' => Request::instance()->getContent()
            ]);
            return 'fail';
        }

        // 判断通知类型。
        switch (Input::get('trade_status')) {
            case 'TRADE_SUCCESS':
            case 'TRADE_FINISHED':
                // TODO: 支付成功,取得订单号进行其它相关操作。
                Log::debug('Alipay notify get data verification success.', [
                    'out_trade_no' => Input::get('out_trade_no'),
                    'trade_no' => Input::get('trade_no')
                ]);
                break;
        }

        return 'success';
    }

© 著作权归作者所有

共有 人打赏支持
zhiqiangw
粉丝 12
博文 191
码字总数 142634
作品 0
郑州
程序员
Laravel 不权威导航

Laravel不权威导航 Hi 这里是Roy整理的Laravel相关索引,希望能帮到大家 ,目前只是一小部分,正在努力整理中... Laravel 文档 Laravel 官方文档 —— 英文 Laravel 中文文档 —— laravel-...

weixingo ⋅ 2016/02/05 ⋅ 0

Codeception 2.2.9 发布,全堆栈 PHP 测试框架

Codeception 2.2.9 发布了,Codeception 是一个全堆栈的 PHP 测试框架。 测试示例: haveFakeClass($userController = Stub::make('UserController')...

王练 ⋅ 2017/02/05 ⋅ 0

laravel5 是否支持 MySQL 列注释?

laravel5 是否支持 MySQL 列注释? laravel5 如何添加 MySQL 表 , 列注释?

eleven0220 ⋅ 2016/05/30 ⋅ 1

laravel5不使用默认的Bootstrap的样式分页,自己定义该怎么做

laravel4可以扩展一个类比如 class fenye extends IlluminatePaginationPresenter { public function getActivePageWrapper($text){return ' '.$text.' ';} public function getDisabledText......

AliceLi ⋅ 2015/08/14 ⋅ 1

5分钟提高Laravel框架性能10倍以上

大家好, 这是我最近利用闲暇时间完成的方案,可能有点标题党的意思。实际上10倍是我各种应用测试的最差结果,因为包含了大量的数据库查询。单纯的框架性能,提升可以达到30倍。 而如果是简化...

ChefXu ⋅ 2016/05/03 ⋅ 2

ci3.0和laravel5.0该如何选择?

这两个框架都支持redis pdo吧,我现在想做一个问答网站,请问用这两个框架那个性能好啊,效率高.laravel5的中文文档不是太多,另外国内composer老不可用,要下载一个离线laravel包含了composer的完...

jack984 ⋅ 2015/04/10 ⋅ 1

laravel5自定义分页

laravel5分页处理与laravel4略有区别,laravel5提供了更方便的处理方式,可以方便满足不同分页展示。 laravel4自定义分页:http://php2012web.blog.51cto.com/5585213/1539601 laravel分页处...

ttlxihuan ⋅ 2016/09/26 ⋅ 0

Bundle 包 Module 模块化 --Laravel5 Bundles-Modules

Laravel 5 Bundles-Modules Bundles-Modules 是一个把应用分成多个包,一个包分成若干个小模块。 这是 laravel5 框架的 bundle 包系统,每个 bundle 都 module 模块化,模块与模块之前互不影...

梁文高 ⋅ 2017/02/08 ⋅ 0

laravel5下多环境.env配置

laravel5已经设计了环境管理功能: 使用HTTP时只需要在apache或nginx中添加APP_ENV=环境名 即可(当然比较麻烦,每个服务器环境都需要配置),如果使用artisan 命令行方式只需要在命令中追加...

ttlxihuan ⋅ 2016/06/20 ⋅ 0

MAC下安装laravel时遇到的坑💩

php版本:php7.0 服务器:nginx OS:OS X EI Capitan 首先安装composer 通过composer 来安装laravel 1,首先切换到你的根目录 运行以下代码 composer create-project laravel/laravel laravel5...

eatnothing ⋅ 2015/12/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 29分钟前 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 32分钟前 ⋅ 0

Webpack 4 api 了解与使用

webpack 最近升级到了 v4.5+版 01 官方不再支持 node4 以下版本 官方不再支持 node4 以下版本官方不再支持 node4 以下的版本,所以如果你的node版本太低,先开始升级node吧!话说node10 ...

NDweb ⋅ 41分钟前 ⋅ 0

使用nodeJs安装Vue-cli

Vue脚手架就是一个Vue框架开发环境 脚手架的意思是帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装,让我们不需要为了编辑或者一些其...

木筏笔歆 ⋅ 今天 ⋅ 0

【微信小程序开发实战】0x00.开发前准备工作

写在开始 本人资深后端码农一枚,近期项目需求,接触到了微信小程序,将学习过程整理成文分享给小伙伴们,由于是边学边整理难免有表述不对的地方,望大家及时指正,感谢。 本人微信号: dream...

dreamans ⋅ 今天 ⋅ 0

linux redis的安装和php7下安装redis扩展

安装redis服务器 (1)下载安装包: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz (2)编译程序: $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make $ cd src &&......

concat ⋅ 今天 ⋅ 0

Guava EventBus源码解析

一、EventBus使用场景示例 Guava EventBus是事件发布/订阅框架,采用观察者模式,通过解耦发布者和订阅者简化事件(消息)的传递。这有点像简化版的MQ,除去了Broker,由EventBus托管了订阅&...

SaintTinyBoy ⋅ 今天 ⋅ 0

http怎么做自动跳转https

Apache 版本 如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容: RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME......

Helios51 ⋅ 今天 ⋅ 0

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 今天 ⋅ 0

MySQL 内核深度优化

MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务...

java高级架构牛人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部