文档章节

Laravel 支付宝SDK在Laravel5的封装

zhiqiangw
 zhiqiangw
发布于 2016/10/06 11:08
字数 519
阅读 29
收藏 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
博文 193
码字总数 142652
作品 0
郑州
程序员
Laravel 不权威导航

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

weixingo
2016/02/05
180
0
Codeception 2.2.9 发布,全堆栈 PHP 测试框架

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

王练
2017/02/05
442
0
laravel5 是否支持 MySQL 列注释?

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

eleven0220
2016/05/30
390
1
laravel5不使用默认的Bootstrap的样式分页,自己定义该怎么做

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

AliceLi
2015/08/14
3.3K
1
5分钟提高Laravel框架性能10倍以上

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

ChefXu
2016/05/03
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

基于TP5的微信的公众号获取登录用户信息

之前讲过微信的公众号自动登录的菜单配置,这次记录一下在TP5项目中获取自动登录的用户信息并存到数据库的操作 基本的流程为:微信设置自动登录的菜单—>访问的URL指定的函数里获取用户信息—...

月夜中徘徊
56分钟前
0
0
youTrack

package jetbrains.teamsys.license.runtime; 计算lis package jetbrains.ring.license.reader; 验证lis 安装后先不要生成lis,要把相关文件进行替换 ring-license-checker-1.0.41.jar char......

max佩恩
今天
0
0
12.17 Nginx负载均衡

Nginx负载均衡 下面的dig看到可以返回2个IP,就是解析出来的IP,这样我们可以做负载均衡。 dig www.qq.com 1.vim /usr/local/nginx/conf/vhost/fuzai.conf 2.添加如下配置 upstream qq //定义...

芬野de博客
今天
0
0
SSE(Server Send Event 服务端发送事件)

package com.example.demo.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframe......

Canaan_
今天
0
0
jvm调优

1.jvm运行模式 client模式:启动快,占用内存少,jit编译器生成代码的速度也更快. server模式:主要优势在于代码优化功能,这个功能对于服务器应用而言尤其重要. tiered server模式:结合了client与...

Funcy1122
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部