Fügen Sie der Bestellung eine Transaktions-ID über die API hinzu und schließen Sie die Bestellung ab

magento.stackexchange https://magento.stackexchange.com//questions/36571

  •  12-12-2019
  •  | 
  •  

Frage

Nachdem ich die Bestellung in Magento aufgegeben und die Bestell-ID erhalten habe, wie kann ich der Bestellung eine Transaktions-ID hinzufügen?Ist das mit der API möglich?Ich erhalte die Transaktions-ID vom Bankserver und möchte sie zur Bestellung hinzufügen und den Bestellstatus abschließen.

War es hilfreich?

Lösung

Falls gewollt to add Transaction id to order need by load Bestellen Allgemeiner Ablauf:Bei Bedarf auf Magento-Basis

Schritt 1: Laden nach Bestell-ID

$_order=Mage::getModel('sales/order')->load($orderId);

Schritt 2: Transaktion zur Bestellung hinzufügen und

  $payment = $_order->getPayment();
    $payment = $order->getPayment();
$payment->setTransactionId($yoursetTransactionId)
            ->setCurrencyCode($order->getBaseCurrencyCode())
            ->setPreparedMessage($youcomment)
            ->setParentTransactionId($yoursetTransactionId)
            ->setShouldCloseParentTransaction(true)
            ->setIsTransactionClosed(0)
            ->registerCaptureNotification($BaseGrandtotal);
        $order->save();

Schritt 3: Dies nur Rechnung erstellen und aber für order complete you need create shipment of order.

http://www.magentocommerce.com/api/soap/sales/salesOrderShipment/sales_order_shipment.create.html

Dann verwende ich API

Step1: erstellen api.xml Dadurch wird eine benutzerdefinierte API erstellt

Es ist Code

<?xml version="1.0"?>
<config>
    <api>
        <resources>
            <addtransactionid_api translate="title" module="addtransactionid">
                <title>Myapi</title>
                <acl>addtransactionid/api</acl>
                <model>addtransactionid/api</model>
                <methods>                    
                        <addtransaction translate="title" module="addtransactionid">
                            <title>ADD Transaction</title>
                            <acl>addtransactionid/addtransaction</acl>
                        </addtransaction>
                </methods>
            </addtransactionid_api>
        </resources>
        <acl>
            <resources>
                <addtransactionid translate="title" module="addtransactionid">
                    <title>Addtransactionid</title>
                    <sort_order>2000</sort_order>                    
                    <addtransaction translate="title" module="addtransactionid">
                        <title>ADD Transaction</title>
                    </addtransaction>
                </addtransactionid>
            </resources>
        </acl>
    </api>
</config>

Step2: Definieren Sie eine model class which set transaction id to order

<?php
    class Amit_Addtransactionid_Model_Api extends Mage_Api_Model_Resource_Abstract
    {        
            public function addTransaction($orderId=null,$TransactionId=null){

                $_order=Mage::getModel('sales/order')->load($orderId);
                if($_order->getId()){
                    $payment = $_order->getPayment();
                $payment->setTransactionId($TransactionId)
                    ->setCurrencyCode()
                    ->setPreparedMessage($message)
                    ->setParentTransactionId($parentTransactionId)
                    ->setShouldCloseParentTransaction(true)
                    ->setIsTransactionClosed(0)
                    ->registerCaptureNotification();
                $_order->save();
                }
            } 
    }

Schritt 3:

This step only create order invoice and  set payment id  to order.
But for  complete order then  you need also create order shipment using below api

http://www.magentocommerce.com/api/soap/sales/salesOrderShipment/sales_order_shipment.create.html

[Bearbeiten:FullModule]

Schritt 1: erstellen config.xml for module at app/code/local/Amit/Addtransactionid/etc and it code is

<?xml version="1.0"?>
<config>
  <modules>
    <Amit_Addtransactionid>
      <version>1.0.0</version>
    </Amit_Addtransactionid>
  </modules>
  <global>
    <helpers>
      <addtransactionid>
        <class>Amit_Addtransactionid_Helper</class>
      </addtransactionid>
    </helpers>
    <models>
      <addtransactionid>
        <class>Amit_Addtransactionid_Model</class>
        <resourceModel>addtransactionid_mysql4</resourceModel>
      </addtransactionid>
    </models>
  </global>
</config> 

Schritt 2: erstellen api configuration by create api.xml at app/code/local/Amit/Addtransactionid/etc Und it code is

<?xml version="1.0"?>
<config>
    <api>
        <resources>
            <addtransactionid_api translate="title" module="addtransactionid">
                <title>Myapi</title>
                <acl>addtransactionid/api</acl>
                <model>addtransactionid/api</model>
                <methods>                    
                        <addtransaction translate="title" module="addtransactionid">
                            <title>ADD Transaction</title>
                            <acl>addtransactionid/addtransaction</acl>
                        </addtransaction>
                </methods>
            </addtransactionid_api>
        </resources>
        <acl>
            <resources>
                <addtransactionid translate="title" module="addtransactionid">
                    <title>Addtransactionid</title>
                    <sort_order>2000</sort_order>                    
                    <addtransaction translate="title" module="addtransactionid">
                        <title>ADD Transaction</title>
                    </addtransaction>
                </addtransactionid>
            </resources>
        </acl>
    </api>
</config>

Schritt 3: create model Api.php file app/code/local/Amit/Addtransactionid/Model add trancation id to order:

Code ist

<?php
    class Amit_Addtransactionid_Model_Api extends Mage_Api_Model_Resource_Abstract
    {        
            public function addTransaction($orderId=null,$TransactionId=null){

                $_order=Mage::getModel('sales/order')->load($orderId);
                if($_order->getId()){
                    $payment = $_order->getPayment();
                $payment->setTransactionId($TransactionId)
                    ->setCurrencyCode()
                    ->setPreparedMessage($message)
                    ->setParentTransactionId($parentTransactionId)
                    ->setShouldCloseParentTransaction(true)
                    ->setIsTransactionClosed(0)
                    ->registerCaptureNotification();

                $_order->save();
                }
            } 
    }

Schritt 4: erstellen module file at app/etc/modules/Amit_Addtransactionid.xml

Code:

<?xml version="1.0"?>
<config>
  <modules>
    <Amit_Addtransactionid>
      <active>true</active>
      <codePool>local</codePool>            
            <depends>
                <Mage_Api />
            </depends>
      <version>1.0.0</version>
    </Amit_Addtransactionid>
  </modules>
</config>

SEIFE

$client = new SoapClient('http://yourhost/api/soap/?wsdl');
$session = $client->login('******', '******');
$date = $client->call($session, 'addtransactionid_api.addTransaction',orderid,traid);

XML-RPC

$client = new Zend_XmlRpc_Client('http://yourhost/api/xmlrpc/');
$session = $client->call('login', array('******', '******'));
$date=$client->call('call', array($session, 'addtransactionid_api.addTransaction',orderid,traid));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top