Integration architecture
1Kosmos publishes a Magento Marketplace extension (1kosmos/module-blockid-verify). The Magento extension framework uses the Observer and Plugin (Interceptor) patterns:
Observer hooks:
<event name="customer_register_success">
<observer name="blockid_trigger_idv" instance="OneKosmos\BlockIDVerify\Observer\CustomerRegisterObserver">
</observer></event>
<event name="sales_order_place_before">
<observer name="blockid_stepup_check" instance="OneKosmos\BlockIDVerify\Observer\OrderStepUpObserver">
</observer></event>
<event name="customer_register_success">
<observer name="blockid_trigger_idv" instance="OneKosmos\BlockIDVerify\Observer\CustomerRegisterObserver">
</observer></event>
<event name="sales_order_place_before">
<observer name="blockid_stepup_check" instance="OneKosmos\BlockIDVerify\Observer\OrderStepUpObserver">
</observer></event>
<event name="customer_register_success">
<observer name="blockid_trigger_idv" instance="OneKosmos\BlockIDVerify\Observer\CustomerRegisterObserver">
</observer></event>
<event name="sales_order_place_before">
<observer name="blockid_stepup_check" instance="OneKosmos\BlockIDVerify\Observer\OrderStepUpObserver">
</observer></event>Plugin on checkout payment processor:
// Plugin/CheckoutPaymentProcessorPlugin.php
public function beforeSavePaymentInformationAndPlaceOrder(
\Magento\Checkout\Model\PaymentInformationManagement $subject,
$cartId, $paymentMethod, $billingAddress = null
) {
$customer = $this->customerSession->getCustomer();
$ialLevel = $customer->getCustomAttribute('blockid_ial_level');
if ($this->config->isIALRequired() && (!$ialLevel || $ialLevel->getValue() <
// Plugin/CheckoutPaymentProcessorPlugin.php
public function beforeSavePaymentInformationAndPlaceOrder(
\Magento\Checkout\Model\PaymentInformationManagement $subject,
$cartId, $paymentMethod, $billingAddress = null
) {
$customer = $this->customerSession->getCustomer();
$ialLevel = $customer->getCustomAttribute('blockid_ial_level');
if ($this->config->isIALRequired() && (!$ialLevel || $ialLevel->getValue() <
// Plugin/CheckoutPaymentProcessorPlugin.php
public function beforeSavePaymentInformationAndPlaceOrder(
\Magento\Checkout\Model\PaymentInformationManagement $subject,
$cartId, $paymentMethod, $billingAddress = null
) {
$customer = $this->customerSession->getCustomer();
$ialLevel = $customer->getCustomAttribute('blockid_ial_level');
if ($this->config->isIALRequired() && (!$ialLevel || $ialLevel->getValue() <
GraphQL query added to storefront:
REST API extension points: