Laravel In-App Purchases 项目教程
1. 项目的目录结构及介绍
laravel-in-app-purchases/
├── bin/
├── config/
├── routes/
├── src/
├── tests/
├── .gitignore
├── .php-cs-fixer.dist.php
├── composer.json
├── composer.lock
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── UPGRADE-2.0.md
├── cover.png
├── phpunit.xml
└── psalm.xml
目录结构介绍
- bin/: 存放项目的可执行文件。
- config/: 存放项目的配置文件。
- routes/: 存放项目的路由文件。
- src/: 存放项目的主要源代码。
- tests/: 存放项目的测试代码。
- .gitignore: Git 忽略文件配置。
- .php-cs-fixer.dist.php: PHP-CS-Fixer 配置文件。
- composer.json: Composer 依赖管理文件。
- composer.lock: Composer 锁定文件。
- CONTRIBUTING.md: 贡献指南。
- LICENSE.md: 项目许可证。
- README.md: 项目介绍和使用说明。
- UPGRADE-2.0.md: 升级指南。
- cover.png: 项目封面图片。
- phpunit.xml: PHPUnit 配置文件。
- psalm.xml: Psalm 静态分析配置文件。
2. 项目的启动文件介绍
项目的启动文件通常是 src/
目录下的 ServiceProvider.php
文件。这个文件负责注册服务提供者,并将包的功能集成到 Laravel 应用中。
// src/ServiceProvider.php
namespace Imdhemy\Purchases;
use Illuminate\Support\ServiceProvider;
class ServiceProvider extends ServiceProvider
{
public function boot()
{
// 加载配置文件
$this->publishes([
__DIR__.'/../config/purchases.php' => config_path('purchases.php'),
]);
// 加载路由
$this->loadRoutesFrom(__DIR__.'/../routes/web.php');
}
public function register()
{
// 注册服务
$this->app->singleton(PurchaseService::class, function ($app) {
return new PurchaseService();
});
}
}
3. 项目的配置文件介绍
项目的配置文件通常位于 config/
目录下,文件名为 purchases.php
。这个文件包含了项目的各种配置选项。
// config/purchases.php
return [
'google_play' => [
'package_name' => env('GOOGLE_PLAY_PACKAGE_NAME', 'com.example.app'),
'credentials_json' => env('GOOGLE_PLAY_CREDENTIALS_JSON', storage_path('app/google-play-credentials.json')),
],
'app_store' => [
'shared_secret' => env('APP_STORE_SHARED_SECRET', 'your-shared-secret'),
],
'server_notifications' => [
'enabled' => env('PURCHASES_SERVER_NOTIFICATIONS_ENABLED', true),
'route' => env('PURCHASES_SERVER_NOTIFICATIONS_ROUTE', 'purchases/server-notifications'),
],
];
配置文件介绍
- google_play: 配置 Google Play 相关的参数,包括包名和凭证文件路径。
- app_store: 配置 App Store 相关的参数,包括共享密钥。
- server_notifications: 配置服务器通知相关的参数,包括是否启用和路由路径。
通过这些配置,可以灵活地调整项目的运行环境和行为。