我的任务是为Magento CE编写一种自定义的支付方法,并在过去的几周里对其进行了修改。虽然我是一个经验丰富的开发人员,但这是我第一次认真地接触php和Magento本身。
请注意,这是一个网络支付网关,所以我使用
public function getOrderPlaceRedirectUrl() { ... }
在我的支付方式模型中,成功地将客户重定向到外部url。
让我困了一整天的问题是如何检索结账购物车的内容、运输详细信息和辅助费用(税收、折扣等)。此信息需要发送到支付方式API。
我在支付方式模型中使用的代码是这样的:
$order_id = Mage::getSingleton("checkout/session")->getLastRealOrderId();
$order = Mage::getModel('sales/order')->loadByIncrementId($order_id);
$oBillingAddress = $order->getBillingAddress(); //this works ok
$total = number_format($order->getBaseGrandTotal(), 2, '', ''); //this too
/* The following code won't work */
$oShippingAddress = $order->getShippingAddress(); // is unset!?
$oShippingAddress->getSameAsBilling(); //HOW can I check this?
$amount = array();
$quantity = array();
$sku = array();
$description = array();
$cart_items = $order()->getAllVisibleItems();
foreach ($cart_items as $item) {
$amount[] = number_format($item->getPrice(), 2, '', ''); //ok
$quantity[] = $item->getQtyToInvoice(); // is empty...
$sku[] = $item->getSku(); // nothing either??
$description[] = $item->getName(); //this is working
}
马根托的巫师们,请告诉我我在这里做错了什么?
Magento开发一直非常令人沮丧,主要是因为它缺乏直接的文档。我确信它是非常可定制的,但滥用php的神奇功能和繁琐的结构一直是一个挑战——至少是这样。
我想你需要得到报价。像这样的东西应该起作用:
$quote = Mage::getSingleton('checkout/session')->getQuote();
$items = $quote->getAllVisibleItems();
foreach ($items as $item) {
$amount[] = number_format($item->getPrice(), 2, '', ''); //ok
$quantity[] = $item->getQtyToInvoice(); // is empty...
$sku[] = $item->getSku(); // nothing either??
$description[] = $item->getName(); //this is working
}
如果你还需要订单,请告诉我。。