Magento:通过 SOAP 调用 getSingleton('customer/session') 时不会返回信息

问题描述 投票:0回答:1

我目前正在尝试在提交订单并使用观察者捕获 checkout_submit_all_after 事件后取回客户数据。如果我通过前端下订单,观察者内部的

Mage::getSingleton('customer/session')
Mage::getSingleton('checkout/session')
ran 会给我提供大量信息,但是当我通过 SOAP 下订单时,这些方法不会返回任何内容。我也尝试了Mage::helper('customer')->getCustomer()
,但也没有返回任何内容。 

还有其他方法可以获取上次提交订单的数据吗?具体来说,我需要会话中的客户和最后一个订单 id ala

Mage::getSingleton('checkout/session')->getLastRealOrderId()

session magento soap singleton magento-soap-api
1个回答
0
投票
看看这个废话:quote->customer_email 字段最初是用电子邮件填充的,然后在使用 SOAP 方法“shoppingCartCustomerAddresses”设置地址后,Checkout/Model/Api/Resource/Customer.php 中的 _prepareGuestQuote 用“$ 覆盖此字段” quote->getBillingAddress()->getEmail())。为什么?请查看地址对象的 wsdl 定义:

<complexType name="shoppingCartCustomerAddressEntity"> <all> <element name="mode" type="xsd:string" minOccurs="0"/> <element name="address_id" type="xsd:string" minOccurs="0"/> <element name="firstname" type="xsd:string" minOccurs="0"/> <element name="lastname" type="xsd:string" minOccurs="0"/> <element name="company" type="xsd:string" minOccurs="0"/> <element name="street" type="xsd:string" minOccurs="0"/> <element name="city" type="xsd:string" minOccurs="0"/> <element name="region" type="xsd:string" minOccurs="0"/> <element name="region_id" type="xsd:string" minOccurs="0"/> <element name="postcode" type="xsd:string" minOccurs="0"/> <element name="country_id" type="xsd:string" minOccurs="0"/> <element name="telephone" type="xsd:string" minOccurs="0"/> <element name="fax" type="xsd:string" minOccurs="0"/> <element name="is_default_billing" type="xsd:int" minOccurs="0"/> <element name="is_default_shipping" type="xsd:int" minOccurs="0"/> </all> </complexType>

您看到其中有一个“电子邮件”字段吗?我当然不会! 所以现在我必须重写这个东西才能使其发挥作用。说真的 Magento,wtf?

© www.soinside.com 2019 - 2024. All rights reserved.