webcraft/lunar-mollie

Lunar的Mollie支付驱动程序。

安装: 128

依赖项: 0

建议者: 0

安全: 0

星级: 7

关注者: 2

分支: 1

开放问题: 0

类型:项目

0.2.0 2024-03-29 16:10 UTC

This package is auto-updated.

Last update: 2024-08-29 17:13:27 UTC


README

MIT Licensed GitHub Workflow Status

Lunar 是一个领先的包,它将电子商务功能引入Laravel。

Mollie是一个支付提供商,支持各种支付方式,例如:Apple Pay、Bancontact、银行转账、Belfius、信用卡、直接借记、EPS、礼品卡、Giropay、iDEAL、KBC、MyBank、PayPal、Paysafecard、Przelewy24和Sofort。

此插件提供了Lunar的AbstractPayment接口的Mollie实现,以及一个用于您店面使用的支付组件。它使用Laravel Livewire和Tailwind构建。

要求

  • Lunar >= 0.4
  • 一个 Mollie 账户
  • Laravel Livewire(如果使用前端组件)

安装

需要composer包

composer require webcraft/lunar-mollie

发布配置

这将发布配置到 config/lunar/mollie.php

php artisan vendor:publish --tag=lunar.mollie.config

发布视图(可选)

Lunar Mollie附带一个用于您结账时使用的辅助组件,如果您打算编辑它提供的视图,您可以发布它们。

php artisan vendor:publish --tag=lunar.mollie.components

发布翻译(可选)

结账组件使用按钮、支付方式等的翻译。如果您想编辑这些,您可以发布它们。

php artisan vendor:publish --tag=lunar.mollie.translations

启用驱动程序

config/lunar/payments.php 中设置驱动程序

<?php

return [
    // ...
    'types' => [
        'mollie' => [
            'driver' => 'mollie',
        ],
    ],
];

添加您的Mollie凭据和其他配置

查看 config/mollie.php 中的配置。在适当的情况下,编辑或设置您 .env 文件中的环境变量。至少需要设置键。

MOLLIE_LIVE_KEY=
MOLLIE_TEST_KEY=

密钥可以在您的Mollie账户中找到: https://my.mollie.com/dashboard/developers/api-keys

您可以使用 MOLLIE_TEST_MODE 环境变量在实时和测试模式之间切换。

店面使用

此插件提供了一个用于您店面使用的支付组件。它使用Laravel Livewire和Tailwind构建。在继续之前,请确保已安装并配置了这些依赖项。

添加支付组件

Payment component screenshot

在您希望支付表单出现的地方添加此组件

@livewire('mollie.payment', [
    'cart' => $cart,
])

如果您使用的是 Lunar的Livewire Starter Kit,您可以将此代码添加到 payment.blade.php 视图中,例如。

<div class="bg-white border border-gray-100 rounded-xl">
    <div class="flex items-center h-16 px-6 border-b border-gray-100">
        <h3 class="text-lg font-medium">
            Payment
        </h3>
    </div>

    @if ($currentStep >= $step)
        <div class="p-6 space-y-4">
            @livewire('mollie.payment', [
                'cart' => $cart,
            ])
        </div>
    @endif

</div>

默认情况下,该组件将仅显示一个“继续支付”按钮,将用户重定向到Mollie托管支付方式选择屏幕。

如果您想从结账表单中直接显示可用的支付方式,请转到 config/lunar/mollie.php,将 specify_payment_methods 设置为 true 并取消注释 payment_methods 中所有可用的支付方式。别忘了这些支付方式也需要在您的Mollie账户中启用。

[
    //...
    
    'specify_payment_methods' => true,

    'payment_methods' => [
        'bancontact',
        'creditcard',
        'ideal',
        'paypal',
    ],
]

Webhooks

每次支付尝试(无论成功与否)后,Mollie都会向您的应用程序发送webhook。处理此webhook的路由和逻辑已经实现。但是,如果您想编写自己的逻辑,您可以创建自己的命名路由,并将 webhook_route 配置值更改为您的路由名称。

实现重定向路由

支付尝试后,Mollie将用户重定向回您的应用程序。默认情况下,MollieRedirectController 将处理此重定向并将用户重定向到结账成功或失败页面。但是,如果您想实现自己的逻辑,您可以创建自己的命名路由,并将 redirect_route 配置值更改为您的路由名称。

虽然包已经实现了 MollieRedirectController,但这只是一个中继控制器,会将用户重定向到结账成功或失败的页面。这些状态页面不是由包实现的,因为这些可能特定于您的主题。有4个状态需要页面:已支付、已取消、未结账和失败。您需要自行创建这些页面的命名路由,分别是 checkout-success.viewcheckout-canceled.viewcheckout-open.viewcheckout-failure.view。如果您想更改这些名称,可以在配置中进行修改。

[
    //...
    
    'payment_paid_route' => 'checkout-success.view',
    'payment_canceled_route' => 'checkout-canceled.view',
    'payment_open_route' => 'checkout-open.view',
    'payment_failed_route' => 'checkout-failure.view',
]

以下是结账成功页面组件的一个示例

//app/Http/Livewire/CheckoutSuccessPage.php

<?php

namespace App\Http\Livewire;

use Livewire\Component;
use Lunar\Facades\CartSession;
use Lunar\Models\Cart;
use Lunar\Models\Order;

class CheckoutSuccessPage extends Component
{
    public ?Cart $cart;

    public Order $order;

    public function mount()
    {
        $this->cart = CartSession::current();

        if (! $this->cart || ! $this->cart->completedOrder) {
            $this->redirect('/');

            return;
        }
        $this->order = $this->cart->completedOrder;

        CartSession::forget();
    }

    public function render()
    {
        return view('livewire.checkout-success-page');
    }
}
//resources/views/livewire/checkout-success-page.blade.php

<section class="bg-white">
    <div class="max-w-screen-xl px-4 py-32 mx-auto sm:px-6 lg:px-8 lg:py-48">
        <div class="max-w-xl mx-auto text-center">
            <h1 class="mt-8 text-3xl font-extrabold sm:text-5xl">
                <span class="block mt-1 text-blue-500">
                    Thank you for your order
                </span>
            </h1>

            <p class="mt-4 font-medium sm:text-lg">
                Your order reference number is

                <strong>
                    {{ $order->reference }}
                </strong>
            </p>

            <a class="inline-block px-8 py-3 mt-8 text-sm font-medium text-center text-white bg-blue-600 rounded-lg hover:ring-1 hover:ring-blue-600"
               href="{{ url('/') }}">
                Back Home
            </a>
        </div>
    </div>
</section>
//routes/web.php

Route::get('checkout/success', \App\Http\Livewire\CheckoutSuccessPage::class)->name('checkout-success.view');

您可以为其他状态页面做类似处理。

测试

composer test

贡献

欢迎贡献,如果您考虑添加功能,请先提交一个问题。

关于Webcraft

Webcraft 是来自比利时的一名自由职业网页开发者 Michiel Loncke 的公司,专注于使用 Laravel 和 Lunar 构建定制网络应用和电子商务解决方案。如果您需要项目帮助,请随时联系我们