我创建了一个Magento自动创建订单脚本,当我将付款方式设置为采购订单时,它工作正常,当我尝试使用信用卡时,它不会创建订单。
我使用cc信息如下,但现在可以使用
$orderPayment = Mage::getModel('sales/order_payment')
->setStoreId($storeId)
->setCustomerPaymentId(0)
->setMethod('ccsave')
->setCcNumber('6011111111111117')
->setCcOwner('ooooo')
->setCcType('Discover')
->setCcExpMonth('9')
->setCcExpYear('2014')
->setCcLast4(substr('6011111111111117',-4));
当我使用下面的采购订单时,它可以工作
$orderPayment = Mage::getModel('sales/order_payment')
->setStoreId($storeId)
->setCustomerPaymentId(0)
->setMethod('purchaseorder')
->setPo_number(' - ');
我试了很多可以请任何人帮助我,这是我的完整代码
<?php
//run the reminders
require_once '../app/Mage.php';
$app = Mage::app();
}
//$products = array('35' => array('qty' => 1));
$products;
$order = Mage::getModel('sales/order')->load(50);
$items = $order->getAllItems();
$itemcount=count($items);
foreach ($items as $itemId => $item)
{
//echo $item->getName().'<br/>';
// echo $item->getPrice();
// echo $item->getSku();
$idx=$item->getProductId();
$products[$idx]=array('qty'=>$item->getQtyToInvoice());
// $products[]= $item->getQtyToInvoice().'<br/>';
}
//Mage::getSingleton('customer/session')->logout();
print_r($products);
//}
$customer = Mage::getModel('customer/customer')->load(16);
/*$customerId is the id of the customer who is placing the order, it can be passed as an argument to the function place()*/
$transaction = Mage::getModel('core/resource_transaction');
$storeId = $customer->getStoreId();
$reservedOrderId = Mage::getSingleton('eav/config')->getEntityType('order')->fetchNewIncrementId($storeId);
$order = Mage::getModel('sales/order')
->setIncrementId($reservedOrderId)
->setStoreId($storeId)
->setQuoteId(0)
->setGlobal_currency_code('GBP')
->setBase_currency_code('GBP')
->setStore_currency_code('GBP')
->setOrder_currency_code('GBP');
// set Customer data
$order->setCustomer_email($customer->getEmail())
->setCustomerFirstname($customer->getFirstname())
->setCustomerLastname($customer->getLastname())
->setCustomerGroupId($customer->getGroupId())
->setCustomer_is_guest(0)
->setCustomer($customer);
// set Billing Address
$billing = $customer->getDefaultBillingAddress();
$billingAddress = Mage::getModel('sales/order_address')
->setStoreId($storeId)
->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING)
->setCustomerId($customer->getId())
->setCustomerAddressId($customer->getDefaultBilling())
->setCustomer_address_id($billing->getEntityId())
->setPrefix($billing->getPrefix())
->setFirstname($billing->getFirstname())
->setMiddlename($billing->getMiddlename())
->setLastname($billing->getLastname())
->setSuffix($billing->getSuffix())
->setCompany($billing->getCompany())
->setStreet($billing->getStreet())
->setCity($billing->getCity())
->setCountry_id($billing->getCountryId())
->setRegion($billing->getRegion())
->setRegion_id($billing->getRegionId())
->setPostcode($billing->getPostcode())
->setTelephone($billing->getTelephone())
->setFax($billing->getFax());
$order->setBillingAddress($billingAddress);
$shipping = $customer->getDefaultShippingAddress();
$shippingAddress = Mage::getModel('sales/order_address')
->setStoreId($storeId)
->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING)
->setCustomerId($customer->getId())
->setCustomerAddressId($customer->getDefaultShipping())
->setCustomer_address_id($shipping->getEntityId())
->setPrefix($shipping->getPrefix())
->setFirstname($shipping->getFirstname())
->setMiddlename($shipping->getMiddlename())
->setLastname($shipping->getLastname())
->setSuffix($shipping->getSuffix())
->setCompany($shipping->getCompany())
->setStreet($shipping->getStreet())
->setCity($shipping->getCity())
->setCountry_id($shipping->getCountryId())
->setRegion($shipping->getRegion())
->setRegion_id($shipping->getRegionId())
->setPostcode($shipping->getPostcode())
->setTelephone($shipping->getTelephone())
->setFax($shipping->getFax());
$order->setShippingAddress($shippingAddress)
->setShipping_method('flatrate_flatrate')
->setShippingDescription('flatrate');
$orderPayment = Mage::getModel('sales/order_payment')
->setStoreId($storeId)
->setCustomerPaymentId(0)
->setMethod('ccsave')
->setCcNumber('6011111111111117')
->setCcOwner('ooooo')
->setCcType('Discover')
->setCcExpMonth('9')
->setCcExpYear('2014')
->setCcLast4(substr('6011111111111117',-4));
/*
->setPo_number(' - ');
->setCustomerPaymentId(3)
->setMethod('ccsave')
->setCcNumber('6011111111111117')
->setCcOwner('ooooo')
->setCcType('Discover')
->setCcExpMonth('9');
->setCcExpYear('2014');
->setCcLast4(substr('6011111111111117',-4));
*/
$order->setPayment($orderPayment);
//,'36'=>array('qty' => 1)
// let say, we have 2 products
$subTotal = 0;
// $products = array('35' => array('qty' => 1));
foreach ($products as $productId=>$product) {
echo $product['qty'];
$_product = Mage::getModel('catalog/product')->load($productId);
$rowTotal = $_product->getPrice() * $product['qty'];
$orderItem = Mage::getModel('sales/order_item')
->setStoreId($storeId)
->setQuoteItemId(0)
->setQuoteParentItemId(NULL)
->setProductId($productId)
->setProductType($_product->getTypeId())
->setQtyBackordered(NULL)
->setTotalQtyOrdered($product['rqty'])
->setQtyOrdered($product['qty'])
->setName($_product->getName())
->setSku($_product->getSku())
->setPrice($_product->getPrice())
->setBasePrice($_product->getPrice())
->setOriginalPrice($_product->getPrice())
->setRowTotal($rowTotal)
->setBaseRowTotal($rowTotal);
$subTotal += $rowTotal;
$order->addItem($orderItem);
}
echo $subTotal;
$order->setSubtotal($subTotal)
->setBaseSubtotal($subTotal)
->setGrandTotal($subTotal)
->setBaseGrandTotal($subTotal);
$transaction->addObject($order);
$transaction->addCommitCallback(array($order, 'place'));
$transaction->addCommitCallback(array($order, 'save'));
$transaction->save();
$order->sendNewOrderEmail();
?>
答案 0 :(得分:0)
当我使用信用卡(已保存)以编程方式创建订单时,这是我的订单付款代码:
$orderPayment = Mage::getModel('sales/order_payment')
->setStoreId($store_id)
->setCustomerPaymentId(0)
->setMethod($method)
->setCcNumber($cc_number)
->setCcNumberEnc(Mage::getSingleton('payment/info')->encrypt($cc_number)
->setCcOwner($cc_owner)
->setCcType($cc_type)
->setCcExpMonth($cc_exp_month)
->setCcExpYear($cc_exp_year)
->setCcLast4(substr($cc_number,-4));
答案 1 :(得分:0)
您正在以错误的方式使用 - &gt; setCcType(&#39; Discover&#39;)。您必须在此处指定cc类型的代码。 例如,如果是Visa,您应该使用
- &GT; setCcType(&#39; VI&#39)