sander-van-hooft/laravel-payable-redirect-mollie

将 Mollie 付款与 Laravel Eloquent 模型关联

1.0.4 2018-02-08 16:28 UTC

This package is auto-updated.

Last update: 2024-09-06 09:32:02 UTC


README

Latest Version on Packagist Software License Build Status Code Quality Total Downloads

在您的 Laravel 5.4 应用程序中实现 Mollie 付款不必困难。此包通过创建付款记录并与 Mollie 同步状态来帮助您。它建立在非常可靠的官方 Mollie PHP 客户端 之上。它只支持一次性付款;暂不支持定期付款。

结构

config/
database/
docs/
routes/
src/
tests/

安装

通过 Composer

$ composer require sander-van-hooft/laravel-payable-redirect-mollie

接下来,您必须安装服务提供者

// config/app.php
'providers' => [
    ...
    SanderVanHooft\PayableRedirect\PayableRedirectServiceProvider::class,
];

并将 Mollie API 密钥添加到项目根目录下的 .env 文件中。这也是您可以覆盖 Mollie 在付款状态更新时调用的 webhook 路由的地方

# /.env:
...
MOLLIE_KEY=YOUR_MOLLIE_API_KEY_HERE
# MOLLIE_WEBHOOK_URL=your_url_relative/to_your_app_url

您可以使用以下命令发布迁移

$ php artisan vendor:publish --provider="SanderVanHooft\PayableRedirect\PayableRedirectServiceProvider" --tag="migrations"

迁移发布后,您可以通过运行迁移来创建 payments-table

$ php artisan migrate

Laravel 会自动加载此包中的路由。

如果您更喜欢使用配置文件而不是配置 .env 文件(不是必需的!)来配置,您还可以使用以下命令发布 payable.php 配置文件

$ php artisan vendor:publish --provider="SanderVanHooft\PayableRedirect\PayableRedirectServiceProvider" --tag="config"

在配置文件中,您可以设置 MOLLIE API 密钥并覆盖默认的 mollie 付款 webhook 路由。这是默认配置文件的外观

return [
    'mollie' => [
        'key' => env('MOLLIE_KEY', 'test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'),
        'webhook_url' => env('MOLLIE_WEBHOOK_URL', '/webhooks/payments/mollie'),
    ],
];

使用方法

基本用法

在您的代码中,使用 MolliePaymentGateway 创建一个付款记录

// Using some App\Order model (provided by you)

$order = new App\Order(['amount' => 12345]);
$order->save();

$paymentGateway = new SanderVanHooft\PayableRedirect\MolliePaymentGateway;

$payment = $paymentGateway->chargeAmountForPayable(
    $order->amount, // AMOUNT IN CENTS!!
    $order,
    'Some description',
    [ 'return_url' => 'http://some-return-url.com' ]
);

付款金额以欧元分表示!

付款状态将与 Mollie 同步:每当付款状态发生变化时,Mollie 都会调用 webhook。这将触发您的应用程序从 Mollie 获取最新的付款状态。出于安全原因,Mollie 设计了这样的流程。

IsPayableTrait

为了方便,您可以在您的付款 Eloquent 模型(如上面的示例中的 App\Order 模型)上使用 isPayableTrait。这使您能够调用 $order->payments

use Illuminate\Database\Eloquent\Model;
use SanderVanHooft\PayableRedirect\Payment;
use SanderVanHooft\PayableRedirect\IsPayable\IsPayableTrait;

class Order extends Model
{
    use IsPayableTrait;
}

事件

为方便集成自己的自定义监听器,PaymentEvents 被分发(请参阅 Laravel 事件和监听器)。以下事件可用

  • PaymentUpdated:当 Mollie 调用 webhook 时会分发此事件。它检查付款状态是否真的已更改。根据新的状态,它会分发以下基于 Mollie 的以下事件之一。
  • PaymentCancelled
  • PaymentChargedBack
  • PaymentExpired
  • PaymentFailed
  • PaymentOpened
  • PaymentPaid
  • PaymentPaidOut
  • PaymentPending
  • PaymentRefunded

变更日志

请参阅 CHANGELOG 了解最近更改的更多信息。

测试

请注意,为了测试付款状态同步,您的应用程序需要可以通过 Mollie 的公开 URL 访达。因此,在正常情况下,您无法在本地 Laravel 安装上完全测试此功能。

确保将 Mollie API 密钥(MOLLIE_KEY)配置为环境变量。例如,可以在 phpunit.xml 文件中完成此操作。

$ composer test

贡献

请参阅CONTRIBUTINGCONDUCT以获取详细信息。

安全性

如果您发现任何与安全相关的问题,请通过电子邮件info@sandervanhooft.nl联系,而不是使用问题跟踪器。

致谢

许可协议

MIT许可协议(MIT)。有关更多信息,请参阅许可文件