diff --git a/composer.json b/composer.json index 5900d24..c933157 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ "require": { "php": "^8.0|^8.1|^8.2", "illuminate/support": "^9.0|^10.0|^11.0", - "rapidez/core": "^2.8" + "rapidez/core": "^3.0" }, "config": { "sort-packages": true diff --git a/resources/js/components.js b/resources/js/components.js deleted file mode 100644 index 298cc6f..0000000 --- a/resources/js/components.js +++ /dev/null @@ -1,3 +0,0 @@ -import 'Vendor/rapidez/core/resources/js/vue' - -Vue.component('msp-pending', () => import('./components/MSPPending.vue')) diff --git a/resources/js/components/MSPPending.vue b/resources/js/components/MSPPending.vue index f290776..e69de29 100644 --- a/resources/js/components/MSPPending.vue +++ b/resources/js/components/MSPPending.vue @@ -1,62 +0,0 @@ - diff --git a/resources/js/eventlisteners.js b/resources/js/eventlisteners.js index 7283473..c07cba8 100644 --- a/resources/js/eventlisteners.js +++ b/resources/js/eventlisteners.js @@ -1,12 +1,5 @@ -document.addEventListener('vue:loaded', () => { - window.app.$on('checkout-payment-saved', (data) => { - if (!data.order.payment_method_code.includes('multisafepay_')) { - return; - } - window.app.checkout.doNotGoToTheNextStep = true - let cart = window.app.user?.id ? 'mine' : localStorage.mask; - window.magentoAPI('get', `multisafepay/${cart}/payment-url/${data.order.id}`).then(response => { - window.location.replace(response); - }); - }); -}) +import { addAfterPlaceOrderHandler } from 'Vendor/rapidez/core/resources/js/stores/usePaymentHandlers' + +addAfterPlaceOrderHandler(async function (response, mutationComponent) { + mutationComponent.redirect = response?.data?.placeOrder?.orderV2?.multisafepay_payment_url || mutationComponent.redirect; +}); diff --git a/resources/js/multisafepay.js b/resources/js/multisafepay.js deleted file mode 100644 index 74f643e..0000000 --- a/resources/js/multisafepay.js +++ /dev/null @@ -1 +0,0 @@ -import './package' \ No newline at end of file diff --git a/resources/js/package.js b/resources/js/package.js index 5e0e875..1537b0e 100644 --- a/resources/js/package.js +++ b/resources/js/package.js @@ -1,2 +1 @@ -import './components' import './eventlisteners' \ No newline at end of file diff --git a/resources/views/cancel.blade.php b/resources/views/cancel.blade.php deleted file mode 100644 index 9012efe..0000000 --- a/resources/views/cancel.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@extends('rapidez::layouts.app') - -@section('title', 'Checkout') - -@section('content') - -@endsection diff --git a/resources/views/pending.blade.php b/resources/views/pending.blade.php deleted file mode 100644 index 983bf5f..0000000 --- a/resources/views/pending.blade.php +++ /dev/null @@ -1,3 +0,0 @@ -

@lang('Pending payment')

-

@lang('We did not receive the payment (yet). This page will auto-update every 2 seconds.')

-

@lang('Are you still seeing this page after a minute? Please contact us.')

diff --git a/resources/views/success.blade.php b/resources/views/success.blade.php deleted file mode 100644 index cd5aefa..0000000 --- a/resources/views/success.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@extends('rapidez::layouts.app') - -@section('title', 'Checkout') - -@section('content') -
- -
-
- @include('rapidez::checkout.steps.success') -
-
- @include('multisafepay::pending') -
-
-
-
-@endsection diff --git a/routes/web.php b/routes/web.php index 1e85a1d..b9a16ef 100644 --- a/routes/web.php +++ b/routes/web.php @@ -5,9 +5,19 @@ Route::middleware('web')->group(function () { Route::get('/msp-return/success', function(Request $request) { - return view('multisafepay::success'); + return redirect(route('checkout.success', $request->query()), 308); })->name('multisafepay.success'); + Route::get('/msp-return/cancel', function(Request $request) { - return view('multisafepay::cancel', ['quoteId' => $request->get('quoteId')]); + config('rapidez.models.quote')::query() + ->withoutGlobalScopes() + ->whereQuoteIdOrCustomerToken($request->input('quoteId')) + ->update(['is_active' => 1]); + + return redirect('cart'); })->name('multisafepay.cancel'); }); + +// Return multisafepay connect requests back to Magento. +// This usually means an incorrect setup. +Route::any('multisafepay/connect/{status}', fn($status) => redirect(url()->query(config('rapidez.magento_url').'/multisafepay/connect/' . $status, request()->query()), 308)); diff --git a/src/MultiSafePayServiceProvider.php b/src/MultiSafePayServiceProvider.php index b6e6b13..235eca9 100644 --- a/src/MultiSafePayServiceProvider.php +++ b/src/MultiSafePayServiceProvider.php @@ -3,6 +3,7 @@ namespace Rapidez\MultiSafePay; use Illuminate\Support\ServiceProvider; +use TorMorten\Eventy\Facades\Eventy; class MultiSafePayServiceProvider extends ServiceProvider { @@ -20,5 +21,10 @@ public function boot() __DIR__ . '/../resources/payment-icons' => public_path('payment-icons'), ], 'payment-icons'); } + + Eventy::addFilter('checkout.queries.orderV2.data', function($attributes = []) { + $attributes[] = 'multisafepay_payment_url'; + return $attributes; + }); } -} \ No newline at end of file +}