Laravel集成支付宝支付

引入拓展包

1
composer require yansongda/laravel-pay:2.10.2 #安装拓展包

配置参数

1
touch config/pay.php

config/pay.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?php

return [
    'alipay' => [
        'app_id'         => '',
        'ali_public_key' => '',
        'private_key'    => '',
        'log'            => [
            'file' => storage_path('logs/alipay.log'),
        ],
    ]
];

注入实例

app/Providers/AppServiceProvider.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
use Monolog\Logger;
use Yansongda\Pay\Pay;
.
.
.
    public function register()
    {
        // 往服务容器中注入一个名为 alipay 的单例对象
        $this->app->singleton('alipay', function () {
            $config = config('pay.alipay');
            // 判断当前项目运行环境是否为线上环境
            if (app()->environment() !== 'production') {
                $config['mode']         = 'dev';
                $config['log']['level'] = Logger::DEBUG;
            } else {
                $config['log']['level'] = Logger::WARNING;
            }
            // 调用 Yansongda\Pay 来创建一个支付宝支付对象
            return Pay::alipay($config);
        });
    }

获取支付宝的沙箱环境

前往openhome.alipay.com/platform/appDa…扫码登陆后将会看到,然后简单填一下:

image-20220303160602977

获取应用公钥和应用私钥:

image-20220303160958348

image-20220303161317573

提示:之前基本都是用的本地工具,但是支付宝开放平台升级后,提供了在线和离线两种方式,我们基本用在线方式就可以了;

配置参数

config/pay.php

1
2
3
'app_id' => '你在支付宝沙箱看到的appid',
'ali_public_key' => '支付宝沙箱显示的公钥',
'private_key' => '非java语言的私钥',

测试支付

routes/web.php

1
2
3
4
5
6
7
Route::get('alipay', function() {
    return app('alipay')->web([
        'out_trade_no' => time(),
        'total_amount' => '1',
        'subject' => 'test subject - 测试',
    ]);
});

访问测试路由,将会看到:

image-20220303172853986

提示:如遇到支付存在钓鱼风险!防钓鱼网站的方法提示,可以关掉其他浏览器窗口解决该问题

接下来可以用这里的测试账号测试支付:

image-20220303173059714

安全设置

我们修改我们的配置文件:

config/pay.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?php

return [
    'alipay' => [
        'app_id'         => env('ALIPAY_APP_ID'),
        'ali_public_key' => env('ALIPAY_PUBLIC_KEY'),
        'private_key'    => env('ALIPAY_PRIVATE_KEY'),
        'log'            => [
            'file' => storage_path('logs/alipay.log'),
        ],
    ],
];

.env 文件最后面新增:

1
2
3
4
# 支付宝配置信息
ALIPAY_APP_ID=2021000117608961
ALIPAY_PUBLIC_KEY="MIIBIjANB..."
ALIPAY_PRIVATE_KEY="MIIEpAIBAA..."

为什么这么做?因为.env文件在git提交的时候不会提交,而如果写死在配置文件里面,就会提交到git,可能有财产安全风险。

最后

到这里就代表对接成功了,后续正式上线替换掉测试的配置信息即可,当然不止如此,你还需要根据实际业务,开发支付宝回调,配置回掉地址等。另外,虽然现在这个拓展包出3.0版本了,但还是推荐用2.10.2版本,具体原因,相信你体验过后就会知道了,再会…

声明:本文部分参考其他文章,如有部分内容雷同,请务惊讶!但博主确实在测试项目中完整走了一遍,对内容保障,并非水文,感谢谅解(狗头保命)