Skip to content

Commit

Permalink
Rapidez v3 support (#16)
Browse files Browse the repository at this point in the history
  • Loading branch information
indykoning authored Dec 13, 2024
1 parent 87c451a commit e45d82e
Show file tree
Hide file tree
Showing 11 changed files with 25 additions and 111 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 0 additions & 3 deletions resources/js/components.js

This file was deleted.

62 changes: 0 additions & 62 deletions resources/js/components/MSPPending.vue
Original file line number Diff line number Diff line change
@@ -1,62 +0,0 @@
<script>
import { mask as useMask } from 'Vendor/rapidez/core/resources/js/stores/useMask'
import { token as useToken } from 'Vendor/rapidez/core/resources/js/stores/useUser'
export default {
props: {
token: {
type: String,
default: useToken.value,
},
mask: {
type: String,
default: useMask.value,
},
},
data() {
return {
completed: false,
order: {},
}
},
mounted() {
this.order.customer_email = window.localStorage.email;
this.checkStatus();
},
render() {
return this.$scopedSlots.default({
completed: this.completed,
order: this.order
})
},
methods: {
async checkStatus() {
this.params = Object.fromEntries(new URLSearchParams(window.location.search).entries());
let token = this.params.secureToken ?? null;
let orderId = this.params.orderId ?? null;
if(!token || !orderId) {
return;
}
window.magentoAPI('get', `multisafepay/orders/${orderId}/${token}`).then(response => {
if(['processing', 'success', 'complete'].includes(response?.status)) {
useToken.value = this.token;
useMask.value = this.mask;
this.completed = true;
this.order = Object.assign({
sales_order_items: response.items,
sales_order_payments: [response.payment],
}, response)
} else {
window.setTimeout(this.checkStatus, 2000);
}
})
}
},
}
</script>
17 changes: 5 additions & 12 deletions resources/js/eventlisteners.js
Original file line number Diff line number Diff line change
@@ -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;
});
1 change: 0 additions & 1 deletion resources/js/multisafepay.js

This file was deleted.

1 change: 0 additions & 1 deletion resources/js/package.js
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
import './components'
import './eventlisteners'
7 changes: 0 additions & 7 deletions resources/views/cancel.blade.php

This file was deleted.

3 changes: 0 additions & 3 deletions resources/views/pending.blade.php

This file was deleted.

18 changes: 0 additions & 18 deletions resources/views/success.blade.php

This file was deleted.

14 changes: 12 additions & 2 deletions routes/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -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));
8 changes: 7 additions & 1 deletion src/MultiSafePayServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Rapidez\MultiSafePay;

use Illuminate\Support\ServiceProvider;
use TorMorten\Eventy\Facades\Eventy;

class MultiSafePayServiceProvider extends ServiceProvider
{
Expand All @@ -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;
});
}
}
}

0 comments on commit e45d82e

Please sign in to comment.