Bu Magento 2 uzantısı üzerinde çalışıyorum ve özelliklerin bir kısmı web hizmetleri kullanarak harici bir uygulamaya siparişler hakkında bilgi aktarmaktır. Kasada bir sipariş verildikten sonra bu bilgileri aktarmam gerekiyor.
Şu anda checkout_onepage_controller_success_actionharici uygulamada sipariş oluşturma yöntemini tetikleyen olayı kullanıyorum . Bu etkinliği içeri girdim /etc/frontend/events.xml.
Şimdiye kadar bu çalışıyor ama sipariş durumu ile ilgili bir sorun buldum. Bazen emirler hala durumdayken, pendingbazı zamanlarda emirler verilir processing. Bunun nedeni, ödeme yönteminin siparişleri önce beklemede olarak başlatması ve ödemenin onaylanmasından sonra siparişlerin işleme koyulmasıdır. Sadece processingemir vermek istiyorum . Bazen checkout_onepage_controller_success_actionödeme onaylanmadan önce etkinlik gerçekleşiyor ve bu durum sorunlara neden oluyor gibi görünüyor .
bunu nasıl çözeceğimize dair bir fikri olan? kodumu çalıştırmadan önce ödeme işleminin çalıştığından nasıl emin olabilirim checkout_onepage_controller_success_action?
Kodumu takiben:
events.xml
<?xml version="1.0"?>
<!--
/**
* Copyright © 2017 companyname.com
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="checkout_onepage_controller_success_action">
<observer name="companyname_order_success" instance="Companyname\Shipping\Observer\CreateCompanynameOrderObserver" />
</event>
</config>
CreateCompanynameOrderObserver.php
/**
* Create an order in Companyname when order status match the statuses in the backend
*
* @param EventObserver $observer
* @return void
*/
public function execute(EventObserver $observer){
$order_ids = $observer->getEvent()->getOrderIds();
$order_id = $order_ids[0];
//Loading order details
$orderModel = $this->_orderFactory->create();
$order = $orderModel->load($order_id);
$shipping_method = $order->getShippingMethod();
$order_status = $order->getStatus();
if($order_status == 'processing'){
//Push to external app
}
}