当前位置: 首页 > 工具软件 > laravel-nuxt > 使用案例 >

Laravel微信Native支付、微信jsapi支付

司英飙
2023-12-01

**

之前一直使用thinkphp做开发,偶然的一次机会运用了laravel框架并且做了一个微信扫码支付功能,发现laravel扩展功能大大超过了tp,接下来分享一下laravel的EasyWeChat扩展

**
1、首先下载EasyWeChat扩展

composer require "overtrue/laravel-wechat:^5.1"

2、注册 ServiceProvider 和 Facade (Laravel 5.5 + 无需手动注册)
在项目配置文件cofig/app.php加入

'providers' => [
    // ...
    Overtrue\LaravelWeChat\ServiceProvider::class,
],
'aliases' => [
    // ...
    'EasyWeChat' => Overtrue\LaravelWeChat\Facade::class,
],

3、创建配置文件
在项目根目录输入:

php artisan vendor:publish --provider="Overtrue\LaravelWeChat\ServiceProvider"

输入以上命令系统会在根目录config创建wechat.php文件只需要修改里边的参数值就可以

<?php

/*
 * This file is part of the overtrue/laravel-wechat.
 *
 * (c) overtrue <i@overtrue.me>
 *
 * This source file is subject to the MIT license that is bundled
 * with this source code in the file LICENSE.
 */

return [
    /*
     * 默认配置,将会合并到各模块中
     */
    'defaults'         => [
        /*
         * 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
         */
        'response_type'     => 'array',

        /*
         * 使用 Laravel 的缓存系统
         */
        'use_laravel_cache' => true,

        /*
         * 日志配置
         *
         * level: 日志级别,可选为:
         *                 debug/info/notice/warning/error/critical/alert/emergency
         * file:日志文件位置(绝对路径!!!),要求可写权限
         */
        'log'               => [
            'level' => env('WECHAT_LOG_LEVEL', 'debug'),
            'file'  => env('WECHAT_LOG_FILE', storage_path('logs/wechat.log')),
        ],
    ],

    /*
     * 路由配置
     */
    'route'            => [
        /*
         * 开放平台第三方平台路由配置
         */
        // 'open_platform' => [
        //     'uri' => 'serve',
        //     'action' => Overtrue\LaravelWeChat\Controllers\OpenPlatformController::class,
        //     'attributes' => [
        //         'prefix' => 'open-platform',
        //         'middleware' => null,
        //     ],
        // ],
    ],

    /*
     * 公众号
     */
    'official_account' => [
        'default' => [
            'app_id'  => env('WECHAT_OFFICIAL_ACCOUNT_APPID', 'your-app-id'),         // AppID
            'secret'  => env('WECHAT_OFFICIAL_ACCOUNT_SECRET', 'your-app-secret'),    // AppSecret
            'token'   => env('WECHAT_OFFICIAL_ACCOUNT_TOKEN', 'your-token'),           // Token
            'aes_key' => env('WECHAT_OFFICIAL_ACCOUNT_AES_KEY', ''),                 // EncodingAESKey

            /*
             * OAuth 配置
             *
             * scopes:公众平台(snsapi_userinfo / snsapi_base),开放平台:snsapi_login
             * callback:OAuth授权完成后的回调页地址(如果使用中间件,则随便填写。。。)
             * enforce_https:是否强制使用 HTTPS 跳转
             */
            // 'oauth'   => [
            //     'scopes'        => array_map('trim', explode(',', env('WECHAT_OFFICIAL_ACCOUNT_OAUTH_SCOPES', 'snsapi_userinfo'))),
            //     'callback'      => env('WECHAT_OFFICIAL_ACCOUNT_OAUTH_CALLBACK', '/examples/oauth_callback.php'),
            //     'enforce_https' => true,
            // ],
        ],
    ],

    /*
     * 开放平台第三方平台
     */
    // 'open_platform' => [
    //     'default' => [
    //         'app_id'  => env('WECHAT_OPEN_PLATFORM_APPID', ''),
    //         'secret'  => env('WECHAT_OPEN_PLATFORM_SECRET', ''),
    //         'token'   => env('WECHAT_OPEN_PLATFORM_TOKEN', ''),
    //         'aes_key' => env('WECHAT_OPEN_PLATFORM_AES_KEY', ''),
    //     ],
    // ],

    /*
     * 小程序
     */
    // 'mini_program' => [
    //     'default' => [
    //         'app_id'  => env('WECHAT_MINI_PROGRAM_APPID', ''),
    //         'secret'  => env('WECHAT_MINI_PROGRAM_SECRET', ''),
    //         'token'   => env('WECHAT_MINI_PROGRAM_TOKEN', ''),
    //         'aes_key' => env('WECHAT_MINI_PROGRAM_AES_KEY', ''),
    //     ],
    // ],

    /*
     * 微信支付
     */
     'payment' => [
         'default' => [
             'sandbox'            => env('WECHAT_PAYMENT_SANDBOX', false),
             'app_id'             => '你的appid',
             'mch_id'             => '你的商户号',
             'key'                => '你的支付密钥',
             'cert_path'          => env('WECHAT_PAYMENT_CERT_PATH', 'path/to/cert/apiclient_cert.pem'),    // XXX: 绝对路径!!!!
             'key_path'           => env('WECHAT_PAYMENT_KEY_PATH', 'path/to/cert/apiclient_key.pem'),      // XXX: 绝对路径!!!!
             'notify_url'         => 'http://example.com/payments/wechat-notify',                           // 默认支付结果通知地址
         ],
         // ...
     ],

    /*
     * 企业微信
     */
    // 'work' => [
    //     'default' => [
    //         'corp_id' => 'xxxxxxxxxxxxxxxxx',
    //         'agent_id' => 100020,
    //         'secret'   => env('WECHAT_WORK_AGENT_CONTACTS_SECRET', ''),
    //          //...
    //      ],
    // ],
];

以上就是EasyWeChat全部配置
接下来需要在控制里使用支付方式

 			$params = config('wechat.payment.default');//获取config文件数据
            $nonce_str = $this->createNonceStr();//随机数,自己写或者百度都可以
            $app = app('wechat.payment');

            $result = $app->order->unify([//这个可就简单了,直接下订单,依赖包里面都帮我们处理好了
                'trade_type'=>'NATIVE',
                'body' => $goods_name,
                'total_fee' => $payMoney*100,
                'out_trade_no' => $orderSn,
                'nonce_str' => $nonce_str,
                'notify_url' =>'你的回调地址',
            ]);

            if($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS')//判断成功
            {
                $url = $result['code_url'];//只有native支付才有code_url. 访问这个url可以直接调起支付
                $img =  QrCode::format('png')->size(200)->generate($url);    //format 是指定生成文件格式  默认格式是svg,可以直接在浏览器打开,png不能直接显示
                return  $data = 'data:image/png;base64,' . base64_encode($img );
            }

将code_url生成二维码是需要下载QrCode扩展的
下载安装使用教程在其他文章写过这里就不做赘述了

总结: Laravel微信Native支付使用EasyWeChat扩展方便简洁,都已封装好 自己直接调用就可以。大大减少开发者的工作量

 类似资料: