zoukankan      html  css  js  c++  java
  • Laravel 自己创建ServiceProvider 与 yansongda/laravel-pay 支付服务

    1 自己创建一个ServiceProvider的步骤

    1.1 创建服务提供者

    php artisan make:provider FamilyServiceProvider 

    执行成功后会出现这个文件 appProvidersFamilyServiceProvider.php

    <?php
    
    namespace AppProviders;
    
    use IlluminateSupportServiceProvider;
    
    class FamilyServiceProvider extends ServiceProvider
    {
        
        
        /**
         * Register services.
         *
         * @return void
         */
        public function register()
        {
         
        }
    
        /**
         * Bootstrap services.
         *
         * @return void
         */
        public function boot()
        {
            //
        }
    }
     

    1.2 创建服务

    1.2.1  appServiceFamilyFamilyService.php

    <?php
    namespace AppServiceFamily;
    class FamilyService
    {
        public function __construct(PersonService $person,TvService $tv)
        {
            $this->person = $person;
            echo 'Family实例创建成功 <br>';
        }
        
        public  function  testabc()
        {
            $this->person->test();
        }
    }
    View Code

    1.2.2 appServiceFamilyPersonService.php

    <?php
    namespace AppServiceFamily;
    class PersonService
    {
        public function __construct(Walk $walk)
        {
            echo "person实例创建成功</br>";
        }
        public function test()
        {
            echo "我是person类中的方法";
        }
    }
    View Code

    1.2.3 appServiceFamilyTvService.php

    <?php
    namespace AppServiceFamily;
    class TvService
    {
        public function __construct()
        {
            echo "Tv实例创建成功</br>";
        }
        public function test()
        {
            echo "我是tv类中的方法";
        }
    }
    View Code

    1.2.4 appServiceFamilyWalk.php

    <?php
    namespace AppServiceFamily;
    class Walk
    {
        public function __construct()
        {
            echo "Walk的实例创建成功<br>";
        }
    }
    View Code

    1.3在 providers数组里声明服务提供者

    configapp.php

      /*
             * Package Service Providers...
             */
            AppProvidersFamilyServiceProvider::class,

    1.4 在服务提供者里注册服务

        public function register()
        {
            
            //第1种方式
            $this->app->singleton('Family', function () {
                return FamilyService(new PersonService(),new TvService());
            });
            //第2种方式
            //$this->app->bind(FamilyService::class);
            //$this->app->bind("AppServiceFamilyFamilyService");
        
            //第3种方式
            //$this->app->bind("Family","AppServiceFamilyFamilyService");
            
        }
    

    1.5 使用

    routesweb.php

    Route::get('/', function () {
    //    别名的方式
    //    app("Family")->testabc();
    //    完全路径调用
        app('AppServiceFamilyFamilyService')->testabc();
    //     return view('welcome');
    });
    

     

    2 yansongda/laravel-pay 支付服务

    2.1 安装

    composer require yansongda/laravel-pay

     * 如果不是laravel  用 yansongda/pay

    vendoryansongdalaravel-paysrcPayServiceProvider.php

      public function register()
        {
            $this->mergeConfigFrom(dirname(__DIR__).'/config/pay.php', 'pay');
    
            $this->app->singleton('pay.alipay', function () {
                return Pay::alipay(config('pay.alipay'));
            });
            $this->app->singleton('pay.wechat', function () {
                return Pay::wechat(config('pay.wechat'));
            });
        }

    2.2 使用说明

    https://packagist.org/packages/yansongda/laravel-pay

    https://github.com/yansongda/pay

    2.3 注册

    laravel >5.5 自动注册

    php artisan vendor:publish --provider="YansongdaLaravelPayPayServiceProvider" --tag=laravel-pay

    vendorlaravelframeworksrcIlluminateContractsFoundationApplication.php

      'yansongda/laravel-pay' => 
      array (
        'providers' => 
        array (
          0 => 'Yansongda\LaravelPay\PayServiceProvider',
        ),
        'aliases' => 
        array (
          'Pay' => 'Yansongda\LaravelPay\Facades\Pay',
        ),
      ),

    configpay.php

    <?php
    
    return [
        'alipay' => [
            // 支付宝分配的 APPID
            'app_id' => env('ALI_APP_ID', ''),
    
            // 支付宝异步通知地址
            'notify_url' => '',
    
            // 支付成功后同步通知地址
            'return_url' => '',
    
            // 阿里公共密钥,验证签名时使用
            'ali_public_key' => env('ALI_PUBLIC_KEY', ''),
    
            // 自己的私钥,签名时使用
            'private_key' => env('ALI_PRIVATE_KEY', ''),
    
            // 使用公钥证书模式,请配置下面两个参数,同时修改 ali_public_key 为以 .crt 结尾的支付宝公钥证书路径,如(./cert/alipayCertPublicKey_RSA2.crt)
            // 应用公钥证书路径
            // 'app_cert_public_key' => './cert/appCertPublicKey.crt',
    
            // 支付宝根证书路径
            // 'alipay_root_cert' => './cert/alipayRootCert.crt',
    
            // optional,默认 warning;日志路径为:sys_get_temp_dir().'/logs/yansongda.pay.log'
            'log' => [
                'file' => storage_path('logs/alipay.log'),
            //  'level' => 'debug'
            //  'type' => 'single', // optional, 可选 daily.
            //  'max_file' => 30,
            ],
    
            // optional,设置此参数,将进入沙箱模式
            // 'mode' => 'dev',
        ],
    
        'wechat' => [
            // 公众号 APPID
            'app_id' => env('WECHAT_APP_ID', ''),
    
            // 小程序 APPID
            'miniapp_id' => env('WECHAT_MINIAPP_ID', ''),
    
            // APP 引用的 appid
            'appid' => env('WECHAT_APPID', ''),
    
            // 微信支付分配的微信商户号
            'mch_id' => env('WECHAT_MCH_ID', ''),
    
            // 微信支付异步通知地址
            'notify_url' => '',
    
            // 微信支付签名秘钥
            'key' => env('WECHAT_KEY', ''),
    
            // 客户端证书路径,退款、红包等需要用到。请填写绝对路径,linux 请确保权限问题。pem 格式。
            'cert_client' => '',
    
            // 客户端秘钥路径,退款、红包等需要用到。请填写绝对路径,linux 请确保权限问题。pem 格式。
            'cert_key' => '',
    
            // optional,默认 warning;日志路径为:sys_get_temp_dir().'/logs/yansongda.pay.log'
            'log' => [
                'file' => storage_path('logs/wechat.log'),
            //  'level' => 'debug'
            //  'type' => 'single', // optional, 可选 daily.
            //  'max_file' => 30,
            ],
    
            // optional
            // 'dev' 时为沙箱模式
            // 'hk' 时为东南亚节点
            // 'mode' => 'dev',
        ],
    ];
    View Code
    dd(app());

    可以看到 不用写一行代码 就已经注册到bindings数组里了。

     

  • 相关阅读:
    git 删除远程分支
    测试模板--接口测试
    测试模板--PC浏览器兼容性测试
    Mock作用
    Docker实践--搭建JIRA平台
    Docker实践--搭建分布式UI测试环境
    Docker实践--搭建HttpRunnerManager测试平台
    Docker实践--搭建Yapi测试平台
    微博爬虫实践---搜索关键词
    接口实践--演练地址集合
  • 原文地址:https://www.cnblogs.com/polax/p/14595166.html
Copyright © 2011-2022 走看看