protonemedia / laravel-paddle
Laravel 对 Paddle.com 的集成
Requires
- php: ^8.1 || ^8.2 || ^8.3
- ext-openssl: *
- egulias/email-validator: ^3.1 || ^4.0
- guzzlehttp/guzzle: ^7.2
- illuminate/support: ^10.0 || ^11.0
- illuminate/validation: ^10.0 || ^11.0
Requires (Dev)
- orchestra/testbench: ^8.0 || ^9.0
- phpunit/phpunit: ^10.4
- dev-master
- 2.8.0
- 2.7.0
- 2.6.0
- 2.5.0
- 2.4.0
- v2.3.0
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.0
- 2.0.0
- 1.2.1
- 1.2.0
- 1.1.3
- 1.1.2
- v1.1.1
- v1.1.0
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-php83
- dev-laravel-9
- dev-php-8.1
- dev-sandbox
- dev-php-8.0
- dev-laravel-8.0-http
- dev-laravel-8.0
- dev-host-for-checkouts-request
- dev-L7.0
This package is auto-updated.
Last update: 2024-09-20 13:55:22 UTC
README
⚠️ 我对这个包的未来不确定。我可能要放弃它,所以请考虑使用 Laravel Cashier (Paddle)。
Laravel Paddle
此包为 Laravel 提供了与 Paddle.com 的集成。阅读有关该包介绍的 博客文章!
功能
- 对 Paddle.com API 的简单封装
- 内置对 Webhooks 和事件处理的支撑
- Blade 指令以在前端使用 Paddle.js
- 支持 Paddle Sandbox
赞助我们
❤️ 我们自豪地通过开发和免费提供 Laravel 包来支持社区。如果这个包为您节省了时间或您在专业上依赖它,请考虑 赞助维护和开发,并查看我们最新的高级包: Inertia Table。跟踪问题和拉取请求需要时间,但我们乐于提供帮助!
安装
只有此包的主分支和 2.0 版本与 Laravel 8.0 及更高版本兼容。如果您仍在使用较旧版本的 Laravel(或 PHP < 7.3),请参考下面的图表以确定您应使用哪个版本。请注意,旧版本不再受支持。
您可以通过 composer 安装此包
composer require protonemedia/laravel-paddle
配置
发布配置文件
php artisan vendor:publish --provider="ProtoneMedia\LaravelPaddle\PaddleServiceProvider" --tag=config
在您的 .env
文件或 config/paddle.php
文件中设置您的 Vendor ID 和 Code 以及 公钥 设置。公钥用于验证来自 Paddle 的传入 webhooks。
PADDLE_SANDBOX=false PADDLE_VENDOR_ID=123 PADDLE_VENDOR_AUTH_CODE=456 PADDLE_PUBLIC_KEY="-----BEGIN PUBLIC KEY----- ... -----END PUBLIC KEY-----"
Paddle Sandbox
从版本 2.2.0 开始,此包支持 Paddle Sandbox 环境。要使用此环境,将 sandbox_environment
配置键设置为 true
。这将配置 API URL 以及 Paddle JavaScript 库。如果您在使用此包的先前版本时发布了 Blade 视图,请确保重新发布视图。
php artisan vendor:publish --provider="ProtoneMedia\LaravelPaddle\PaddleServiceProvider" --tag=views
用法
API 调用通过 Paddle
门面提供。查看 文档 了解有关 Paddle API 的所有信息。您可以流畅地构建 API 调用,也可以简单地传递一个包含数据的数组。此包对给定数据有一些基本验证规则,如果您的数据无效,可能会导致 InvalidDataException
。当 API 调用失败时,它将抛出 PaddleApiException
。
// Fluent: $paddleResponse = Paddle::product() ->generatePayLink() ->productId($paddlePlanId) ->customerEmail($team->owner->email) ->passthrough(['team_id' => $team->id]) ->send(); // Array with payload: $payload = [ 'product_id' => $paddlePlanId, 'customer_email' => $team->owner->email, 'passthrough' => ['team_id' => $team->id], ]; $paddleResponse = Paddle::product() ->generatePayLink($payload) ->send(); return Redirect::to($paddleResponse['url']);
可用的 API 调用
// alerts Paddle::alert()->getWebhookHistory(); // checkouts Paddle::checkout()->getOrderDetails(); Paddle::checkout()->getUserHistory(); Paddle::checkout()->getPrices(); // products Paddle::product()->listCoupons(); Paddle::product()->createCoupon(); Paddle::product()->updateCoupon(); Paddle::product()->deleteCoupon(); Paddle::product()->listProducts(); Paddle::product()->generateLicense(); Paddle::product()->generatePayLink(); Paddle::product()->listTransactions($entity, $id); // subscriptions Paddle::subscription()->listPlans(); Paddle::subscription()->createPlan(); Paddle::subscription()->listUsers(); Paddle::subscription()->updateUser(); Paddle::subscription()->previewUpdate(); Paddle::subscription()->cancelUser(); Paddle::subscription()->listModifiers(); Paddle::subscription()->createModifier(); Paddle::subscription()->deleteModifier(); Paddle::subscription()->listPayments(); Paddle::subscription()->reschedulePayment(); Paddle::subscription()->createOneOffCharge($subscriptionId);
Webhooks 和 Laravel 事件
您可以在 paddle.php
配置文件中配置您的 webhook URI。在 Paddle 中相应地更新您的 webhook 设置。默认情况下,URI 是 paddle/webhook
。这意味着 webhook 调用将被发布到 https://your-domain.com/paddle/webhook
。
每个 webhook 都将映射到一个事件并包含 webhook 的有效载荷。例如,当调用 Subscription Created webhook 时,请求将被验证并触发一个 SubscriptionCreated
事件。
事件
ProtoneMedia\LaravelPaddle\Events\HighRiskTransactionCreated
ProtoneMedia\LaravelPaddle\Events\HighRiskTransactionUpdated
ProtoneMedia\LaravelPaddle\Events\LockerProcessed
ProtoneMedia\LaravelPaddle\Events\NewAudienceMember
ProtoneMedia\LaravelPaddle\Events\PaymentDisputeClosed
ProtoneMedia\LaravelPaddle\Events\PaymentDisputeCreated
ProtoneMedia\LaravelPaddle\Events\PaymentRefunded
ProtoneMedia\LaravelPaddle\Events\PaymentSucceeded
ProtoneMedia\LaravelPaddle\Events\SubscriptionCancelled
ProtoneMedia\LaravelPaddle\Events\SubscriptionCreated
ProtoneMedia\LaravelPaddle\Events\SubscriptionPaymentFailed
ProtoneMedia\LaravelPaddle\Events\SubscriptionPaymentRefunded
ProtoneMedia\LaravelPaddle\Events\SubscriptionPaymentSucceeded
ProtoneMedia\LaravelPaddle\Events\SubscriptionUpdated
ProtoneMedia\LaravelPaddle\Events\TransferCreated
ProtoneMedia\LaravelPaddle\Events\TransferPaid
ProtoneMedia\LaravelPaddle\Events\UpdateAudienceMember
一些 webhook,例如 Fulfillment Webhook,没有 alert_name
键。这些 webhook 将被映射到 ProtoneMedia\LaravelPaddle\Events\GenericWebhook
事件。
当您注册一个监听器来处理事件时,有效载荷可以轻松访问。您还可以访问原始 HTTP 请求。
<?php namespace App\Listeners; use ProtoneMedia\LaravelPaddle\Events\SubscriptionCreated; class CreateSubscriptionModel { public function handle(SubscriptionCreated $event) { $status = $event->status; $nextBillDate = $event->next_bill_date; // or $webhookData = $event->all(); // $request = $event->getRequest(); } }
Blade 指令
此指令导入 Paddle JavaScript 库并将其配置为您的 Vendor ID。
<body> {{-- your app --}} @paddle </body>
测试
composer test
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
贡献
有关详细信息,请参阅 CONTRIBUTING。
其他 Laravel 包
Inertia Table
:Inertia.js 的终极表格,内置查询构建器。Laravel Blade On Demand
:Laravel 包,用于在内存中编译 Blade 模板。Laravel Cross Eloquent Search
:Laravel 包,用于在多个 Eloquent 模型中进行搜索。Laravel Eloquent Scope as Select
:停止在 PHP 中重复复制您的 Eloquent 查询作用域和约束。此包允许您通过将它们添加为子查询来重用查询作用域和约束。Laravel FFMpeg
:此包为 Laravel 提供了 FFmpeg 集成。文件的存储由 Laravel 的 Filesystem 处理。Laravel MinIO Testing Tools
:在 MinIO S3 服务器上运行您的测试。Laravel Mixins
:Laravel 的一些好东西集合。Laravel Task Runner
:编写类似于 Blade 组件的 Shell 脚本,并在本地或远程服务器上运行它们。Laravel Verify New Email
:此软件包增加了验证新电子邮件地址的支持:当用户更新其电子邮件地址时,新地址被验证之前,旧地址不会被替换。Laravel XSS Protection
:Laravel 中间件,用于防止跨站脚本(XSS)攻击。它清理请求数据,并且可以清理 Blade 输出语句。
安全
如果您发现任何与安全相关的问题,请通过电子邮件发送到 pascal@protone.media,而不是使用问题跟踪器。
鸣谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。