Fügen Sie der Bestellung eine Transaktions-ID über die API hinzu und schließen Sie die Bestellung ab
-
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.
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));